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