-- | 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 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.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
  InternalChannelPinsUpdate ChannelId
a Maybe UTCTime
b -> ChannelId -> Maybe UTCTime -> Event
ChannelPinsUpdate ChannelId
a Maybe UTCTime
b
  InternalGuildCreate Guild
a GuildInfo
b -> Guild -> GuildInfo -> Event
GuildCreate Guild
a GuildInfo
b
  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