content: {-# LANGUAGE DeriveGeneric #-}
  module Telegram.Bot.API.Types.ExternalReplyInfo where
  
  import Data.Aeson (FromJSON (..), ToJSON (..))
  import GHC.Generics (Generic)
  
  import Telegram.Bot.API.Internal.Utils
  import Telegram.Bot.API.Types.Animation
  import Telegram.Bot.API.Types.Audio
  import Telegram.Bot.API.Types.Chat
  import Telegram.Bot.API.Types.Common
  import Telegram.Bot.API.Types.Contact
  import Telegram.Bot.API.Types.Dice
  import Telegram.Bot.API.Types.Game
  import Telegram.Bot.API.Types.Document
  import Telegram.Bot.API.Types.Invoice
  import Telegram.Bot.API.Types.Location
  import Telegram.Bot.API.Types.MessageOrigin
  import Telegram.Bot.API.Types.PhotoSize
  import Telegram.Bot.API.Types.Poll
  import Telegram.Bot.API.Types.Sticker
  import Telegram.Bot.API.Types.Story
  import Telegram.Bot.API.Types.Venue
  import Telegram.Bot.API.Types.Video
  import Telegram.Bot.API.Types.VideoNote
  import Telegram.Bot.API.Types.Voice
  
  
  -- ** 'ExternalReplyInfo'
  
  -- | This object contains information about a message that is being replied to, which may come from another chat or forum topic.
  data ExternalReplyInfo = ExternalReplyInfo
        { externalReplyInfoOrigin :: MessageOrigin -- ^ Origin of the message replied to by the given message.
        , externalReplyInfoChat :: Maybe Chat -- ^ Chat the original message belongs to. Available only if the chat is a supergroup or a channel.
        , externalReplyInfoMessageId :: Maybe MessageId -- ^ Unique message identifier inside the original chat. Available only if the original chat is a supergroup or a channel.
  
        -- , externalReplyInfoLinkPreviewsOptions
        , externalReplyInfoAnimation :: Maybe Animation -- ^ Message is an animation, information about the animation.
        , externalReplyInfoAudio :: Maybe Audio -- ^ Message is an audio file, information about the file.
        , externalReplyInfoDocument :: Maybe Document -- ^ Message is a general file, information about the file.
        , externalReplyInfoPhoto :: Maybe [PhotoSize] -- ^ Message is a photo, available sizes of the photo.
        , externalReplyInfoSticker :: Maybe Sticker -- ^ Message is a sticker, information about the sticker.
        , externalReplyInfoStory :: Maybe Story -- ^ Message is a forwarded story.
        , externalReplyInfoVideo :: Maybe Video -- ^ Message is a video, information about the video.
        , externalReplyInfoVideoNote :: Maybe VideoNote -- ^ Message is a video note, information about the video message
        , externalReplyInfoVoice :: Maybe Voice -- ^ Message is a voice message, information about the file
        , externalReplyInfoHasMediaSpoiler :: Maybe Bool -- ^ 'True', if the message media is covered by a spoiler animation.
        , externalReplyInfoContact :: Maybe Contact -- ^ Message is a shared contact, information about the contact.
        , externalReplyInfoDice :: Maybe Dice -- ^ Message is a dice with random value.
        , externalReplyInfoGame :: Maybe Game -- ^ Message is a game, information about the game.
  
        -- , externalReplyInfoGiveaway
        -- , externalReplyInfoGiveawayWinners
        , externalReplyInfoInvoice :: Maybe Invoice -- ^ Message is an invoice for a payment, information about the invoice.
        , externalReplyInfoLocation :: Maybe Location -- ^ Message is a shared location, information about the location.
        , externalReplyInfoPoll :: Maybe Poll -- ^ Message is a native poll, information about the poll.
        , externalReplyInfoVenue :: Maybe Venue -- ^ Message is a venue, information about the venue.
        }
    deriving (Generic, Show)
  
  instance ToJSON   ExternalReplyInfo where toJSON = gtoJSON
  instance FromJSON ExternalReplyInfo where parseJSON = gparseJSON
  