#pragma once class MerchantRecipeList; class MerchantRecipe; class Player; class Merchant { public: virtual ~Merchant() {} 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 std::wstring getDisplayName() = 0; };