-- | module containing all dispatch events
module Calamity.Gateway.DispatchEvents where

import           Calamity.Internal.AesonThings
import           Calamity.Internal.ConstructorName
import           Calamity.Internal.Utils                     ()
import           Calamity.Types.Model.Channel
import           Calamity.Types.Model.Channel.Message
import           Calamity.Types.Model.Guild.Ban
import           Calamity.Types.Model.Guild.Emoji
import           Calamity.Types.Model.Guild.Guild
import           Calamity.Types.Model.Guild.Member
import           Calamity.Types.Model.Guild.Role
import           Calamity.Types.Model.Guild.UnavailableGuild
import           Calamity.Types.Model.Presence.Presence
import           Calamity.Types.Model.User
import           Calamity.Types.Snowflake
import           Calamity.Types.UnixTimestamp

import           Data.Aeson
import           Data.Dynamic
import           Data.Text.Lazy                              ( Text )
import           Data.Time
import           Data.Typeable
import           Data.Vector.Unboxed                         ( Vector )

import           GHC.Generics

data CalamityEvent
  = Dispatch
    Int -- ^ The shard that pushed this event
    DispatchData -- ^ The attached data
  | Custom
    TypeRep -- ^ The name of the custom event
    Dynamic -- ^ The data sent to the custom event
  | ShutDown
  deriving ( Int -> CalamityEvent -> ShowS
[CalamityEvent] -> ShowS
CalamityEvent -> String
(Int -> CalamityEvent -> ShowS)
-> (CalamityEvent -> String)
-> ([CalamityEvent] -> ShowS)
-> Show CalamityEvent
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [CalamityEvent] -> ShowS
$cshowList :: [CalamityEvent] -> ShowS
show :: CalamityEvent -> String
$cshow :: CalamityEvent -> String
showsPrec :: Int -> CalamityEvent -> ShowS
$cshowsPrec :: Int -> CalamityEvent -> ShowS
Show, (forall x. CalamityEvent -> Rep CalamityEvent x)
-> (forall x. Rep CalamityEvent x -> CalamityEvent)
-> Generic CalamityEvent
forall x. Rep CalamityEvent x -> CalamityEvent
forall x. CalamityEvent -> Rep CalamityEvent x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep CalamityEvent x -> CalamityEvent
$cfrom :: forall x. CalamityEvent -> Rep CalamityEvent x
Generic )

data DispatchData
  = Ready ReadyData
  | Resumed
  | ChannelCreate Channel
  | ChannelUpdate Channel
  | ChannelDelete Channel
  | ChannelPinsUpdate ChannelPinsUpdateData
  | GuildCreate Guild
  | GuildUpdate UpdatedGuild
  | GuildDelete UnavailableGuild
  | GuildBanAdd BanData
  | GuildBanRemove BanData
  | GuildEmojisUpdate GuildEmojisUpdateData
  | GuildIntegrationsUpdate GuildIntegrationsUpdateData
  | GuildMemberAdd Member
  | GuildMemberRemove GuildMemberRemoveData
  | GuildMemberUpdate GuildMemberUpdateData
  | GuildMembersChunk GuildMembersChunkData
  | GuildRoleCreate GuildRoleData
  | GuildRoleUpdate GuildRoleData
  | GuildRoleDelete GuildRoleDeleteData
  | MessageCreate Message
  | MessageUpdate UpdatedMessage
  | MessageDelete MessageDeleteData
  | MessageDeleteBulk MessageDeleteBulkData
  | MessageReactionAdd Reaction
  | MessageReactionRemove Reaction
  | MessageReactionRemoveAll MessageReactionRemoveAllData
  | PresenceUpdate PresenceUpdateData
  | TypingStart TypingStartData
  | UserUpdate User
  | VoiceStateUpdate VoiceStateUpdateData
  | VoiceServerUpdate VoiceServerUpdateData
  | WebhooksUpdate WebhooksUpdateData
  deriving ( Int -> DispatchData -> ShowS
[DispatchData] -> ShowS
DispatchData -> String
(Int -> DispatchData -> ShowS)
-> (DispatchData -> String)
-> ([DispatchData] -> ShowS)
-> Show DispatchData
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DispatchData] -> ShowS
$cshowList :: [DispatchData] -> ShowS
show :: DispatchData -> String
$cshow :: DispatchData -> String
showsPrec :: Int -> DispatchData -> ShowS
$cshowsPrec :: Int -> DispatchData -> ShowS
Show, (forall x. DispatchData -> Rep DispatchData x)
-> (forall x. Rep DispatchData x -> DispatchData)
-> Generic DispatchData
forall x. Rep DispatchData x -> DispatchData
forall x. DispatchData -> Rep DispatchData x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep DispatchData x -> DispatchData
$cfrom :: forall x. DispatchData -> Rep DispatchData x
Generic, DispatchData -> String
(DispatchData -> String) -> CtorName DispatchData
forall a. (a -> String) -> CtorName a
ctorName :: DispatchData -> String
$cctorName :: DispatchData -> String
CtorName )

data ReadyData = ReadyData
  { ReadyData -> Integer
v         :: Integer
  , ReadyData -> User
user      :: User
  , ReadyData -> [UnavailableGuild]
guilds    :: [UnavailableGuild]
  , ReadyData -> Text
sessionID :: Text
  }
  deriving ( Int -> ReadyData -> ShowS
[ReadyData] -> ShowS
ReadyData -> String
(Int -> ReadyData -> ShowS)
-> (ReadyData -> String)
-> ([ReadyData] -> ShowS)
-> Show ReadyData
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ReadyData] -> ShowS
$cshowList :: [ReadyData] -> ShowS
show :: ReadyData -> String
$cshow :: ReadyData -> String
showsPrec :: Int -> ReadyData -> ShowS
$cshowsPrec :: Int -> ReadyData -> ShowS
Show, (forall x. ReadyData -> Rep ReadyData x)
-> (forall x. Rep ReadyData x -> ReadyData) -> Generic ReadyData
forall x. Rep ReadyData x -> ReadyData
forall x. ReadyData -> Rep ReadyData x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep ReadyData x -> ReadyData
$cfrom :: forall x. ReadyData -> Rep ReadyData x
Generic )
  deriving Value -> Parser [ReadyData]
Value -> Parser ReadyData
(Value -> Parser ReadyData)
-> (Value -> Parser [ReadyData]) -> FromJSON ReadyData
forall a.
(Value -> Parser a) -> (Value -> Parser [a]) -> FromJSON a
parseJSONList :: Value -> Parser [ReadyData]
$cparseJSONList :: Value -> Parser [ReadyData]
parseJSON :: Value -> Parser ReadyData
$cparseJSON :: Value -> Parser ReadyData
FromJSON via CalamityJSON ReadyData

data ChannelPinsUpdateData = ChannelPinsUpdateData
  { ChannelPinsUpdateData -> Snowflake Channel
channelID        :: Snowflake Channel
  , ChannelPinsUpdateData -> Maybe UTCTime
lastPinTimestamp :: Maybe UTCTime
  }
  deriving ( Int -> ChannelPinsUpdateData -> ShowS
[ChannelPinsUpdateData] -> ShowS
ChannelPinsUpdateData -> String
(Int -> ChannelPinsUpdateData -> ShowS)
-> (ChannelPinsUpdateData -> String)
-> ([ChannelPinsUpdateData] -> ShowS)
-> Show ChannelPinsUpdateData
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ChannelPinsUpdateData] -> ShowS
$cshowList :: [ChannelPinsUpdateData] -> ShowS
show :: ChannelPinsUpdateData -> String
$cshow :: ChannelPinsUpdateData -> String
showsPrec :: Int -> ChannelPinsUpdateData -> ShowS
$cshowsPrec :: Int -> ChannelPinsUpdateData -> ShowS
Show, (forall x. ChannelPinsUpdateData -> Rep ChannelPinsUpdateData x)
-> (forall x. Rep ChannelPinsUpdateData x -> ChannelPinsUpdateData)
-> Generic ChannelPinsUpdateData
forall x. Rep ChannelPinsUpdateData x -> ChannelPinsUpdateData
forall x. ChannelPinsUpdateData -> Rep ChannelPinsUpdateData x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep ChannelPinsUpdateData x -> ChannelPinsUpdateData
$cfrom :: forall x. ChannelPinsUpdateData -> Rep ChannelPinsUpdateData x
Generic )
  deriving Value -> Parser [ChannelPinsUpdateData]
Value -> Parser ChannelPinsUpdateData
(Value -> Parser ChannelPinsUpdateData)
-> (Value -> Parser [ChannelPinsUpdateData])
-> FromJSON ChannelPinsUpdateData
forall a.
(Value -> Parser a) -> (Value -> Parser [a]) -> FromJSON a
parseJSONList :: Value -> Parser [ChannelPinsUpdateData]
$cparseJSONList :: Value -> Parser [ChannelPinsUpdateData]
parseJSON :: Value -> Parser ChannelPinsUpdateData
$cparseJSON :: Value -> Parser ChannelPinsUpdateData
FromJSON via CalamityJSON ChannelPinsUpdateData

data GuildEmojisUpdateData = GuildEmojisUpdateData
  { GuildEmojisUpdateData -> Snowflake Guild
guildID :: Snowflake Guild
  , GuildEmojisUpdateData -> [Emoji]
emojis  :: [Emoji]
  }
  deriving ( Int -> GuildEmojisUpdateData -> ShowS
[GuildEmojisUpdateData] -> ShowS
GuildEmojisUpdateData -> String
(Int -> GuildEmojisUpdateData -> ShowS)
-> (GuildEmojisUpdateData -> String)
-> ([GuildEmojisUpdateData] -> ShowS)
-> Show GuildEmojisUpdateData
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [GuildEmojisUpdateData] -> ShowS
$cshowList :: [GuildEmojisUpdateData] -> ShowS
show :: GuildEmojisUpdateData -> String
$cshow :: GuildEmojisUpdateData -> String
showsPrec :: Int -> GuildEmojisUpdateData -> ShowS
$cshowsPrec :: Int -> GuildEmojisUpdateData -> ShowS
Show, (forall x. GuildEmojisUpdateData -> Rep GuildEmojisUpdateData x)
-> (forall x. Rep GuildEmojisUpdateData x -> GuildEmojisUpdateData)
-> Generic GuildEmojisUpdateData
forall x. Rep GuildEmojisUpdateData x -> GuildEmojisUpdateData
forall x. GuildEmojisUpdateData -> Rep GuildEmojisUpdateData x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep GuildEmojisUpdateData x -> GuildEmojisUpdateData
$cfrom :: forall x. GuildEmojisUpdateData -> Rep GuildEmojisUpdateData x
Generic )
  deriving Value -> Parser [GuildEmojisUpdateData]
Value -> Parser GuildEmojisUpdateData
(Value -> Parser GuildEmojisUpdateData)
-> (Value -> Parser [GuildEmojisUpdateData])
-> FromJSON GuildEmojisUpdateData
forall a.
(Value -> Parser a) -> (Value -> Parser [a]) -> FromJSON a
parseJSONList :: Value -> Parser [GuildEmojisUpdateData]
$cparseJSONList :: Value -> Parser [GuildEmojisUpdateData]
parseJSON :: Value -> Parser GuildEmojisUpdateData
$cparseJSON :: Value -> Parser GuildEmojisUpdateData
FromJSON via CalamityJSON GuildEmojisUpdateData

newtype GuildIntegrationsUpdateData = GuildIntegrationsUpdateData
  { GuildIntegrationsUpdateData -> Snowflake Guild
guildID :: Snowflake Guild
  }
  deriving newtype ( Int -> GuildIntegrationsUpdateData -> ShowS
[GuildIntegrationsUpdateData] -> ShowS
GuildIntegrationsUpdateData -> String
(Int -> GuildIntegrationsUpdateData -> ShowS)
-> (GuildIntegrationsUpdateData -> String)
-> ([GuildIntegrationsUpdateData] -> ShowS)
-> Show GuildIntegrationsUpdateData
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [GuildIntegrationsUpdateData] -> ShowS
$cshowList :: [GuildIntegrationsUpdateData] -> ShowS
show :: GuildIntegrationsUpdateData -> String
$cshow :: GuildIntegrationsUpdateData -> String
showsPrec :: Int -> GuildIntegrationsUpdateData -> ShowS
$cshowsPrec :: Int -> GuildIntegrationsUpdateData -> ShowS
Show, Rep GuildIntegrationsUpdateData x -> GuildIntegrationsUpdateData
GuildIntegrationsUpdateData -> Rep GuildIntegrationsUpdateData x
(forall x.
 GuildIntegrationsUpdateData -> Rep GuildIntegrationsUpdateData x)
-> (forall x.
    Rep GuildIntegrationsUpdateData x -> GuildIntegrationsUpdateData)
-> Generic GuildIntegrationsUpdateData
forall x.
Rep GuildIntegrationsUpdateData x -> GuildIntegrationsUpdateData
forall x.
GuildIntegrationsUpdateData -> Rep GuildIntegrationsUpdateData x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
to :: Rep GuildIntegrationsUpdateData x -> GuildIntegrationsUpdateData
$cto :: forall x.
Rep GuildIntegrationsUpdateData x -> GuildIntegrationsUpdateData
from :: GuildIntegrationsUpdateData -> Rep GuildIntegrationsUpdateData x
$cfrom :: forall x.
GuildIntegrationsUpdateData -> Rep GuildIntegrationsUpdateData x
Generic )
  deriving Value -> Parser [GuildIntegrationsUpdateData]
Value -> Parser GuildIntegrationsUpdateData
(Value -> Parser GuildIntegrationsUpdateData)
-> (Value -> Parser [GuildIntegrationsUpdateData])
-> FromJSON GuildIntegrationsUpdateData
forall a.
(Value -> Parser a) -> (Value -> Parser [a]) -> FromJSON a
parseJSONList :: Value -> Parser [GuildIntegrationsUpdateData]
$cparseJSONList :: Value -> Parser [GuildIntegrationsUpdateData]
parseJSON :: Value -> Parser GuildIntegrationsUpdateData
$cparseJSON :: Value -> Parser GuildIntegrationsUpdateData
FromJSON via CalamityJSON GuildIntegrationsUpdateData

data GuildMemberRemoveData = GuildMemberRemoveData
  { GuildMemberRemoveData -> Snowflake Guild
guildID :: Snowflake Guild
  , GuildMemberRemoveData -> User
user    :: User
  }
  deriving ( Int -> GuildMemberRemoveData -> ShowS
[GuildMemberRemoveData] -> ShowS
GuildMemberRemoveData -> String
(Int -> GuildMemberRemoveData -> ShowS)
-> (GuildMemberRemoveData -> String)
-> ([GuildMemberRemoveData] -> ShowS)
-> Show GuildMemberRemoveData
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [GuildMemberRemoveData] -> ShowS
$cshowList :: [GuildMemberRemoveData] -> ShowS
show :: GuildMemberRemoveData -> String
$cshow :: GuildMemberRemoveData -> String
showsPrec :: Int -> GuildMemberRemoveData -> ShowS
$cshowsPrec :: Int -> GuildMemberRemoveData -> ShowS
Show, (forall x. GuildMemberRemoveData -> Rep GuildMemberRemoveData x)
-> (forall x. Rep GuildMemberRemoveData x -> GuildMemberRemoveData)
-> Generic GuildMemberRemoveData
forall x. Rep GuildMemberRemoveData x -> GuildMemberRemoveData
forall x. GuildMemberRemoveData -> Rep GuildMemberRemoveData x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep GuildMemberRemoveData x -> GuildMemberRemoveData
$cfrom :: forall x. GuildMemberRemoveData -> Rep GuildMemberRemoveData x
Generic )
  deriving Value -> Parser [GuildMemberRemoveData]
Value -> Parser GuildMemberRemoveData
(Value -> Parser GuildMemberRemoveData)
-> (Value -> Parser [GuildMemberRemoveData])
-> FromJSON GuildMemberRemoveData
forall a.
(Value -> Parser a) -> (Value -> Parser [a]) -> FromJSON a
parseJSONList :: Value -> Parser [GuildMemberRemoveData]
$cparseJSONList :: Value -> Parser [GuildMemberRemoveData]
parseJSON :: Value -> Parser GuildMemberRemoveData
$cparseJSON :: Value -> Parser GuildMemberRemoveData
FromJSON via CalamityJSON GuildMemberRemoveData

data GuildMemberUpdateData = GuildMemberUpdateData
  { GuildMemberUpdateData -> Snowflake Guild
guildID :: Snowflake Guild
  , GuildMemberUpdateData -> Vector (Snowflake Role)
roles   :: Vector (Snowflake Role)
  , GuildMemberUpdateData -> User
user    :: User
  , GuildMemberUpdateData -> Maybe Text
nick    :: Maybe Text
  }
  deriving ( Int -> GuildMemberUpdateData -> ShowS
[GuildMemberUpdateData] -> ShowS
GuildMemberUpdateData -> String
(Int -> GuildMemberUpdateData -> ShowS)
-> (GuildMemberUpdateData -> String)
-> ([GuildMemberUpdateData] -> ShowS)
-> Show GuildMemberUpdateData
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [GuildMemberUpdateData] -> ShowS
$cshowList :: [GuildMemberUpdateData] -> ShowS
show :: GuildMemberUpdateData -> String
$cshow :: GuildMemberUpdateData -> String
showsPrec :: Int -> GuildMemberUpdateData -> ShowS
$cshowsPrec :: Int -> GuildMemberUpdateData -> ShowS
Show, (forall x. GuildMemberUpdateData -> Rep GuildMemberUpdateData x)
-> (forall x. Rep GuildMemberUpdateData x -> GuildMemberUpdateData)
-> Generic GuildMemberUpdateData
forall x. Rep GuildMemberUpdateData x -> GuildMemberUpdateData
forall x. GuildMemberUpdateData -> Rep GuildMemberUpdateData x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep GuildMemberUpdateData x -> GuildMemberUpdateData
$cfrom :: forall x. GuildMemberUpdateData -> Rep GuildMemberUpdateData x
Generic )
  deriving Value -> Parser [GuildMemberUpdateData]
Value -> Parser GuildMemberUpdateData
(Value -> Parser GuildMemberUpdateData)
-> (Value -> Parser [GuildMemberUpdateData])
-> FromJSON GuildMemberUpdateData
forall a.
(Value -> Parser a) -> (Value -> Parser [a]) -> FromJSON a
parseJSONList :: Value -> Parser [GuildMemberUpdateData]
$cparseJSONList :: Value -> Parser [GuildMemberUpdateData]
parseJSON :: Value -> Parser GuildMemberUpdateData
$cparseJSON :: Value -> Parser GuildMemberUpdateData
FromJSON via CalamityJSON GuildMemberUpdateData

data GuildMembersChunkData = GuildMembersChunkData
  { GuildMembersChunkData -> Snowflake Guild
guildID :: Snowflake Guild
  , GuildMembersChunkData -> [Member]
members :: [Member]
  }
  deriving ( Int -> GuildMembersChunkData -> ShowS
[GuildMembersChunkData] -> ShowS
GuildMembersChunkData -> String
(Int -> GuildMembersChunkData -> ShowS)
-> (GuildMembersChunkData -> String)
-> ([GuildMembersChunkData] -> ShowS)
-> Show GuildMembersChunkData
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [GuildMembersChunkData] -> ShowS
$cshowList :: [GuildMembersChunkData] -> ShowS
show :: GuildMembersChunkData -> String
$cshow :: GuildMembersChunkData -> String
showsPrec :: Int -> GuildMembersChunkData -> ShowS
$cshowsPrec :: Int -> GuildMembersChunkData -> ShowS
Show, (forall x. GuildMembersChunkData -> Rep GuildMembersChunkData x)
-> (forall x. Rep GuildMembersChunkData x -> GuildMembersChunkData)
-> Generic GuildMembersChunkData
forall x. Rep GuildMembersChunkData x -> GuildMembersChunkData
forall x. GuildMembersChunkData -> Rep GuildMembersChunkData x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep GuildMembersChunkData x -> GuildMembersChunkData
$cfrom :: forall x. GuildMembersChunkData -> Rep GuildMembersChunkData x
Generic )

instance FromJSON GuildMembersChunkData where
  parseJSON :: Value -> Parser GuildMembersChunkData
parseJSON = String
-> (Object -> Parser GuildMembersChunkData)
-> Value
-> Parser GuildMembersChunkData
forall a. String -> (Object -> Parser a) -> Value -> Parser a
withObject "GuildMembersChunkData" ((Object -> Parser GuildMembersChunkData)
 -> Value -> Parser GuildMembersChunkData)
-> (Object -> Parser GuildMembersChunkData)
-> Value
-> Parser GuildMembersChunkData
forall a b. (a -> b) -> a -> b
$ \v :: Object
v -> do
    Snowflake Guild
guildID <- Object
v Object -> Text -> Parser (Snowflake Guild)
forall a. FromJSON a => Object -> Text -> Parser a
.: "guild_id"

    [Member]
members' <- do
      [Object]
members' <- Object
v Object -> Text -> Parser [Object]
forall a. FromJSON a => Object -> Text -> Parser a
.: "members"
      (Object -> Parser Member) -> [Object] -> Parser [Member]
forall (t :: * -> *) (f :: * -> *) a b.
(Traversable t, Applicative f) =>
(a -> f b) -> t a -> f (t b)
traverse (\m :: Object
m -> Value -> Parser Member
forall a. FromJSON a => Value -> Parser a
parseJSON (Value -> Parser Member) -> Value -> Parser Member
forall a b. (a -> b) -> a -> b
$ Object -> Value
Object (Object
m Object -> Object -> Object
forall a. Semigroup a => a -> a -> a
<> "guild_id" Text -> Snowflake Guild -> Object
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
.= Snowflake Guild
guildID)) [Object]
members'

    GuildMembersChunkData -> Parser GuildMembersChunkData
forall (f :: * -> *) a. Applicative f => a -> f a
pure (GuildMembersChunkData -> Parser GuildMembersChunkData)
-> GuildMembersChunkData -> Parser GuildMembersChunkData
forall a b. (a -> b) -> a -> b
$ Snowflake Guild -> [Member] -> GuildMembersChunkData
GuildMembersChunkData Snowflake Guild
guildID [Member]
members'

data GuildRoleData = GuildRoleData
  { GuildRoleData -> Snowflake Guild
guildID :: Snowflake Guild
  , GuildRoleData -> Role
role    :: Role
  }
  deriving ( Int -> GuildRoleData -> ShowS
[GuildRoleData] -> ShowS
GuildRoleData -> String
(Int -> GuildRoleData -> ShowS)
-> (GuildRoleData -> String)
-> ([GuildRoleData] -> ShowS)
-> Show GuildRoleData
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [GuildRoleData] -> ShowS
$cshowList :: [GuildRoleData] -> ShowS
show :: GuildRoleData -> String
$cshow :: GuildRoleData -> String
showsPrec :: Int -> GuildRoleData -> ShowS
$cshowsPrec :: Int -> GuildRoleData -> ShowS
Show, (forall x. GuildRoleData -> Rep GuildRoleData x)
-> (forall x. Rep GuildRoleData x -> GuildRoleData)
-> Generic GuildRoleData
forall x. Rep GuildRoleData x -> GuildRoleData
forall x. GuildRoleData -> Rep GuildRoleData x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep GuildRoleData x -> GuildRoleData
$cfrom :: forall x. GuildRoleData -> Rep GuildRoleData x
Generic )
  deriving Value -> Parser [GuildRoleData]
Value -> Parser GuildRoleData
(Value -> Parser GuildRoleData)
-> (Value -> Parser [GuildRoleData]) -> FromJSON GuildRoleData
forall a.
(Value -> Parser a) -> (Value -> Parser [a]) -> FromJSON a
parseJSONList :: Value -> Parser [GuildRoleData]
$cparseJSONList :: Value -> Parser [GuildRoleData]
parseJSON :: Value -> Parser GuildRoleData
$cparseJSON :: Value -> Parser GuildRoleData
FromJSON via CalamityJSON GuildRoleData

data GuildRoleDeleteData = GuildRoleDeleteData
  { GuildRoleDeleteData -> Snowflake Guild
guildID :: Snowflake Guild
  , GuildRoleDeleteData -> Snowflake Role
roleID  :: Snowflake Role
  }
  deriving ( Int -> GuildRoleDeleteData -> ShowS
[GuildRoleDeleteData] -> ShowS
GuildRoleDeleteData -> String
(Int -> GuildRoleDeleteData -> ShowS)
-> (GuildRoleDeleteData -> String)
-> ([GuildRoleDeleteData] -> ShowS)
-> Show GuildRoleDeleteData
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [GuildRoleDeleteData] -> ShowS
$cshowList :: [GuildRoleDeleteData] -> ShowS
show :: GuildRoleDeleteData -> String
$cshow :: GuildRoleDeleteData -> String
showsPrec :: Int -> GuildRoleDeleteData -> ShowS
$cshowsPrec :: Int -> GuildRoleDeleteData -> ShowS
Show, (forall x. GuildRoleDeleteData -> Rep GuildRoleDeleteData x)
-> (forall x. Rep GuildRoleDeleteData x -> GuildRoleDeleteData)
-> Generic GuildRoleDeleteData
forall x. Rep GuildRoleDeleteData x -> GuildRoleDeleteData
forall x. GuildRoleDeleteData -> Rep GuildRoleDeleteData x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep GuildRoleDeleteData x -> GuildRoleDeleteData
$cfrom :: forall x. GuildRoleDeleteData -> Rep GuildRoleDeleteData x
Generic )
  deriving Value -> Parser [GuildRoleDeleteData]
Value -> Parser GuildRoleDeleteData
(Value -> Parser GuildRoleDeleteData)
-> (Value -> Parser [GuildRoleDeleteData])
-> FromJSON GuildRoleDeleteData
forall a.
(Value -> Parser a) -> (Value -> Parser [a]) -> FromJSON a
parseJSONList :: Value -> Parser [GuildRoleDeleteData]
$cparseJSONList :: Value -> Parser [GuildRoleDeleteData]
parseJSON :: Value -> Parser GuildRoleDeleteData
$cparseJSON :: Value -> Parser GuildRoleDeleteData
FromJSON via CalamityJSON GuildRoleDeleteData

data MessageDeleteData = MessageDeleteData
  { MessageDeleteData -> Snowflake Message
id        :: Snowflake Message
  , MessageDeleteData -> Snowflake Channel
channelID :: Snowflake Channel
  , MessageDeleteData -> Snowflake Guild
guildID   :: Snowflake Guild
  }
  deriving ( Int -> MessageDeleteData -> ShowS
[MessageDeleteData] -> ShowS
MessageDeleteData -> String
(Int -> MessageDeleteData -> ShowS)
-> (MessageDeleteData -> String)
-> ([MessageDeleteData] -> ShowS)
-> Show MessageDeleteData
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [MessageDeleteData] -> ShowS
$cshowList :: [MessageDeleteData] -> ShowS
show :: MessageDeleteData -> String
$cshow :: MessageDeleteData -> String
showsPrec :: Int -> MessageDeleteData -> ShowS
$cshowsPrec :: Int -> MessageDeleteData -> ShowS
Show, (forall x. MessageDeleteData -> Rep MessageDeleteData x)
-> (forall x. Rep MessageDeleteData x -> MessageDeleteData)
-> Generic MessageDeleteData
forall x. Rep MessageDeleteData x -> MessageDeleteData
forall x. MessageDeleteData -> Rep MessageDeleteData x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep MessageDeleteData x -> MessageDeleteData
$cfrom :: forall x. MessageDeleteData -> Rep MessageDeleteData x
Generic )
  deriving Value -> Parser [MessageDeleteData]
Value -> Parser MessageDeleteData
(Value -> Parser MessageDeleteData)
-> (Value -> Parser [MessageDeleteData])
-> FromJSON MessageDeleteData
forall a.
(Value -> Parser a) -> (Value -> Parser [a]) -> FromJSON a
parseJSONList :: Value -> Parser [MessageDeleteData]
$cparseJSONList :: Value -> Parser [MessageDeleteData]
parseJSON :: Value -> Parser MessageDeleteData
$cparseJSON :: Value -> Parser MessageDeleteData
FromJSON via CalamityJSON MessageDeleteData

data MessageDeleteBulkData = MessageDeleteBulkData
  { MessageDeleteBulkData -> Snowflake Guild
guildID   :: Snowflake Guild
  , MessageDeleteBulkData -> Snowflake Channel
channelID :: Snowflake Channel
  , MessageDeleteBulkData -> [Snowflake Message]
ids       :: [Snowflake Message]
  }
  deriving ( Int -> MessageDeleteBulkData -> ShowS
[MessageDeleteBulkData] -> ShowS
MessageDeleteBulkData -> String
(Int -> MessageDeleteBulkData -> ShowS)
-> (MessageDeleteBulkData -> String)
-> ([MessageDeleteBulkData] -> ShowS)
-> Show MessageDeleteBulkData
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [MessageDeleteBulkData] -> ShowS
$cshowList :: [MessageDeleteBulkData] -> ShowS
show :: MessageDeleteBulkData -> String
$cshow :: MessageDeleteBulkData -> String
showsPrec :: Int -> MessageDeleteBulkData -> ShowS
$cshowsPrec :: Int -> MessageDeleteBulkData -> ShowS
Show, (forall x. MessageDeleteBulkData -> Rep MessageDeleteBulkData x)
-> (forall x. Rep MessageDeleteBulkData x -> MessageDeleteBulkData)
-> Generic MessageDeleteBulkData
forall x. Rep MessageDeleteBulkData x -> MessageDeleteBulkData
forall x. MessageDeleteBulkData -> Rep MessageDeleteBulkData x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep MessageDeleteBulkData x -> MessageDeleteBulkData
$cfrom :: forall x. MessageDeleteBulkData -> Rep MessageDeleteBulkData x
Generic )
  deriving Value -> Parser [MessageDeleteBulkData]
Value -> Parser MessageDeleteBulkData
(Value -> Parser MessageDeleteBulkData)
-> (Value -> Parser [MessageDeleteBulkData])
-> FromJSON MessageDeleteBulkData
forall a.
(Value -> Parser a) -> (Value -> Parser [a]) -> FromJSON a
parseJSONList :: Value -> Parser [MessageDeleteBulkData]
$cparseJSONList :: Value -> Parser [MessageDeleteBulkData]
parseJSON :: Value -> Parser MessageDeleteBulkData
$cparseJSON :: Value -> Parser MessageDeleteBulkData
FromJSON via CalamityJSON MessageDeleteBulkData

data MessageReactionRemoveAllData = MessageReactionRemoveAllData
  { MessageReactionRemoveAllData -> Snowflake Channel
channelID :: Snowflake Channel
  , MessageReactionRemoveAllData -> Snowflake Message
messageID :: Snowflake Message
  , MessageReactionRemoveAllData -> Maybe (Snowflake Guild)
guildID   :: Maybe (Snowflake Guild)
  }
  deriving ( Int -> MessageReactionRemoveAllData -> ShowS
[MessageReactionRemoveAllData] -> ShowS
MessageReactionRemoveAllData -> String
(Int -> MessageReactionRemoveAllData -> ShowS)
-> (MessageReactionRemoveAllData -> String)
-> ([MessageReactionRemoveAllData] -> ShowS)
-> Show MessageReactionRemoveAllData
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [MessageReactionRemoveAllData] -> ShowS
$cshowList :: [MessageReactionRemoveAllData] -> ShowS
show :: MessageReactionRemoveAllData -> String
$cshow :: MessageReactionRemoveAllData -> String
showsPrec :: Int -> MessageReactionRemoveAllData -> ShowS
$cshowsPrec :: Int -> MessageReactionRemoveAllData -> ShowS
Show, (forall x.
 MessageReactionRemoveAllData -> Rep MessageReactionRemoveAllData x)
-> (forall x.
    Rep MessageReactionRemoveAllData x -> MessageReactionRemoveAllData)
-> Generic MessageReactionRemoveAllData
forall x.
Rep MessageReactionRemoveAllData x -> MessageReactionRemoveAllData
forall x.
MessageReactionRemoveAllData -> Rep MessageReactionRemoveAllData x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep MessageReactionRemoveAllData x -> MessageReactionRemoveAllData
$cfrom :: forall x.
MessageReactionRemoveAllData -> Rep MessageReactionRemoveAllData x
Generic )
  deriving Value -> Parser [MessageReactionRemoveAllData]
Value -> Parser MessageReactionRemoveAllData
(Value -> Parser MessageReactionRemoveAllData)
-> (Value -> Parser [MessageReactionRemoveAllData])
-> FromJSON MessageReactionRemoveAllData
forall a.
(Value -> Parser a) -> (Value -> Parser [a]) -> FromJSON a
parseJSONList :: Value -> Parser [MessageReactionRemoveAllData]
$cparseJSONList :: Value -> Parser [MessageReactionRemoveAllData]
parseJSON :: Value -> Parser MessageReactionRemoveAllData
$cparseJSON :: Value -> Parser MessageReactionRemoveAllData
FromJSON via CalamityJSON MessageReactionRemoveAllData

data PresenceUpdateData = PresenceUpdateData
  { PresenceUpdateData -> Snowflake User
userID   :: Snowflake User
  , PresenceUpdateData -> Vector (Snowflake Role)
roles    :: Vector (Snowflake Role)
  , PresenceUpdateData -> Presence
presence :: Presence
  }
  deriving ( Int -> PresenceUpdateData -> ShowS
[PresenceUpdateData] -> ShowS
PresenceUpdateData -> String
(Int -> PresenceUpdateData -> ShowS)
-> (PresenceUpdateData -> String)
-> ([PresenceUpdateData] -> ShowS)
-> Show PresenceUpdateData
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [PresenceUpdateData] -> ShowS
$cshowList :: [PresenceUpdateData] -> ShowS
show :: PresenceUpdateData -> String
$cshow :: PresenceUpdateData -> String
showsPrec :: Int -> PresenceUpdateData -> ShowS
$cshowsPrec :: Int -> PresenceUpdateData -> ShowS
Show, (forall x. PresenceUpdateData -> Rep PresenceUpdateData x)
-> (forall x. Rep PresenceUpdateData x -> PresenceUpdateData)
-> Generic PresenceUpdateData
forall x. Rep PresenceUpdateData x -> PresenceUpdateData
forall x. PresenceUpdateData -> Rep PresenceUpdateData x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep PresenceUpdateData x -> PresenceUpdateData
$cfrom :: forall x. PresenceUpdateData -> Rep PresenceUpdateData x
Generic )

instance FromJSON PresenceUpdateData where
  parseJSON :: Value -> Parser PresenceUpdateData
parseJSON = String
-> (Object -> Parser PresenceUpdateData)
-> Value
-> Parser PresenceUpdateData
forall a. String -> (Object -> Parser a) -> Value -> Parser a
withObject "PresenceUpdate" ((Object -> Parser PresenceUpdateData)
 -> Value -> Parser PresenceUpdateData)
-> (Object -> Parser PresenceUpdateData)
-> Value
-> Parser PresenceUpdateData
forall a b. (a -> b) -> a -> b
$ \v :: Object
v -> do
    Snowflake User
user <- (Object
v Object -> Text -> Parser Object
forall a. FromJSON a => Object -> Text -> Parser a
.: "user") Parser Object
-> (Object -> Parser (Snowflake User)) -> Parser (Snowflake User)
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= (Object -> Text -> Parser (Snowflake User)
forall a. FromJSON a => Object -> Text -> Parser a
.: "id")
    Vector (Snowflake Role)
roles <- Object
v Object -> Text -> Parser (Vector (Snowflake Role))
forall a. FromJSON a => Object -> Text -> Parser a
.: "roles"
    Presence
presence <- Value -> Parser Presence
forall a. FromJSON a => Value -> Parser a
parseJSON (Value -> Parser Presence) -> Value -> Parser Presence
forall a b. (a -> b) -> a -> b
$ Object -> Value
Object Object
v
    PresenceUpdateData -> Parser PresenceUpdateData
forall (f :: * -> *) a. Applicative f => a -> f a
pure (PresenceUpdateData -> Parser PresenceUpdateData)
-> PresenceUpdateData -> Parser PresenceUpdateData
forall a b. (a -> b) -> a -> b
$ Snowflake User
-> Vector (Snowflake Role) -> Presence -> PresenceUpdateData
PresenceUpdateData Snowflake User
user Vector (Snowflake Role)
roles Presence
presence

data TypingStartData = TypingStartData
  { TypingStartData -> Snowflake Channel
channelID :: Snowflake Channel
  , TypingStartData -> Maybe (Snowflake Guild)
guildID   :: Maybe (Snowflake Guild)
  , TypingStartData -> Snowflake User
userID    :: Snowflake User
  , TypingStartData -> UnixTimestamp
timestamp :: UnixTimestamp
  }
  deriving ( Int -> TypingStartData -> ShowS
[TypingStartData] -> ShowS
TypingStartData -> String
(Int -> TypingStartData -> ShowS)
-> (TypingStartData -> String)
-> ([TypingStartData] -> ShowS)
-> Show TypingStartData
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [TypingStartData] -> ShowS
$cshowList :: [TypingStartData] -> ShowS
show :: TypingStartData -> String
$cshow :: TypingStartData -> String
showsPrec :: Int -> TypingStartData -> ShowS
$cshowsPrec :: Int -> TypingStartData -> ShowS
Show, (forall x. TypingStartData -> Rep TypingStartData x)
-> (forall x. Rep TypingStartData x -> TypingStartData)
-> Generic TypingStartData
forall x. Rep TypingStartData x -> TypingStartData
forall x. TypingStartData -> Rep TypingStartData x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep TypingStartData x -> TypingStartData
$cfrom :: forall x. TypingStartData -> Rep TypingStartData x
Generic )
  deriving Value -> Parser [TypingStartData]
Value -> Parser TypingStartData
(Value -> Parser TypingStartData)
-> (Value -> Parser [TypingStartData]) -> FromJSON TypingStartData
forall a.
(Value -> Parser a) -> (Value -> Parser [a]) -> FromJSON a
parseJSONList :: Value -> Parser [TypingStartData]
$cparseJSONList :: Value -> Parser [TypingStartData]
parseJSON :: Value -> Parser TypingStartData
$cparseJSON :: Value -> Parser TypingStartData
FromJSON via CalamityJSON TypingStartData

newtype VoiceStateUpdateData = VoiceStateUpdateData Value
  deriving newtype ( Int -> VoiceStateUpdateData -> ShowS
[VoiceStateUpdateData] -> ShowS
VoiceStateUpdateData -> String
(Int -> VoiceStateUpdateData -> ShowS)
-> (VoiceStateUpdateData -> String)
-> ([VoiceStateUpdateData] -> ShowS)
-> Show VoiceStateUpdateData
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [VoiceStateUpdateData] -> ShowS
$cshowList :: [VoiceStateUpdateData] -> ShowS
show :: VoiceStateUpdateData -> String
$cshow :: VoiceStateUpdateData -> String
showsPrec :: Int -> VoiceStateUpdateData -> ShowS
$cshowsPrec :: Int -> VoiceStateUpdateData -> ShowS
Show, Rep VoiceStateUpdateData x -> VoiceStateUpdateData
VoiceStateUpdateData -> Rep VoiceStateUpdateData x
(forall x. VoiceStateUpdateData -> Rep VoiceStateUpdateData x)
-> (forall x. Rep VoiceStateUpdateData x -> VoiceStateUpdateData)
-> Generic VoiceStateUpdateData
forall x. Rep VoiceStateUpdateData x -> VoiceStateUpdateData
forall x. VoiceStateUpdateData -> Rep VoiceStateUpdateData x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
to :: Rep VoiceStateUpdateData x -> VoiceStateUpdateData
$cto :: forall x. Rep VoiceStateUpdateData x -> VoiceStateUpdateData
from :: VoiceStateUpdateData -> Rep VoiceStateUpdateData x
$cfrom :: forall x. VoiceStateUpdateData -> Rep VoiceStateUpdateData x
Generic )
  deriving newtype ( [VoiceStateUpdateData] -> Encoding
[VoiceStateUpdateData] -> Value
VoiceStateUpdateData -> Encoding
VoiceStateUpdateData -> Value
(VoiceStateUpdateData -> Value)
-> (VoiceStateUpdateData -> Encoding)
-> ([VoiceStateUpdateData] -> Value)
-> ([VoiceStateUpdateData] -> Encoding)
-> ToJSON VoiceStateUpdateData
forall a.
(a -> Value)
-> (a -> Encoding)
-> ([a] -> Value)
-> ([a] -> Encoding)
-> ToJSON a
toEncodingList :: [VoiceStateUpdateData] -> Encoding
$ctoEncodingList :: [VoiceStateUpdateData] -> Encoding
toJSONList :: [VoiceStateUpdateData] -> Value
$ctoJSONList :: [VoiceStateUpdateData] -> Value
toEncoding :: VoiceStateUpdateData -> Encoding
$ctoEncoding :: VoiceStateUpdateData -> Encoding
toJSON :: VoiceStateUpdateData -> Value
$ctoJSON :: VoiceStateUpdateData -> Value
ToJSON, Value -> Parser [VoiceStateUpdateData]
Value -> Parser VoiceStateUpdateData
(Value -> Parser VoiceStateUpdateData)
-> (Value -> Parser [VoiceStateUpdateData])
-> FromJSON VoiceStateUpdateData
forall a.
(Value -> Parser a) -> (Value -> Parser [a]) -> FromJSON a
parseJSONList :: Value -> Parser [VoiceStateUpdateData]
$cparseJSONList :: Value -> Parser [VoiceStateUpdateData]
parseJSON :: Value -> Parser VoiceStateUpdateData
$cparseJSON :: Value -> Parser VoiceStateUpdateData
FromJSON )

newtype VoiceServerUpdateData = VoiceServerUpdateData Value
  deriving newtype ( Int -> VoiceServerUpdateData -> ShowS
[VoiceServerUpdateData] -> ShowS
VoiceServerUpdateData -> String
(Int -> VoiceServerUpdateData -> ShowS)
-> (VoiceServerUpdateData -> String)
-> ([VoiceServerUpdateData] -> ShowS)
-> Show VoiceServerUpdateData
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [VoiceServerUpdateData] -> ShowS
$cshowList :: [VoiceServerUpdateData] -> ShowS
show :: VoiceServerUpdateData -> String
$cshow :: VoiceServerUpdateData -> String
showsPrec :: Int -> VoiceServerUpdateData -> ShowS
$cshowsPrec :: Int -> VoiceServerUpdateData -> ShowS
Show, Rep VoiceServerUpdateData x -> VoiceServerUpdateData
VoiceServerUpdateData -> Rep VoiceServerUpdateData x
(forall x. VoiceServerUpdateData -> Rep VoiceServerUpdateData x)
-> (forall x. Rep VoiceServerUpdateData x -> VoiceServerUpdateData)
-> Generic VoiceServerUpdateData
forall x. Rep VoiceServerUpdateData x -> VoiceServerUpdateData
forall x. VoiceServerUpdateData -> Rep VoiceServerUpdateData x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
to :: Rep VoiceServerUpdateData x -> VoiceServerUpdateData
$cto :: forall x. Rep VoiceServerUpdateData x -> VoiceServerUpdateData
from :: VoiceServerUpdateData -> Rep VoiceServerUpdateData x
$cfrom :: forall x. VoiceServerUpdateData -> Rep VoiceServerUpdateData x
Generic )
  deriving newtype ( [VoiceServerUpdateData] -> Encoding
[VoiceServerUpdateData] -> Value
VoiceServerUpdateData -> Encoding
VoiceServerUpdateData -> Value
(VoiceServerUpdateData -> Value)
-> (VoiceServerUpdateData -> Encoding)
-> ([VoiceServerUpdateData] -> Value)
-> ([VoiceServerUpdateData] -> Encoding)
-> ToJSON VoiceServerUpdateData
forall a.
(a -> Value)
-> (a -> Encoding)
-> ([a] -> Value)
-> ([a] -> Encoding)
-> ToJSON a
toEncodingList :: [VoiceServerUpdateData] -> Encoding
$ctoEncodingList :: [VoiceServerUpdateData] -> Encoding
toJSONList :: [VoiceServerUpdateData] -> Value
$ctoJSONList :: [VoiceServerUpdateData] -> Value
toEncoding :: VoiceServerUpdateData -> Encoding
$ctoEncoding :: VoiceServerUpdateData -> Encoding
toJSON :: VoiceServerUpdateData -> Value
$ctoJSON :: VoiceServerUpdateData -> Value
ToJSON, Value -> Parser [VoiceServerUpdateData]
Value -> Parser VoiceServerUpdateData
(Value -> Parser VoiceServerUpdateData)
-> (Value -> Parser [VoiceServerUpdateData])
-> FromJSON VoiceServerUpdateData
forall a.
(Value -> Parser a) -> (Value -> Parser [a]) -> FromJSON a
parseJSONList :: Value -> Parser [VoiceServerUpdateData]
$cparseJSONList :: Value -> Parser [VoiceServerUpdateData]
parseJSON :: Value -> Parser VoiceServerUpdateData
$cparseJSON :: Value -> Parser VoiceServerUpdateData
FromJSON )

newtype WebhooksUpdateData = WebhooksUpdateData Value
  deriving newtype ( Int -> WebhooksUpdateData -> ShowS
[WebhooksUpdateData] -> ShowS
WebhooksUpdateData -> String
(Int -> WebhooksUpdateData -> ShowS)
-> (WebhooksUpdateData -> String)
-> ([WebhooksUpdateData] -> ShowS)
-> Show WebhooksUpdateData
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [WebhooksUpdateData] -> ShowS
$cshowList :: [WebhooksUpdateData] -> ShowS
show :: WebhooksUpdateData -> String
$cshow :: WebhooksUpdateData -> String
showsPrec :: Int -> WebhooksUpdateData -> ShowS
$cshowsPrec :: Int -> WebhooksUpdateData -> ShowS
Show, Rep WebhooksUpdateData x -> WebhooksUpdateData
WebhooksUpdateData -> Rep WebhooksUpdateData x
(forall x. WebhooksUpdateData -> Rep WebhooksUpdateData x)
-> (forall x. Rep WebhooksUpdateData x -> WebhooksUpdateData)
-> Generic WebhooksUpdateData
forall x. Rep WebhooksUpdateData x -> WebhooksUpdateData
forall x. WebhooksUpdateData -> Rep WebhooksUpdateData x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
to :: Rep WebhooksUpdateData x -> WebhooksUpdateData
$cto :: forall x. Rep WebhooksUpdateData x -> WebhooksUpdateData
from :: WebhooksUpdateData -> Rep WebhooksUpdateData x
$cfrom :: forall x. WebhooksUpdateData -> Rep WebhooksUpdateData x
Generic )
  deriving newtype ( [WebhooksUpdateData] -> Encoding
[WebhooksUpdateData] -> Value
WebhooksUpdateData -> Encoding
WebhooksUpdateData -> Value
(WebhooksUpdateData -> Value)
-> (WebhooksUpdateData -> Encoding)
-> ([WebhooksUpdateData] -> Value)
-> ([WebhooksUpdateData] -> Encoding)
-> ToJSON WebhooksUpdateData
forall a.
(a -> Value)
-> (a -> Encoding)
-> ([a] -> Value)
-> ([a] -> Encoding)
-> ToJSON a
toEncodingList :: [WebhooksUpdateData] -> Encoding
$ctoEncodingList :: [WebhooksUpdateData] -> Encoding
toJSONList :: [WebhooksUpdateData] -> Value
$ctoJSONList :: [WebhooksUpdateData] -> Value
toEncoding :: WebhooksUpdateData -> Encoding
$ctoEncoding :: WebhooksUpdateData -> Encoding
toJSON :: WebhooksUpdateData -> Value
$ctoJSON :: WebhooksUpdateData -> Value
ToJSON, Value -> Parser [WebhooksUpdateData]
Value -> Parser WebhooksUpdateData
(Value -> Parser WebhooksUpdateData)
-> (Value -> Parser [WebhooksUpdateData])
-> FromJSON WebhooksUpdateData
forall a.
(Value -> Parser a) -> (Value -> Parser [a]) -> FromJSON a
parseJSONList :: Value -> Parser [WebhooksUpdateData]
$cparseJSONList :: Value -> Parser [WebhooksUpdateData]
parseJSON :: Value -> Parser WebhooksUpdateData
$cparseJSON :: Value -> Parser WebhooksUpdateData
FromJSON )