# frozen_string_literal: true

module Telegram
  module Bot
    class Api
      ENDPOINTS = {
        'getUpdates' => Types::Array.of(Types::Update),
        'setWebhook' => Types::Bool,
        'deleteWebhook' => Types::Bool,
        'getWebhookInfo' => Types::WebhookInfo,
        'getMe' => Types::User,
        'sendMessage' => Types::Message,
        'forwardMessage' => Types::Message,
        'forwardMessages' => Types::Array.of(Types::MessageId),
        'sendPhoto' => Types::Message,
        'sendAudio' => Types::Message,
        'sendDocument' => Types::Message,
        'sendVideo' => Types::Message,
        'sendVoice' => Types::Message,
        'sendVideoNote' => Types::Message,
        'sendMediaGroup' => Types::Array.of(Types::Message),
        'sendLocation' => Types::Message,
        'editMessageLiveLocation' => Types::Message | Types::Bool,
        'stopMessageLiveLocation' => Types::Message | Types::Bool,
        'sendVenue' => Types::Message,
        'sendContact' => Types::Message,
        'sendChatAction' => Types::Bool,
        'setMessageReaction' => Types::Bool,
        'getUserProfilePhotos' => Types::UserProfilePhotos,
        'getFile' => Types::File,
        'banChatMember' => Types::Bool,
        'unbanChatMember' => Types::Bool,
        'restrictChatMember' => Types::Bool,
        'promoteChatMember' => Types::Bool,
        'leaveChat' => Types::Bool,
        'getChat' => Types::ChatFullInfo,
        'getChatAdministrators' => Types::Array.of(Types::ChatMember),
        'exportChatInviteLink' => Types::String,
        'setChatPhoto' => Types::Bool,
        'deleteChatPhoto' => Types::Bool,
        'setChatTitle' => Types::Bool,
        'setChatDescription' => Types::Bool,
        'pinChatMessage' => Types::Bool,
        'unpinChatMessage' => Types::Bool,
        'getChatMembersCount' => Types::Integer,
        'getChatMember' => Types::ChatMember,
        'setChatStickerSet' => Types::Bool,
        'deleteChatStickerSet' => Types::Bool,
        'answerCallbackQuery' => Types::Bool,
        'getUserChatBoosts' => Types::UserChatBoosts,
        'editMessageText' => Types::Message | Types::Bool,
        'editMessageCaption' => Types::Message | Types::Bool,
        'editMessageReplyMarkup' => Types::Message | Types::Bool,
        'deleteMessage' => Types::Bool,
        'deleteMessages' => Types::Bool,
        'sendSticker' => Types::Message,
        'getStickerSet' => Types::StickerSet,
        'uploadStickerFile' => Types::File,
        'createNewStickerSet' => Types::Bool,
        'addStickerToSet' => Types::Bool,
        'setStickerPositionInSet' => Types::Bool,
        'deleteStickerFromSet' => Types::Bool,
        'answerInlineQuery' => Types::Bool,
        'sendInvoice' => Types::Message,
        'answerShippingQuery' => Types::Bool,
        'answerPreCheckoutQuery' => Types::Bool,
        'sendGame' => Types::Message,
        'setGameScore' => Types::Message | Types::Bool,
        'getGameHighScores' => Types::Array.of(Types::GameHighScore),
        'setPassportDataErrors' => Types::Bool,
        'editMessageMedia' => Types::Message | Types::Bool,
        'sendAnimation' => Types::Message,
        'sendPoll' => Types::Message,
        'stopPoll' => Types::Poll,
        'setChatPermissions' => Types::Bool,
        'setChatAdministratorCustomTitle' => Types::Bool,
        'sendDice' => Types::Message,
        'getMyCommands' => Types::Array.of(Types::BotCommand),
        'setMyCommands' => Types::Bool,
        'deleteMyCommands' => Types::Bool,
        'setStickerSetThumbnail' => Types::Bool,
        'logOut' => Types::Bool,
        'close' => Types::Bool,
        'copyMessage' => Types::MessageId,
        'copyMessages' => Types::Array.of(Types::MessageId),
        'createChatInviteLink' => Types::ChatInviteLink,
        'editChatInviteLink' => Types::ChatInviteLink,
        'revokeChatInviteLink' => Types::ChatInviteLink,
        'approveChatJoinRequest' => Types::Bool,
        'declineChatJoinRequest' => Types::Bool,
        'banChatSenderChat' => Types::Bool,
        'unbanChatSenderChat' => Types::Bool,
        'answerWebAppQuery' => Types::SentWebAppMessage,
        'setChatMenuButton' => Types::Bool,
        'getChatMenuButton' => Types::MenuButtonDefault | Types::MenuButtonCommands | Types::MenuButtonWebApp,
        'setMyDefaultAdministratorRights' => Types::Bool,
        'getMyDefaultAdministratorRights' => Types::ChatAdministratorRights,
        'createInvoiceLink' => Types::String,
        'editGeneralForumTopic' => Types::Bool,
        'closeGeneralForumTopic' => Types::Bool,
        'reopenGeneralForumTopic' => Types::Bool,
        'hideGeneralForumTopic' => Types::Bool,
        'unhideGeneralForumTopic' => Types::Bool,
        'unpinAllGeneralForumTopicMessages' => Types::Bool,
        'setMyName' => Types::Bool,
        'getMyName' => Types::BotName,
        'setMyDescription' => Types::Bool,
        'getMyDescription' => Types::BotDescription,
        'setMyShortDescription' => Types::Bool,
        'getMyShortDescription' => Types::BotShortDescription,
        'refundStarPayment' => Types::Bool,
        'getStarTransactions' => Types::StarTransactions,
        'sendPaidMedia' => Types::Message,
        'createChatSubscriptionInviteLink' => Types::ChatInviteLink,
        'editChatSubscriptionInviteLink' => Types::ChatInviteLink,
        'getAvailableGifts' => Types::Gifts,
        'sendGift' => Types::Bool,
        'savePreparedInlineMessage' => Types::PreparedInlineMessage,
        'editUserStarSubscription' => Types::Bool,
        'setUserEmojiStatus' => Types::Bool,
        'verifyUser' => Types::Bool,
        'verifyChat' => Types::Bool,
        'removeUserVerification' => Types::Bool,
        'removeChatVerification' => Types::Bool
      }.freeze
    end
  end
end
