#ifndef UTILS_EVENTS_HPP_
#define UTILS_EVENTS_HPP_
#include <string>
struct GatewayEvents {
    static inline constexpr char* APPLICATION_COMMAND_PERMISSIONS_UPDATE = "APPLICATION_COMMAND_PERMISSIONS_UPDATE";
    static inline constexpr char* AUTO_MODERATION_ACTION_EXECUTION = "AUTO_MODERATION_ACTION_EXECUTION";
    static inline constexpr char* AUTO_MODERATION_RULE_CREATE = "AUTO_MODERATION_RULE_CREATE";
    static inline constexpr char* AUTO_MODERATION_RULE_DELETE = "AUTO_MODERATION_RULE_DELETE";
    static inline constexpr char* AUTO_MODERATION_RULE_UPDATE = "AUTO_MODERATION_RULE_UPDATE";
    static inline constexpr char* CHANNEL_CREATE = "CHANNEL_CREATE";
    static inline constexpr char* CHANNEL_DELETE = "CHANNEL_DELETE";
    static inline constexpr char* CHANNEL_PINS_UPDATE = "CHANNEL_PINS_UPDATE";
    static inline constexpr char* CHANNEL_UPDATE = "CHANNEL_UPDATE";
    static inline constexpr char* ENTITLEMENT_CREATE = "ENTITLEMENT_CREATE";
    static inline constexpr char* ENTITLEMENT_DELETE = "ENTITLEMENT_DELETE";
    static inline constexpr char* ENTITLEMENT_UPDATE = "ENTITLEMENT_UPDATE";
    static inline constexpr char* GUILD_AUDIT_LOG_ENTRY_CREATE = "GUILD_AUDIT_LOG_ENTRY_CREATE";
    static inline constexpr char* GUILD_BAN_ADD = "GUILD_BAN_ADD";
    static inline constexpr char* GUILD_BAN_REMOVE = "GUILD_BAN_REMOVE";
    static inline constexpr char* GUILD_CREATE = "GUILD_CREATE";
    static inline constexpr char* GUILD_DELETE = "GUILD_DELETE";
    static inline constexpr char* GUILD_EMOJIS_UPDATE = "GUILD_EMOJIS_UPDATE";
    static inline constexpr char* GUILD_INTEGRATIONS_UPDATE = "GUILD_INTEGRATIONS_UPDATE";
    static inline constexpr char* GUILD_MEMBER_ADD = "GUILD_MEMBER_ADD";
    static inline constexpr char* GUILD_MEMBER_REMOVE = "GUILD_MEMBER_REMOVE";
    static inline constexpr char* GUILD_MEMBERS_CHUNK = "GUILD_MEMBERS_CHUNK";
    static inline constexpr char* GUILD_MEMBER_UPDATE = "GUILD_MEMBER_UPDATE";
    static inline constexpr char* GUILD_ROLE_CREATE = "GUILD_ROLE_CREATE";
    static inline constexpr char* GUILD_ROLE_DELETE = "GUILD_ROLE_DELETE";
    static inline constexpr char* GUILD_ROLE_UPDATE = "GUILD_ROLE_UPDATE";
    static inline constexpr char* GUILD_SCHEDULED_EVENT_CREATE = "GUILD_SCHEDULED_EVENT_CREATE";
    static inline constexpr char* GUILD_SCHEDULED_EVENT_DELETE = "GUILD_SCHEDULED_EVENT_DELETE";
    static inline constexpr char* GUILD_SCHEDULED_EVENT_UPDATE = "GUILD_SCHEDULED_EVENT_UPDATE";
    static inline constexpr char* GUILD_SCHEDULED_EVENT_USER_REMOVE = "GUILD_SCHEDULED_EVENT_USER_REMOVE";
    static inline constexpr char* GUILD_SOUNDBOARD_SOUND_CREATE = "GUILD_SOUNDBOARD_SOUND_CREATE";
    static inline constexpr char* GUILD_SOUNDBOARD_SOUND_DELETE = "GUILD_SOUNDBOARD_SOUND_DELETE";
    static inline constexpr char* GUILD_SOUNDBOARD_SOUNDS_UPDATE = "GUILD_SOUNDBOARD_SOUNDS_UPDATE";
    static inline constexpr char* GUILD_SOUNDBOARD_SOUND_UPDATE = "GUILD_SOUNDBOARD_SOUND_UPDATE";
    static inline constexpr char* SOUNDBOARD_SOUNDS = "SOUNDBOARD_SOUNDS";
    static inline constexpr char* GUILD_STICKERS_UPDATE = "GUILD_STICKERS_UPDATE";
    static inline constexpr char* GUILD_UPDATE = "GUILD_UPDATE";
    static inline constexpr char* INTEGRATION_CREATE = "INTEGRATION_CREATE";
    static inline constexpr char* INTEGRATION_DELETE = "INTEGRATION_DELETE";
    static inline constexpr char* INTEGRATION_UPDATE = "INTEGRATION_UPDATE";
    static inline constexpr char* INVITE_CREATE = "INVITE_CREATE";
    static inline constexpr char* INVITE_DELETE = "INVITE_DELETE";
    static inline constexpr char* MESSAGE_CREATE = "MESSAGE_CREATE";
    static inline constexpr char* MESSAGE_DELETE = "MESSAGE_DELETE";
    static inline constexpr char* MESSAGE_DELETE_BULK = "MESSAGE_DELETE_BULK";
    static inline constexpr char* MESSAGE_POLL_VOTE_ADD = "MESSAGE_POLL_VOTE_ADD";
    static inline constexpr char* MESSAGE_POLL_VOTE_REMOVE = "MESSAGE_POLL_VOTE_REMOVE";
    static inline constexpr char* MESSAGE_REACTION_ADD = "MESSAGE_REACTION_ADD";
    static inline constexpr char* MESSAGE_REACTION_REMOVE = "MESSAGE_REACTION_REMOVE";
    static inline constexpr char* MESSAGE_REACTION_REMOVE_ALL = "MESSAGE_REACTION_REMOVE_ALL";
    static inline constexpr char* MESSAGE_REACTION_REMOVE_EMOJI = "MESSAGE_REACTION_REMOVE_EMOJI";
    static inline constexpr char* MESSAGE_UPDATE = "MESSAGE_UPDATE";
    static inline constexpr char* PRESENCE_UPDATE = "PRESENCE_UPDATE";
    static inline constexpr char* READY = "READY";
    static inline constexpr char* RESUMED = "RESUMED";
    static inline constexpr char* STAGE_INSTANCE_CREATE = "STAGE_INSTANCE_CREATE";
    static inline constexpr char* STAGE_INSTANCE_DELETE = "STAGE_INSTANCE_DELETE";
    static inline constexpr char* STAGE_INSTANCE_UPDATE = "STAGE_INSTANCE_UPDATE";
    static inline constexpr char* SUBSCRIPTION_CREATE = "SUBSCRIPTION_CREATE";
    static inline constexpr char* SUBSCRIPTION_DELETE = "SUBSCRIPTION_DELETE";
    static inline constexpr char* SUBSCRIPTION_UPDATE = "SUBSCRIPTION_UPDATE";
    static inline constexpr char* THREAD_CREATE = "THREAD_CREATE";
    static inline constexpr char* THREAD_DELETE = "THREAD_DELETE";
    static inline constexpr char* THREAD_LIST_SYNC = "THREAD_LIST_SYNC";
    static inline constexpr char* THREAD_MEMBERS_UPDATE = "THREAD_MEMBERS_UPDATE";
    static inline constexpr char* THREAD_MEMBER_UPDATE = "THREAD_MEMBER_UPDATE";
    static inline constexpr char* THREAD_UPDATE = "THREAD_UPDATE";
    static inline constexpr char* TYPING_START = "TYPING_START";
    static inline constexpr char* USER_UPDATE = "USER_UPDATE";
    static inline constexpr char* VOICE_CHANNEL_EFFECT_SEND = "VOICE_CHANNEL_EFFECT_SEND";
    static inline constexpr char* VOICE_SERVER_UPDATE = "VOICE_SERVER_UPDATE";
    static inline constexpr char* VOICE_STATE_UPDATE = "VOICE_STATE_UPDATE";
    static inline constexpr char* WEBHOOKS_UPDATE = "WEBHOOKS_UPDATE";
};
struct HttpMethods {
    static inline constexpr char* POST = "POST";
    static inline constexpr char* GET = "GET";
    static inline constexpr char* PATCH = "PATCH";
    static inline constexpr char* DELETE = "DELETE";
    static inline constexpr char* PUT = "PUT";
    static inline constexpr char* OPTIONS = "OPTIONS";
};
struct ApiVersion {
    static const inline std::string api = "/api/";
    static const inline std::string v10 = "v10";
    static const inline std::string v9 = "v9";
    static const inline std::string v8 = "v8";
    static const inline std::string v7 = "v7";
    static const inline std::string v6 = "v6";
    static const inline std::string current = api + v6;
    static const inline std::string latest = api + v10;
};
struct DiscordEndpoints {
    static const inline std::string main_scheme = "https://";
    static const inline std::string discord = main_scheme + "discord.com";
    static const inline std::string images = main_scheme + "cdn.discord.com";
    static const inline std::string media = main_scheme + "media.discord.com";
    struct details {
        static const inline std::string current = DiscordEndpoints::discord + ApiVersion::current;
        static const inline std::string latest = DiscordEndpoints::discord + ApiVersion::latest;
    };
};
struct StatusType {
    static inline const char* Offline = "offline";
    static inline const char* Online = "online";
    static inline const char* Idle = "idle";
    static inline const char* DND = "dnd";
    static inline const char* Invisible = "invisible";
};
enum ActivityType : unsigned char {
    Playing,
    Streaming,
    Listening,
    Watching,
    Custom,
    Competing
};
enum GatewayIntents {
    AutoModerationConfiguration = 1048576,
    AutoModerationExecution = 2097152,
    DirectMessagePolls = 33554432,
    DirectMessageReactions = 8192,
    DirectMessages = 4096,
    DirectMessageTyping = 16384,
    GuildBans = 4,
    GuildEmojisAndStickers = 8,
    GuildExpressions = 8,
    GuildIntegrations = 16,
    GuildInvites = 64,
    GuildMembers = 2,
    GuildMessagePolls = 16777216,
    GuildMessageReactions = 1024,
    GuildMessages = 512,
    GuildMessageTyping = 2048,
    GuildModeration = 4,
    GuildPresences = 256,
    Guilds = 1,
    GuildScheduledEvents = 65536,
    GuildVoiceStates = 128,
    GuildWebhooks = 32,
    MessageContent = 32768,
    AllIntents = 131071
};
enum DiscordTime : long {
    Epoch = 1420070400000,
};
enum GatewayOpcodes : unsigned char {
    Dispatch,
    Heartbeat,
    Identify,
    PresenceUpdate,
    VoiceStateUpdate,
    Resume = 6,
    Reconnect,
    RequestGuildMembers,
    InvalidSession,
    Hello,
    HeartbeatACK,
    RequestSoundboardSounds = 31,
};
#endif