#ifndef symbol_info__hpp
#define symbol_info__hpp

#include <boost/shared_ptr.hpp>
#include <string>

typedef double Price;

struct Symbol_Info
{
  Symbol_Info(
      std::string const & name,
      std::string const & cusip,
      Price previous_closing_price);

  std::string name;               // Symbolic name of the security
  std::string cusip;              // Globally unique identifier for the security
  Price previous_closing_price;   // Previous day's closing price
};

typedef boost::shared_ptr<Symbol_Info> Symbol_Info_shptr;

// Lookup info for a given stock symbol
Symbol_Info_shptr lookup_symbol_info(std::string name);

class Price_Change_Callback
{
public:
  virtual ~Price_Change_Callback();

  virtual inside_changed(Price bid, Price ask) = 0;
};

void watch_for_inside_change(
    std::string const & name,
    Price_Change_Callback callback);

#endif // symbol_info__hpp
