-- | Re-export ALL the internal type modules. Hiding is in Discord.Types
module Discord.Internal.Types
  ( module Discord.Internal.Types.Prelude,
    module Discord.Internal.Types.Channel,
    module Discord.Internal.Types.Color,
    module Discord.Internal.Types.Events,
    module Discord.Internal.Types.Gateway,
    module Discord.Internal.Types.Guild,
    module Discord.Internal.Types.User,
    module Discord.Internal.Types.Embed,
    module Discord.Internal.Types.Components,
    module Discord.Internal.Types.Emoji,
    module Data.Aeson,
    module Data.Time.Clock,
    userFacingEvent,
  )
where

import Data.Aeson (Object, ToJSON (toJSON))
import Data.Time.Clock (UTCTime (..))
import Discord.Internal.Types.Channel
import Discord.Internal.Types.Color
import Discord.Internal.Types.Components
import Discord.Internal.Types.Embed
import Discord.Internal.Types.Emoji
import Discord.Internal.Types.Events
import Discord.Internal.Types.Gateway
import Discord.Internal.Types.Guild
import Discord.Internal.Types.Prelude
import Discord.Internal.Types.User

userFacingEvent :: EventInternalParse -> Event
userFacingEvent :: EventInternalParse -> Event
userFacingEvent EventInternalParse
event = case EventInternalParse
event of
  InternalReady Int
a User
b [Channel]
c [GuildUnavailable]
d Text
e Maybe Shard
f PartialApplication
g -> Int
-> User
-> [Channel]
-> [GuildUnavailable]
-> Text
-> Maybe Shard
-> PartialApplication
-> Event
Ready Int
a User
b [Channel]
c [GuildUnavailable]
d Text
e Maybe Shard
f PartialApplication
g
  InternalResumed [Text]
a -> [Text] -> Event
Resumed [Text]
a
  InternalChannelCreate Channel
a -> Channel -> Event
ChannelCreate Channel
a
  InternalChannelUpdate Channel
a -> Channel -> Event
ChannelUpdate Channel
a
  InternalChannelDelete Channel
a -> Channel -> Event
ChannelDelete Channel
a
  InternalThreadCreate Channel
a -> Channel -> Event
ThreadCreate Channel
a
  InternalThreadUpdate Channel
a -> Channel -> Event
ThreadUpdate Channel
a
  InternalThreadDelete Channel
a -> Channel -> Event
ThreadDelete Channel
a
  InternalThreadListSync ThreadListSyncFields
a -> ThreadListSyncFields -> Event
ThreadListSync ThreadListSyncFields
a
  InternalThreadMembersUpdate ThreadMembersUpdateFields
a -> ThreadMembersUpdateFields -> Event
ThreadMembersUpdate ThreadMembersUpdateFields
a
  InternalChannelPinsUpdate ChannelId
a Maybe UTCTime
b -> ChannelId -> Maybe UTCTime -> Event
ChannelPinsUpdate ChannelId
a Maybe UTCTime
b
  InternalGuildCreate Guild
a -> Guild -> Event
GuildCreate Guild
a
  InternalGuildUpdate Guild
a -> Guild -> Event
GuildUpdate Guild
a
  InternalGuildDelete GuildUnavailable
a -> GuildUnavailable -> Event
GuildDelete GuildUnavailable
a
  InternalGuildBanAdd ChannelId
a User
b -> ChannelId -> User -> Event
GuildBanAdd ChannelId
a User
b
  InternalGuildBanRemove ChannelId
a User
b -> ChannelId -> User -> Event
GuildBanRemove ChannelId
a User
b
  InternalGuildEmojiUpdate ChannelId
a [Emoji]
b -> ChannelId -> [Emoji] -> Event
GuildEmojiUpdate ChannelId
a [Emoji]
b
  InternalGuildIntegrationsUpdate ChannelId
a -> ChannelId -> Event
GuildIntegrationsUpdate ChannelId
a
  InternalGuildMemberAdd ChannelId
a GuildMember
b -> ChannelId -> GuildMember -> Event
GuildMemberAdd ChannelId
a GuildMember
b
  InternalGuildMemberRemove ChannelId
a User
b -> ChannelId -> User -> Event
GuildMemberRemove ChannelId
a User
b
  InternalGuildMemberUpdate ChannelId
a [ChannelId]
b User
c Maybe Text
d -> ChannelId -> [ChannelId] -> User -> Maybe Text -> Event
GuildMemberUpdate ChannelId
a [ChannelId]
b User
c Maybe Text
d
  InternalGuildMemberChunk ChannelId
a [GuildMember]
b -> ChannelId -> [GuildMember] -> Event
GuildMemberChunk ChannelId
a [GuildMember]
b
  InternalGuildRoleCreate ChannelId
a Role
b -> ChannelId -> Role -> Event
GuildRoleCreate ChannelId
a Role
b
  InternalGuildRoleUpdate ChannelId
a Role
b -> ChannelId -> Role -> Event
GuildRoleUpdate ChannelId
a Role
b
  InternalGuildRoleDelete ChannelId
a ChannelId
b -> ChannelId -> ChannelId -> Event
GuildRoleDelete ChannelId
a ChannelId
b
  InternalMessageCreate Message
a -> Message -> Event
MessageCreate Message
a
  InternalMessageUpdate ChannelId
a ChannelId
b -> ChannelId -> ChannelId -> Event
MessageUpdate ChannelId
a ChannelId
b
  InternalMessageDelete ChannelId
a ChannelId
b -> ChannelId -> ChannelId -> Event
MessageDelete ChannelId
a ChannelId
b
  InternalMessageDeleteBulk ChannelId
a [ChannelId]
b -> ChannelId -> [ChannelId] -> Event
MessageDeleteBulk ChannelId
a [ChannelId]
b
  InternalMessageReactionAdd ReactionInfo
a -> ReactionInfo -> Event
MessageReactionAdd ReactionInfo
a
  InternalMessageReactionRemove ReactionInfo
a -> ReactionInfo -> Event
MessageReactionRemove ReactionInfo
a
  InternalMessageReactionRemoveAll ChannelId
a ChannelId
b -> ChannelId -> ChannelId -> Event
MessageReactionRemoveAll ChannelId
a ChannelId
b
  InternalMessageReactionRemoveEmoji ReactionRemoveInfo
a -> ReactionRemoveInfo -> Event
MessageReactionRemoveEmoji ReactionRemoveInfo
a
  InternalPresenceUpdate PresenceInfo
a -> PresenceInfo -> Event
PresenceUpdate PresenceInfo
a
  InternalTypingStart TypingInfo
a -> TypingInfo -> Event
TypingStart TypingInfo
a
  InternalUserUpdate User
a -> User -> Event
UserUpdate User
a
  InternalInteractionCreate Interaction
a -> Interaction -> Event
InteractionCreate Interaction
a
  InternalUnknownEvent Text
a Object
b -> Text -> Object -> Event
UnknownEvent Text
a Object
b