#pragma once

#include "trade_data.hh"
#include "message.hh"

/**
 * @brief Interface for trading strategy
 */
class AbstractStrategy {
public:
    virtual DataRequest requestedData() = 0;
    virtual bool tradeData(const TradeData& data) = 0;
    virtual OrderVector makeDecision() = 0;
    virtual void decisionStatus(const OrderVector& status) = 0;    
    virtual void onClientDoubleClicked() = 0;

 public:
    void registration(const Registration& registration)
    {
        registration_ = registration;
    }

    const Registration& registration() const
    {
        return registration_;
    }

private:
    Registration registration_;
};
