#pragma once #include #include #include #include namespace emotespp { struct Emote { std::string id; std::string code; std::optional original_code; }; template class RetrieveEmoteWebsocket { public: void on_emote_create( std::function, T)> func) { this->emote_create = func; } void on_emote_delete( std::function, T)> func) { this->emote_delete = func; } void on_emote_update( std::function, T)> func) { this->emote_update = func; } protected: std::optional< std::function, T)>> emote_create; std::optional< std::function, T)>> emote_delete; std::optional< std::function, T)>> emote_update; }; template class RetrieveEmoteAPI { public: virtual std::vector get_channel_emotes( std::string &channel_id) const = 0; virtual std::vector get_global_emotes() const = 0; }; }