#pragma once

#include <memory>

using namespace std;

class ICoreListener;

class IMarketApi
{
public:
    virtual bool Connect() = 0;
    
    virtual bool Disconnect() = 0;

    virtual void Subscribe(const shared_ptr<vector<string>> instruments) = 0;

    virtual void Unsubscribe(const shared_ptr<vector<string>> instruments) = 0;

    virtual bool RegisterListener(ICoreListener* coreListener) = 0;
};

using MarketUPtr = unique_ptr<IMarketApi>;