// This file generated by libqtelegram-code-generator.
// You can download it from: https://github.com/Aseman-Land/libqtelegram-code-generator
// DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN

#ifndef LQTG_FNC_MESSAGES
#define LQTG_FNC_MESSAGES

#include "telegramfunctionobject.h"
#include "telegram/types/messagesmessages.h"
#include <QList>
#include <QtGlobal>
#include "telegram/types/messagesdialogs.h"
#include "telegram/types/inputpeer.h"
#include <QString>
#include "telegram/types/inputuser.h"
#include "telegram/types/messagesfilter.h"
#include "telegram/types/messagesaffectedmessages.h"
#include "telegram/types/messagesaffectedhistory.h"
#include "telegram/types/receivednotifymessage.h"
#include "telegram/types/sendmessageaction.h"
#include "telegram/types/updatestype.h"
#include "telegram/types/replymarkup.h"
#include "telegram/types/messageentity.h"
#include "telegram/types/inputmedia.h"
#include "telegram/types/peersettings.h"
#include "telegram/types/messageschats.h"
#include "telegram/types/messageschatfull.h"
#include "telegram/types/inputchatphoto.h"
#include "telegram/types/messagesdhconfig.h"
#include "telegram/types/encryptedchat.h"
#include <QByteArray>
#include "telegram/types/inputencryptedchat.h"
#include "telegram/types/messagessentencryptedmessage.h"
#include "telegram/types/inputencryptedfile.h"
#include "telegram/types/messagesallstickers.h"
#include "telegram/types/messagemedia.h"
#include "telegram/types/exportedchatinvite.h"
#include "telegram/types/chatinvite.h"
#include "telegram/types/messagesstickerset.h"
#include "telegram/types/inputstickerset.h"
#include "telegram/types/messagesstickersetinstallresult.h"
#include "telegram/types/document.h"
#include "telegram/types/messagesfoundgifs.h"
#include "telegram/types/messagessavedgifs.h"
#include "telegram/types/inputdocument.h"
#include "telegram/types/messagesbotresults.h"
#include "telegram/types/inputgeopoint.h"
#include "telegram/types/inputbotinlineresult.h"
#include "telegram/types/inlinebotswitchpm.h"
#include "telegram/types/messagesmessageeditdata.h"
#include "telegram/types/inputbotinlinemessageid.h"
#include "telegram/types/messagesbotcallbackanswer.h"
#include "telegram/types/messagespeerdialogs.h"
#include "telegram/types/messagesfeaturedstickers.h"
#include "telegram/types/messagesrecentstickers.h"
#include "telegram/types/messagesarchivedstickers.h"
#include "telegram/types/stickersetcovered.h"
#include "telegram/types/inputstickeredmedia.h"
#include "telegram/types/messageshighscores.h"
#include "telegram/types/webpage.h"
#include "telegram/types/shippingoption.h"

namespace Tg {
namespace Functions {

class LIBQTELEGRAMSHARED_EXPORT Messages : public TelegramFunctionObject
{
public:
    enum MessagesFunction {
        fncMessagesGetMessages = 0x4222fa74,
        fncMessagesGetDialogs = 0x191ba9c5,
        fncMessagesGetHistory = 0xafa92846,
        fncMessagesSearch = 0xf288a275,
        fncMessagesReadHistory = 0xe306d3a,
        fncMessagesDeleteHistory = 0x1c015b09,
        fncMessagesDeleteMessages = 0xe58e95d2,
        fncMessagesReceivedMessages = 0x5a954c0,
        fncMessagesSetTyping = 0xa3825e50,
        fncMessagesSendMessage = 0xfa88427a,
        fncMessagesSendMedia = 0xc8f16791,
        fncMessagesForwardMessages = 0x708e0195,
        fncMessagesReportSpam = 0xcf1592db,
        fncMessagesHideReportSpam = 0xa8f1709b,
        fncMessagesGetPeerSettings = 0x3672e09c,
        fncMessagesGetChats = 0x3c6aa187,
        fncMessagesGetFullChat = 0x3b831c66,
        fncMessagesEditChatTitle = 0xdc452855,
        fncMessagesEditChatPhoto = 0xca4c79d8,
        fncMessagesAddChatUser = 0xf9a0aa09,
        fncMessagesDeleteChatUser = 0xe0611f16,
        fncMessagesCreateChat = 0x9cb126e,
        fncMessagesForwardMessage = 0x33963bf9,
        fncMessagesGetDhConfig = 0x26cf8950,
        fncMessagesRequestEncryption = 0xf64daf43,
        fncMessagesAcceptEncryption = 0x3dbc0415,
        fncMessagesDiscardEncryption = 0xedd923c5,
        fncMessagesSetEncryptedTyping = 0x791451ed,
        fncMessagesReadEncryptedHistory = 0x7f4b690a,
        fncMessagesSendEncrypted = 0xa9776773,
        fncMessagesSendEncryptedFile = 0x9a901b66,
        fncMessagesSendEncryptedService = 0x32d439a4,
        fncMessagesReceivedQueue = 0x55a5bb66,
        fncMessagesReportEncryptedSpam = 0x4b0c8c0f,
        fncMessagesReadMessageContents = 0x36a73f77,
        fncMessagesGetAllStickers = 0x1c9618b1,
        fncMessagesGetWebPagePreview = 0x25223e24,
        fncMessagesExportChatInvite = 0x7d885289,
        fncMessagesCheckChatInvite = 0x3eadb1bb,
        fncMessagesImportChatInvite = 0x6c50051c,
        fncMessagesGetStickerSet = 0x2619a90e,
        fncMessagesInstallStickerSet = 0xc78fe460,
        fncMessagesUninstallStickerSet = 0xf96e55de,
        fncMessagesStartBot = 0xe6df7378,
        fncMessagesGetMessagesViews = 0xc4c8a55d,
        fncMessagesToggleChatAdmins = 0xec8bd9e1,
        fncMessagesEditChatAdmin = 0xa9e69f2e,
        fncMessagesMigrateChat = 0x15a3b8e3,
        fncMessagesSearchGlobal = 0x9e3cacb0,
        fncMessagesReorderStickerSets = 0x78337739,
        fncMessagesGetDocumentByHash = 0x338e2464,
        fncMessagesSearchGifs = 0xbf9a776b,
        fncMessagesGetSavedGifs = 0x83bf3d52,
        fncMessagesSaveGif = 0x327a30cb,
        fncMessagesGetInlineBotResults = 0x514e999d,
        fncMessagesSetInlineBotResults = 0xeb5ea206,
        fncMessagesSendInlineBotResult = 0xb16e06fe,
        fncMessagesGetMessageEditData = 0xfda68d36,
        fncMessagesEditMessage = 0xce91e4ca,
        fncMessagesEditInlineBotMessage = 0x130c2c85,
        fncMessagesGetBotCallbackAnswer = 0x810a9fec,
        fncMessagesSetBotCallbackAnswer = 0xd58f130a,
        fncMessagesGetPeerDialogs = 0x2d9776b9,
        fncMessagesSaveDraft = 0xbc39e14b,
        fncMessagesGetAllDrafts = 0x6a3f8d65,
        fncMessagesGetFeaturedStickers = 0x2dacca4f,
        fncMessagesReadFeaturedStickers = 0x5b118126,
        fncMessagesGetRecentStickers = 0x5ea192c9,
        fncMessagesSaveRecentSticker = 0x392718f8,
        fncMessagesClearRecentStickers = 0x8999602d,
        fncMessagesGetArchivedStickers = 0x57f17692,
        fncMessagesGetMaskStickers = 0x65b8c79f,
        fncMessagesGetAttachedStickers = 0xcc5b67cc,
        fncMessagesSetGameScore = 0x8ef8ecc0,
        fncMessagesSetInlineGameScore = 0x15ad9f64,
        fncMessagesGetGameHighScores = 0xe822649d,
        fncMessagesGetInlineGameHighScores = 0xf635e1b,
        fncMessagesGetCommonChats = 0xd0a48c4,
        fncMessagesGetAllChats = 0xeba80ff0,
        fncMessagesGetWebPage = 0x32ca8f91,
        fncMessagesToggleDialogPin = 0x3289be6a,
        fncMessagesReorderPinnedDialogs = 0x959ff644,
        fncMessagesGetPinnedDialogs = 0xe254d64e,
        fncMessagesSetBotShippingResults = 0xe5f672fa,
        fncMessagesSetBotPrecheckoutResults = 0x9c2dd95,
        fncMessagesUploadMedia = 0x519bc2b1
    };

    Messages();
    virtual ~Messages();

    static bool getMessages(OutboundPkt *out, const QList<qint32> &id);
    static MessagesMessages getMessagesResult(InboundPkt *in);

    static bool getDialogs(OutboundPkt *out, bool excludePinned, qint32 offsetDate, qint32 offsetId, const InputPeer &offsetPeer, qint32 limit);
    static MessagesDialogs getDialogsResult(InboundPkt *in);

    static bool getHistory(OutboundPkt *out, const InputPeer &peer, qint32 offsetId, qint32 offsetDate, qint32 addOffset, qint32 limit, qint32 maxId, qint32 minId);
    static MessagesMessages getHistoryResult(InboundPkt *in);

    static bool search(OutboundPkt *out, const InputPeer &peer, const QString &q, const InputUser &fromId, const MessagesFilter &filter, qint32 minDate, qint32 maxDate, qint32 offset, qint32 maxId, qint32 limit);
    static MessagesMessages searchResult(InboundPkt *in);

    static bool readHistory(OutboundPkt *out, const InputPeer &peer, qint32 maxId);
    static MessagesAffectedMessages readHistoryResult(InboundPkt *in);

    static bool deleteHistory(OutboundPkt *out, bool justClear, const InputPeer &peer, qint32 maxId);
    static MessagesAffectedHistory deleteHistoryResult(InboundPkt *in);

    static bool deleteMessages(OutboundPkt *out, bool revoke, const QList<qint32> &id);
    static MessagesAffectedMessages deleteMessagesResult(InboundPkt *in);

    static bool receivedMessages(OutboundPkt *out, qint32 maxId);
    static QList<ReceivedNotifyMessage> receivedMessagesResult(InboundPkt *in);

    static bool setTyping(OutboundPkt *out, const InputPeer &peer, const SendMessageAction &action);
    static bool setTypingResult(InboundPkt *in);

    static bool sendMessage(OutboundPkt *out, bool noWebpage, bool silent, bool background, bool clearDraft, const InputPeer &peer, qint32 replyToMsgId, const QString &message, qint64 randomId, const ReplyMarkup &replyMarkup, const QList<MessageEntity> &entities);
    static UpdatesType sendMessageResult(InboundPkt *in);

    static bool sendMedia(OutboundPkt *out, bool silent, bool background, bool clearDraft, const InputPeer &peer, qint32 replyToMsgId, const InputMedia &media, qint64 randomId, const ReplyMarkup &replyMarkup);
    static UpdatesType sendMediaResult(InboundPkt *in);

    static bool forwardMessages(OutboundPkt *out, bool silent, bool background, bool withMyScore, const InputPeer &fromPeer, const QList<qint32> &id, const QList<qint64> &randomId, const InputPeer &toPeer);
    static UpdatesType forwardMessagesResult(InboundPkt *in);

    static bool reportSpam(OutboundPkt *out, const InputPeer &peer);
    static bool reportSpamResult(InboundPkt *in);

    static bool hideReportSpam(OutboundPkt *out, const InputPeer &peer);
    static bool hideReportSpamResult(InboundPkt *in);

    static bool getPeerSettings(OutboundPkt *out, const InputPeer &peer);
    static PeerSettings getPeerSettingsResult(InboundPkt *in);

    static bool getChats(OutboundPkt *out, const QList<qint32> &id);
    static MessagesChats getChatsResult(InboundPkt *in);

    static bool getFullChat(OutboundPkt *out, qint32 chatId);
    static MessagesChatFull getFullChatResult(InboundPkt *in);

    static bool editChatTitle(OutboundPkt *out, qint32 chatId, const QString &title);
    static UpdatesType editChatTitleResult(InboundPkt *in);

    static bool editChatPhoto(OutboundPkt *out, qint32 chatId, const InputChatPhoto &photo);
    static UpdatesType editChatPhotoResult(InboundPkt *in);

    static bool addChatUser(OutboundPkt *out, qint32 chatId, const InputUser &userId, qint32 fwdLimit);
    static UpdatesType addChatUserResult(InboundPkt *in);

    static bool deleteChatUser(OutboundPkt *out, qint32 chatId, const InputUser &userId);
    static UpdatesType deleteChatUserResult(InboundPkt *in);

    static bool createChat(OutboundPkt *out, const QList<InputUser> &users, const QString &title);
    static UpdatesType createChatResult(InboundPkt *in);

    static bool forwardMessage(OutboundPkt *out, const InputPeer &peer, qint32 id, qint64 randomId);
    static UpdatesType forwardMessageResult(InboundPkt *in);

    static bool getDhConfig(OutboundPkt *out, qint32 version, qint32 randomLength);
    static MessagesDhConfig getDhConfigResult(InboundPkt *in);

    static bool requestEncryption(OutboundPkt *out, const InputUser &userId, qint32 randomId, const QByteArray &gA);
    static EncryptedChat requestEncryptionResult(InboundPkt *in);

    static bool acceptEncryption(OutboundPkt *out, const InputEncryptedChat &peer, const QByteArray &gB, qint64 keyFingerprint);
    static EncryptedChat acceptEncryptionResult(InboundPkt *in);

    static bool discardEncryption(OutboundPkt *out, qint32 chatId);
    static bool discardEncryptionResult(InboundPkt *in);

    static bool setEncryptedTyping(OutboundPkt *out, const InputEncryptedChat &peer, bool typing);
    static bool setEncryptedTypingResult(InboundPkt *in);

    static bool readEncryptedHistory(OutboundPkt *out, const InputEncryptedChat &peer, qint32 maxDate);
    static bool readEncryptedHistoryResult(InboundPkt *in);

    static bool sendEncrypted(OutboundPkt *out, const InputEncryptedChat &peer, qint64 randomId, const QByteArray &data);
    static MessagesSentEncryptedMessage sendEncryptedResult(InboundPkt *in);

    static bool sendEncryptedFile(OutboundPkt *out, const InputEncryptedChat &peer, qint64 randomId, const QByteArray &data, const InputEncryptedFile &file);
    static MessagesSentEncryptedMessage sendEncryptedFileResult(InboundPkt *in);

    static bool sendEncryptedService(OutboundPkt *out, const InputEncryptedChat &peer, qint64 randomId, const QByteArray &data);
    static MessagesSentEncryptedMessage sendEncryptedServiceResult(InboundPkt *in);

    static bool receivedQueue(OutboundPkt *out, qint32 maxQts);
    static QList<qint64> receivedQueueResult(InboundPkt *in);

    static bool reportEncryptedSpam(OutboundPkt *out, const InputEncryptedChat &peer);
    static bool reportEncryptedSpamResult(InboundPkt *in);

    static bool readMessageContents(OutboundPkt *out, const QList<qint32> &id);
    static MessagesAffectedMessages readMessageContentsResult(InboundPkt *in);

    static bool getAllStickers(OutboundPkt *out, qint32 hash);
    static MessagesAllStickers getAllStickersResult(InboundPkt *in);

    static bool getWebPagePreview(OutboundPkt *out, const QString &message);
    static MessageMedia getWebPagePreviewResult(InboundPkt *in);

    static bool exportChatInvite(OutboundPkt *out, qint32 chatId);
    static ExportedChatInvite exportChatInviteResult(InboundPkt *in);

    static bool checkChatInvite(OutboundPkt *out, const QString &hash);
    static ChatInvite checkChatInviteResult(InboundPkt *in);

    static bool importChatInvite(OutboundPkt *out, const QString &hash);
    static UpdatesType importChatInviteResult(InboundPkt *in);

    static bool getStickerSet(OutboundPkt *out, const InputStickerSet &stickerset);
    static MessagesStickerSet getStickerSetResult(InboundPkt *in);

    static bool installStickerSet(OutboundPkt *out, const InputStickerSet &stickerset, bool archived);
    static MessagesStickerSetInstallResult installStickerSetResult(InboundPkt *in);

    static bool uninstallStickerSet(OutboundPkt *out, const InputStickerSet &stickerset);
    static bool uninstallStickerSetResult(InboundPkt *in);

    static bool startBot(OutboundPkt *out, const InputUser &bot, const InputPeer &peer, qint64 randomId, const QString &startParam);
    static UpdatesType startBotResult(InboundPkt *in);

    static bool getMessagesViews(OutboundPkt *out, const InputPeer &peer, const QList<qint32> &id, bool increment);
    static QList<qint32> getMessagesViewsResult(InboundPkt *in);

    static bool toggleChatAdmins(OutboundPkt *out, qint32 chatId, bool enabled);
    static UpdatesType toggleChatAdminsResult(InboundPkt *in);

    static bool editChatAdmin(OutboundPkt *out, qint32 chatId, const InputUser &userId, bool isAdmin);
    static bool editChatAdminResult(InboundPkt *in);

    static bool migrateChat(OutboundPkt *out, qint32 chatId);
    static UpdatesType migrateChatResult(InboundPkt *in);

    static bool searchGlobal(OutboundPkt *out, const QString &q, qint32 offsetDate, const InputPeer &offsetPeer, qint32 offsetId, qint32 limit);
    static MessagesMessages searchGlobalResult(InboundPkt *in);

    static bool reorderStickerSets(OutboundPkt *out, bool masks, const QList<qint64> &order);
    static bool reorderStickerSetsResult(InboundPkt *in);

    static bool getDocumentByHash(OutboundPkt *out, const QByteArray &sha256, qint32 size, const QString &mimeType);
    static Document getDocumentByHashResult(InboundPkt *in);

    static bool searchGifs(OutboundPkt *out, const QString &q, qint32 offset);
    static MessagesFoundGifs searchGifsResult(InboundPkt *in);

    static bool getSavedGifs(OutboundPkt *out, qint32 hash);
    static MessagesSavedGifs getSavedGifsResult(InboundPkt *in);

    static bool saveGif(OutboundPkt *out, const InputDocument &id, bool unsave);
    static bool saveGifResult(InboundPkt *in);

    static bool getInlineBotResults(OutboundPkt *out, const InputUser &bot, const InputPeer &peer, const InputGeoPoint &geoPoint, const QString &query, const QString &offset);
    static MessagesBotResults getInlineBotResultsResult(InboundPkt *in);

    static bool setInlineBotResults(OutboundPkt *out, bool gallery, bool privateValue, qint64 queryId, const QList<InputBotInlineResult> &results, qint32 cacheTime, const QString &nextOffset, const InlineBotSwitchPM &switchPm);
    static bool setInlineBotResultsResult(InboundPkt *in);

    static bool sendInlineBotResult(OutboundPkt *out, bool silent, bool background, bool clearDraft, const InputPeer &peer, qint32 replyToMsgId, qint64 randomId, qint64 queryId, const QString &id);
    static UpdatesType sendInlineBotResultResult(InboundPkt *in);

    static bool getMessageEditData(OutboundPkt *out, const InputPeer &peer, qint32 id);
    static MessagesMessageEditData getMessageEditDataResult(InboundPkt *in);

    static bool editMessage(OutboundPkt *out, bool noWebpage, const InputPeer &peer, qint32 id, const QString &message, const ReplyMarkup &replyMarkup, const QList<MessageEntity> &entities);
    static UpdatesType editMessageResult(InboundPkt *in);

    static bool editInlineBotMessage(OutboundPkt *out, bool noWebpage, const InputBotInlineMessageID &id, const QString &message, const ReplyMarkup &replyMarkup, const QList<MessageEntity> &entities);
    static bool editInlineBotMessageResult(InboundPkt *in);

    static bool getBotCallbackAnswer(OutboundPkt *out, bool game, const InputPeer &peer, qint32 msgId, const QByteArray &data);
    static MessagesBotCallbackAnswer getBotCallbackAnswerResult(InboundPkt *in);

    static bool setBotCallbackAnswer(OutboundPkt *out, bool alert, qint64 queryId, const QString &message, const QString &url, qint32 cacheTime);
    static bool setBotCallbackAnswerResult(InboundPkt *in);

    static bool getPeerDialogs(OutboundPkt *out, const QList<InputPeer> &peers);
    static MessagesPeerDialogs getPeerDialogsResult(InboundPkt *in);

    static bool saveDraft(OutboundPkt *out, bool noWebpage, qint32 replyToMsgId, const InputPeer &peer, const QString &message, const QList<MessageEntity> &entities);
    static bool saveDraftResult(InboundPkt *in);

    static bool getAllDrafts(OutboundPkt *out);
    static UpdatesType getAllDraftsResult(InboundPkt *in);

    static bool getFeaturedStickers(OutboundPkt *out, qint32 hash);
    static MessagesFeaturedStickers getFeaturedStickersResult(InboundPkt *in);

    static bool readFeaturedStickers(OutboundPkt *out, const QList<qint64> &id);
    static bool readFeaturedStickersResult(InboundPkt *in);

    static bool getRecentStickers(OutboundPkt *out, bool attached, qint32 hash);
    static MessagesRecentStickers getRecentStickersResult(InboundPkt *in);

    static bool saveRecentSticker(OutboundPkt *out, bool attached, const InputDocument &id, bool unsave);
    static bool saveRecentStickerResult(InboundPkt *in);

    static bool clearRecentStickers(OutboundPkt *out, bool attached);
    static bool clearRecentStickersResult(InboundPkt *in);

    static bool getArchivedStickers(OutboundPkt *out, bool masks, qint64 offsetId, qint32 limit);
    static MessagesArchivedStickers getArchivedStickersResult(InboundPkt *in);

    static bool getMaskStickers(OutboundPkt *out, qint32 hash);
    static MessagesAllStickers getMaskStickersResult(InboundPkt *in);

    static bool getAttachedStickers(OutboundPkt *out, const InputStickeredMedia &media);
    static QList<StickerSetCovered> getAttachedStickersResult(InboundPkt *in);

    static bool setGameScore(OutboundPkt *out, bool editMessage, bool force, const InputPeer &peer, qint32 id, const InputUser &userId, qint32 score);
    static UpdatesType setGameScoreResult(InboundPkt *in);

    static bool setInlineGameScore(OutboundPkt *out, bool editMessage, bool force, const InputBotInlineMessageID &id, const InputUser &userId, qint32 score);
    static bool setInlineGameScoreResult(InboundPkt *in);

    static bool getGameHighScores(OutboundPkt *out, const InputPeer &peer, qint32 id, const InputUser &userId);
    static MessagesHighScores getGameHighScoresResult(InboundPkt *in);

    static bool getInlineGameHighScores(OutboundPkt *out, const InputBotInlineMessageID &id, const InputUser &userId);
    static MessagesHighScores getInlineGameHighScoresResult(InboundPkt *in);

    static bool getCommonChats(OutboundPkt *out, const InputUser &userId, qint32 maxId, qint32 limit);
    static MessagesChats getCommonChatsResult(InboundPkt *in);

    static bool getAllChats(OutboundPkt *out, const QList<qint32> &exceptIds);
    static MessagesChats getAllChatsResult(InboundPkt *in);

    static bool getWebPage(OutboundPkt *out, const QString &url, qint32 hash);
    static WebPage getWebPageResult(InboundPkt *in);

    static bool toggleDialogPin(OutboundPkt *out, bool pinned, const InputPeer &peer);
    static bool toggleDialogPinResult(InboundPkt *in);

    static bool reorderPinnedDialogs(OutboundPkt *out, bool force, const QList<InputPeer> &order);
    static bool reorderPinnedDialogsResult(InboundPkt *in);

    static bool getPinnedDialogs(OutboundPkt *out);
    static MessagesPeerDialogs getPinnedDialogsResult(InboundPkt *in);

    static bool setBotShippingResults(OutboundPkt *out, qint64 queryId, const QString &error, const QList<ShippingOption> &shippingOptions);
    static bool setBotShippingResultsResult(InboundPkt *in);

    static bool setBotPrecheckoutResults(OutboundPkt *out, bool success, qint64 queryId, const QString &error);
    static bool setBotPrecheckoutResultsResult(InboundPkt *in);

    static bool uploadMedia(OutboundPkt *out, const InputPeer &peer, const InputMedia &media);
    static MessageMedia uploadMediaResult(InboundPkt *in);

};

}
}

#endif // LQTG_FNC_MESSAGES
