#pragma once class MerchantRecipeList; class MerchantRecipe; class Player; class Merchant { public: virtual void setTradingPlayer(shared_ptr player) = 0; virtual shared_ptr getTradingPlayer() = 0; virtual MerchantRecipeList *getOffers(shared_ptr forPlayer) = 0; virtual void overrideOffers(MerchantRecipeList *recipeList) = 0; virtual void notifyTrade(MerchantRecipe *activeRecipe) = 0; virtual void notifyTradeUpdated(shared_ptr item) = 0; virtual int getDisplayName() = 0; };