// 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_GEOCHATS
#define LQTG_FNC_GEOCHATS

#include "telegramfunctionobject.h"
#include "telegram/types/geochatslocated.h"
#include "telegram/types/inputgeopoint.h"
#include <QtGlobal>
#include "telegram/types/geochatsmessages.h"
#include "telegram/types/geochatsstatedmessage.h"
#include "telegram/types/inputgeochat.h"
#include "telegram/types/messageschatfull.h"
#include <QString>
#include "telegram/types/inputchatphoto.h"
#include "telegram/types/messagesfilter.h"
#include "telegram/types/inputmedia.h"

namespace Tg {
namespace Functions {

class LIBQTELEGRAMSHARED_EXPORT Geochats : public TelegramFunctionObject
{
public:
    enum GeochatsFunction {
        fncGeochatsGetLocated = 0x7f192d8f,
        fncGeochatsGetRecents = 0xe1427e6f,
        fncGeochatsCheckin = 0x55b3e8fb,
        fncGeochatsGetFullChat = 0x6722dd6f,
        fncGeochatsEditChatTitle = 0x4c8e2273,
        fncGeochatsEditChatPhoto = 0x35d81a95,
        fncGeochatsSearch = 0xcfcdc44d,
        fncGeochatsGetHistory = 0xb53f7a68,
        fncGeochatsSetTyping = 0x8b8a729,
        fncGeochatsSendMessage = 0x61b0044,
        fncGeochatsSendMedia = 0xb8f0deff,
        fncGeochatsCreateGeoChat = 0xe092e16
    };

    Geochats();
    virtual ~Geochats();

    static bool getLocated(OutboundPkt *out, const InputGeoPoint &geoPoint, qint32 radius, qint32 limit);
    static GeochatsLocated getLocatedResult(InboundPkt *in);

    static bool getRecents(OutboundPkt *out, qint32 offset, qint32 limit);
    static GeochatsMessages getRecentsResult(InboundPkt *in);

    static bool checkin(OutboundPkt *out, const InputGeoChat &peer);
    static GeochatsStatedMessage checkinResult(InboundPkt *in);

    static bool getFullChat(OutboundPkt *out, const InputGeoChat &peer);
    static MessagesChatFull getFullChatResult(InboundPkt *in);

    static bool editChatTitle(OutboundPkt *out, const InputGeoChat &peer, const QString &title, const QString &address);
    static GeochatsStatedMessage editChatTitleResult(InboundPkt *in);

    static bool editChatPhoto(OutboundPkt *out, const InputGeoChat &peer, const InputChatPhoto &photo);
    static GeochatsStatedMessage editChatPhotoResult(InboundPkt *in);

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

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

    static bool setTyping(OutboundPkt *out, const InputGeoChat &peer, bool typing);
    static bool setTypingResult(InboundPkt *in);

    static bool sendMessage(OutboundPkt *out, const InputGeoChat &peer, const QString &message, qint64 randomId);
    static GeochatsStatedMessage sendMessageResult(InboundPkt *in);

    static bool sendMedia(OutboundPkt *out, const InputGeoChat &peer, const InputMedia &media, qint64 randomId);
    static GeochatsStatedMessage sendMediaResult(InboundPkt *in);

    static bool createGeoChat(OutboundPkt *out, const QString &title, const InputGeoPoint &geoPoint, const QString &address, const QString &venue);
    static GeochatsStatedMessage createGeoChatResult(InboundPkt *in);

};

}
}

#endif // LQTG_FNC_GEOCHATS
