namespace Myriad.Gateway;

public interface IGatewayEvent
{
    public static readonly Dictionary<string, Type> EventTypes = new()
    {
        { "READY", typeof(ReadyEvent) },
        { "RESUMED", typeof(ResumedEvent) },
        { "GUILD_CREATE", typeof(GuildCreateEvent) },
        { "GUILD_UPDATE", typeof(GuildUpdateEvent) },
        { "GUILD_DELETE", typeof(GuildDeleteEvent) },
        { "GUILD_MEMBER_ADD", typeof(GuildMemberAddEvent) },
        { "GUILD_MEMBER_REMOVE", typeof(GuildMemberRemoveEvent) },
        { "GUILD_MEMBER_UPDATE", typeof(GuildMemberUpdateEvent) },
        { "GUILD_ROLE_CREATE", typeof(GuildRoleCreateEvent) },
        { "GUILD_ROLE_UPDATE", typeof(GuildRoleUpdateEvent) },
        { "GUILD_ROLE_DELETE", typeof(GuildRoleDeleteEvent) },
        { "CHANNEL_CREATE", typeof(ChannelCreateEvent) },
        { "CHANNEL_UPDATE", typeof(ChannelUpdateEvent) },
        { "CHANNEL_DELETE", typeof(ChannelDeleteEvent) },
        { "THREAD_CREATE", typeof(ThreadCreateEvent) },
        { "THREAD_UPDATE", typeof(ThreadUpdateEvent) },
        { "THREAD_DELETE", typeof(ThreadDeleteEvent) },
        { "THREAD_LIST_SYNC", typeof(ThreadListSyncEvent) },
        { "MESSAGE_CREATE", typeof(MessageCreateEvent) },
        { "MESSAGE_UPDATE", typeof(MessageUpdateEvent) },
        { "MESSAGE_DELETE", typeof(MessageDeleteEvent) },
        { "MESSAGE_DELETE_BULK", typeof(MessageDeleteBulkEvent) },
        { "MESSAGE_REACTION_ADD", typeof(MessageReactionAddEvent) },
        { "MESSAGE_REACTION_REMOVE", typeof(MessageReactionRemoveEvent) },
        { "MESSAGE_REACTION_REMOVE_ALL", typeof(MessageReactionRemoveAllEvent) },
        { "MESSAGE_REACTION_REMOVE_EMOJI", typeof(MessageReactionRemoveEmojiEvent) },
        { "INTERACTION_CREATE", typeof(InteractionCreateEvent) }
    };
}