// 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/messagesfilter.h"
#include "telegram/types/messagesaffectedhistory.h"
#include "telegram/types/messagesaffectedmessages.h"
#include "telegram/types/receivednotifymessage.h"
#include "telegram/types/sendmessageaction.h"
#include "telegram/types/messagessentmessage.h"
#include "telegram/types/updatestype.h"
#include "telegram/types/inputmedia.h"
#include "telegram/types/messageschats.h"
#include "telegram/types/messageschatfull.h"
#include "telegram/types/inputchatphoto.h"
#include "telegram/types/inputuser.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/messagesstickers.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"

namespace Tg {
namespace Functions {

class LIBQTELEGRAMSHARED_EXPORT Messages : public TelegramFunctionObject
{
public:
    enum MessagesFunction {
        fncMessagesGetMessages = 0x4222fa74,
        fncMessagesGetDialogs = 0xeccf1df6,
        fncMessagesGetHistory = 0x92a1df2f,
        fncMessagesSearch = 0x7e9f2ab,
        fncMessagesReadHistory = 0xb04f2510,
        fncMessagesDeleteHistory = 0xf4f8fb61,
        fncMessagesDeleteMessages = 0xa5f18925,
        fncMessagesReceivedMessages = 0x5a954c0,
        fncMessagesSetTyping = 0xa3825e50,
        fncMessagesSendMessage = 0x9add8f26,
        fncMessagesSendMedia = 0x2d7923b1,
        fncMessagesForwardMessages = 0x55e1728d,
        fncMessagesGetChats = 0x3c6aa187,
        fncMessagesGetFullChat = 0x3b831c66,
        fncMessagesEditChatTitle = 0xdc452855,
        fncMessagesEditChatPhoto = 0xca4c79d8,
        fncMessagesAddChatUser = 0xf9a0aa09,
        fncMessagesDeleteChatUser = 0xe0611f16,
        fncMessagesCreateChat = 0x9cb126e,
        fncMessagesForwardMessage = 0x33963bf9,
        fncMessagesSendBroadcast = 0xbf73f4da,
        fncMessagesGetDhConfig = 0x26cf8950,
        fncMessagesRequestEncryption = 0xf64daf43,
        fncMessagesAcceptEncryption = 0x3dbc0415,
        fncMessagesDiscardEncryption = 0xedd923c5,
        fncMessagesSetEncryptedTyping = 0x791451ed,
        fncMessagesReadEncryptedHistory = 0x7f4b690a,
        fncMessagesSendEncrypted = 0xa9776773,
        fncMessagesSendEncryptedFile = 0x9a901b66,
        fncMessagesSendEncryptedService = 0x32d439a4,
        fncMessagesReceivedQueue = 0x55a5bb66,
        fncMessagesReadMessageContents = 0x36a73f77,
        fncMessagesGetStickers = 0xae22e045,
        fncMessagesGetAllStickers = 0xaa3bc868,
        fncMessagesGetWebPagePreview = 0x25223e24,
        fncMessagesExportChatInvite = 0x7d885289,
        fncMessagesCheckChatInvite = 0x3eadb1bb,
        fncMessagesImportChatInvite = 0x6c50051c,
        fncMessagesGetStickerSet = 0x2619a90e,
        fncMessagesInstallStickerSet = 0xefbbfae9,
        fncMessagesUninstallStickerSet = 0xf96e55de
    };

    Messages();
    virtual ~Messages();

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

    static bool getDialogs(OutboundPkt *out, qint32 offset, qint32 maxId, qint32 limit);
    static MessagesDialogs getDialogsResult(InboundPkt *in);

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

    static bool search(OutboundPkt *out, const InputPeer &peer, const QString &q, 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, qint32 offset);
    static MessagesAffectedHistory readHistoryResult(InboundPkt *in);

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

    static bool deleteMessages(OutboundPkt *out, 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, qint32 flags, const InputPeer &peer, qint32 replyToMsgId, const QString &message, qint64 randomId);
    static MessagesSentMessage sendMessageResult(InboundPkt *in);

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

    static bool forwardMessages(OutboundPkt *out, const InputPeer &peer, const QList<qint32> &id, const QList<qint64> &randomId);
    static UpdatesType forwardMessagesResult(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 sendBroadcast(OutboundPkt *out, const QList<InputUser> &contacts, const QList<qint64> &randomId, const QString &message, const InputMedia &media);
    static UpdatesType sendBroadcastResult(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 readMessageContents(OutboundPkt *out, const QList<qint32> &id);
    static MessagesAffectedMessages readMessageContentsResult(InboundPkt *in);

    static bool getStickers(OutboundPkt *out, const QString &emoticon, const QString &hash);
    static MessagesStickers getStickersResult(InboundPkt *in);

    static bool getAllStickers(OutboundPkt *out, const QString &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);
    static bool installStickerSetResult(InboundPkt *in);

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

};

}
}

#endif // LQTG_FNC_MESSAGES
