// 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_CHANNELS
#define LQTG_FNC_CHANNELS

#include "telegramfunctionobject.h"
#include "telegram/types/inputchannel.h"
#include <QtGlobal>
#include "telegram/types/messagesaffectedmessages.h"
#include <QList>
#include "telegram/types/messagesaffectedhistory.h"
#include "telegram/types/inputuser.h"
#include "telegram/types/messagesmessages.h"
#include "telegram/types/channelschannelparticipants.h"
#include "telegram/types/channelparticipantsfilter.h"
#include "telegram/types/channelschannelparticipant.h"
#include "telegram/types/messageschats.h"
#include "telegram/types/messageschatfull.h"
#include "telegram/types/updatestype.h"
#include <QString>
#include "telegram/types/channeladminrights.h"
#include "telegram/types/inputchatphoto.h"
#include "telegram/types/exportedchatinvite.h"
#include "telegram/types/exportedmessagelink.h"
#include "telegram/types/channelbannedrights.h"
#include "telegram/types/channelsadminlogresults.h"
#include "telegram/types/channeladminlogeventsfilter.h"

namespace Tg {
namespace Functions {

class LIBQTELEGRAMSHARED_EXPORT Channels : public TelegramFunctionObject
{
public:
    enum ChannelsFunction {
        fncChannelsReadHistory = 0xcc104937,
        fncChannelsDeleteMessages = 0x84c1fd4e,
        fncChannelsDeleteUserHistory = 0xd10dd71b,
        fncChannelsReportSpam = 0xfe087810,
        fncChannelsGetMessages = 0x93d7b347,
        fncChannelsGetParticipants = 0x24d98f92,
        fncChannelsGetParticipant = 0x546dd7a6,
        fncChannelsGetChannels = 0xa7f6bbb,
        fncChannelsGetFullChannel = 0x8736a09,
        fncChannelsCreateChannel = 0xf4893d7f,
        fncChannelsEditAbout = 0x13e27f1e,
        fncChannelsEditAdmin = 0x20b88214,
        fncChannelsEditTitle = 0x566decd0,
        fncChannelsEditPhoto = 0xf12e57c9,
        fncChannelsCheckUsername = 0x10e6bd2c,
        fncChannelsUpdateUsername = 0x3514b3de,
        fncChannelsJoinChannel = 0x24b524c5,
        fncChannelsLeaveChannel = 0xf836aa95,
        fncChannelsInviteToChannel = 0x199f3a6c,
        fncChannelsExportInvite = 0xc7560885,
        fncChannelsDeleteChannel = 0xc0111fe3,
        fncChannelsToggleInvites = 0x49609307,
        fncChannelsExportMessageLink = 0xc846d22d,
        fncChannelsToggleSignatures = 0x1f69b606,
        fncChannelsUpdatePinnedMessage = 0xa72ded52,
        fncChannelsGetAdminedPublicChannels = 0x8d8d82d7,
        fncChannelsEditBanned = 0xbfd915cd,
        fncChannelsGetAdminLog = 0x33ddf480
    };

    Channels();
    virtual ~Channels();

    static bool readHistory(OutboundPkt *out, const InputChannel &channel, qint32 maxId);
    static bool readHistoryResult(InboundPkt *in);

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

    static bool deleteUserHistory(OutboundPkt *out, const InputChannel &channel, const InputUser &userId);
    static MessagesAffectedHistory deleteUserHistoryResult(InboundPkt *in);

    static bool reportSpam(OutboundPkt *out, const InputChannel &channel, const InputUser &userId, const QList<qint32> &id);
    static bool reportSpamResult(InboundPkt *in);

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

    static bool getParticipants(OutboundPkt *out, const InputChannel &channel, const ChannelParticipantsFilter &filter, qint32 offset, qint32 limit);
    static ChannelsChannelParticipants getParticipantsResult(InboundPkt *in);

    static bool getParticipant(OutboundPkt *out, const InputChannel &channel, const InputUser &userId);
    static ChannelsChannelParticipant getParticipantResult(InboundPkt *in);

    static bool getChannels(OutboundPkt *out, const QList<InputChannel> &id);
    static MessagesChats getChannelsResult(InboundPkt *in);

    static bool getFullChannel(OutboundPkt *out, const InputChannel &channel);
    static MessagesChatFull getFullChannelResult(InboundPkt *in);

    static bool createChannel(OutboundPkt *out, bool broadcast, bool megagroup, const QString &title, const QString &about);
    static UpdatesType createChannelResult(InboundPkt *in);

    static bool editAbout(OutboundPkt *out, const InputChannel &channel, const QString &about);
    static bool editAboutResult(InboundPkt *in);

    static bool editAdmin(OutboundPkt *out, const InputChannel &channel, const InputUser &userId, const ChannelAdminRights &adminRights);
    static UpdatesType editAdminResult(InboundPkt *in);

    static bool editTitle(OutboundPkt *out, const InputChannel &channel, const QString &title);
    static UpdatesType editTitleResult(InboundPkt *in);

    static bool editPhoto(OutboundPkt *out, const InputChannel &channel, const InputChatPhoto &photo);
    static UpdatesType editPhotoResult(InboundPkt *in);

    static bool checkUsername(OutboundPkt *out, const InputChannel &channel, const QString &username);
    static bool checkUsernameResult(InboundPkt *in);

    static bool updateUsername(OutboundPkt *out, const InputChannel &channel, const QString &username);
    static bool updateUsernameResult(InboundPkt *in);

    static bool joinChannel(OutboundPkt *out, const InputChannel &channel);
    static UpdatesType joinChannelResult(InboundPkt *in);

    static bool leaveChannel(OutboundPkt *out, const InputChannel &channel);
    static UpdatesType leaveChannelResult(InboundPkt *in);

    static bool inviteToChannel(OutboundPkt *out, const InputChannel &channel, const QList<InputUser> &users);
    static UpdatesType inviteToChannelResult(InboundPkt *in);

    static bool exportInvite(OutboundPkt *out, const InputChannel &channel);
    static ExportedChatInvite exportInviteResult(InboundPkt *in);

    static bool deleteChannel(OutboundPkt *out, const InputChannel &channel);
    static UpdatesType deleteChannelResult(InboundPkt *in);

    static bool toggleInvites(OutboundPkt *out, const InputChannel &channel, bool enabled);
    static UpdatesType toggleInvitesResult(InboundPkt *in);

    static bool exportMessageLink(OutboundPkt *out, const InputChannel &channel, qint32 id);
    static ExportedMessageLink exportMessageLinkResult(InboundPkt *in);

    static bool toggleSignatures(OutboundPkt *out, const InputChannel &channel, bool enabled);
    static UpdatesType toggleSignaturesResult(InboundPkt *in);

    static bool updatePinnedMessage(OutboundPkt *out, bool silent, const InputChannel &channel, qint32 id);
    static UpdatesType updatePinnedMessageResult(InboundPkt *in);

    static bool getAdminedPublicChannels(OutboundPkt *out);
    static MessagesChats getAdminedPublicChannelsResult(InboundPkt *in);

    static bool editBanned(OutboundPkt *out, const InputChannel &channel, const InputUser &userId, const ChannelBannedRights &bannedRights);
    static UpdatesType editBannedResult(InboundPkt *in);

    static bool getAdminLog(OutboundPkt *out, const InputChannel &channel, const QString &q, const ChannelAdminLogEventsFilter &eventsFilter, const QList<InputUser> &admins, qint64 maxId, qint64 minId, qint32 limit);
    static ChannelsAdminLogResults getAdminLogResult(InboundPkt *in);

};

}
}

#endif // LQTG_FNC_CHANNELS
