{-# LANGUAGE DeriveAnyClass #-} {-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE DerivingVia #-} {-# LANGUAGE DuplicateRecordFields #-} module Web.Telegram.Types.Internal.Sticker where import Data.Text (Text) import Deriving.Aeson import Servant.API import Web.Telegram.Types.Internal.Media import Web.Telegram.Types.Internal.Utils data Sticker = Sticker { fileId :: Text, fileUniqueId :: Text, width :: Int, height :: Int, isAnimated :: Bool, thumb :: Maybe PhotoSize, emoji :: Maybe Text, setName :: Maybe Text, maskPosition :: Maybe MaskPosition, fileSize :: Maybe Int } deriving (Show, Eq, Generic, Default) deriving (FromJSON, ToJSON) via Snake Sticker deriving (ToHttpApiData) via Serialize Sticker data StickerSet = StickerSet { name :: Text, title :: Text, isAnimated :: Bool, containsMasks :: Bool, stickers :: [Sticker] } deriving (Show, Eq, Generic, Default) deriving (FromJSON, ToJSON) via Snake StickerSet deriving (ToHttpApiData) via Serialize StickerSet data MaskPosition = MaskPosition { point :: Text, xShift :: Float, yShift :: Float, scale :: Float } deriving (Show, Eq, Generic, Default) deriving (FromJSON, ToJSON) via Snake MaskPosition deriving (ToHttpApiData) via Serialize MaskPosition