// 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_TYPE_MESSAGEACTION_OBJECT
#define LQTG_TYPE_MESSAGEACTION_OBJECT

#include "telegramtypeqobject.h"
#include "telegram/types/messageaction.h"

#include <QPointer>
#include "paymentchargeobject.h"
#include "paymentrequestedinfoobject.h"
#include "photoobject.h"
#include "phonecalldiscardreasonobject.h"

class LIBQTELEGRAMSHARED_EXPORT MessageActionObject : public TelegramTypeQObject
{
    Q_OBJECT
    Q_ENUMS(MessageActionClassType)
    Q_PROPERTY(qint64 callId READ callId WRITE setCallId NOTIFY callIdChanged)
    Q_PROPERTY(qint32 channelId READ channelId WRITE setChannelId NOTIFY channelIdChanged)
    Q_PROPERTY(PaymentChargeObject* charge READ charge WRITE setCharge NOTIFY chargeChanged)
    Q_PROPERTY(qint32 chatId READ chatId WRITE setChatId NOTIFY chatIdChanged)
    Q_PROPERTY(QString currency READ currency WRITE setCurrency NOTIFY currencyChanged)
    Q_PROPERTY(qint32 duration READ duration WRITE setDuration NOTIFY durationChanged)
    Q_PROPERTY(qint32 flags READ flags WRITE setFlags NOTIFY flagsChanged)
    Q_PROPERTY(qint64 gameId READ gameId WRITE setGameId NOTIFY gameIdChanged)
    Q_PROPERTY(PaymentRequestedInfoObject* info READ info WRITE setInfo NOTIFY infoChanged)
    Q_PROPERTY(qint32 inviterId READ inviterId WRITE setInviterId NOTIFY inviterIdChanged)
    Q_PROPERTY(QByteArray payload READ payload WRITE setPayload NOTIFY payloadChanged)
    Q_PROPERTY(PhotoObject* photo READ photo WRITE setPhoto NOTIFY photoChanged)
    Q_PROPERTY(PhoneCallDiscardReasonObject* reason READ reason WRITE setReason NOTIFY reasonChanged)
    Q_PROPERTY(qint32 score READ score WRITE setScore NOTIFY scoreChanged)
    Q_PROPERTY(QString shippingOptionId READ shippingOptionId WRITE setShippingOptionId NOTIFY shippingOptionIdChanged)
    Q_PROPERTY(QString title READ title WRITE setTitle NOTIFY titleChanged)
    Q_PROPERTY(qint64 totalAmount READ totalAmount WRITE setTotalAmount NOTIFY totalAmountChanged)
    Q_PROPERTY(qint32 userId READ userId WRITE setUserId NOTIFY userIdChanged)
    Q_PROPERTY(QList<qint32> users READ users WRITE setUsers NOTIFY usersChanged)
    Q_PROPERTY(MessageAction core READ core WRITE setCore NOTIFY coreChanged)
    Q_PROPERTY(quint32 classType READ classType WRITE setClassType NOTIFY classTypeChanged)

public:
    enum MessageActionClassType {
        TypeMessageActionEmpty,
        TypeMessageActionChatCreate,
        TypeMessageActionChatEditTitle,
        TypeMessageActionChatEditPhoto,
        TypeMessageActionChatDeletePhoto,
        TypeMessageActionChatAddUser,
        TypeMessageActionChatDeleteUser,
        TypeMessageActionChatJoinedByLink,
        TypeMessageActionChannelCreate,
        TypeMessageActionChatMigrateTo,
        TypeMessageActionChannelMigrateFrom,
        TypeMessageActionPinMessage,
        TypeMessageActionHistoryClear,
        TypeMessageActionGameScore,
        TypeMessageActionPaymentSentMe,
        TypeMessageActionPaymentSent,
        TypeMessageActionPhoneCall
    };

    MessageActionObject(const MessageAction &core, QObject *parent = 0);
    MessageActionObject(QObject *parent = 0);
    virtual ~MessageActionObject();

    void setCallId(qint64 callId);
    qint64 callId() const;

    void setChannelId(qint32 channelId);
    qint32 channelId() const;

    void setCharge(PaymentChargeObject* charge);
    PaymentChargeObject* charge() const;

    void setChatId(qint32 chatId);
    qint32 chatId() const;

    void setCurrency(const QString &currency);
    QString currency() const;

    void setDuration(qint32 duration);
    qint32 duration() const;

    void setFlags(qint32 flags);
    qint32 flags() const;

    void setGameId(qint64 gameId);
    qint64 gameId() const;

    void setInfo(PaymentRequestedInfoObject* info);
    PaymentRequestedInfoObject* info() const;

    void setInviterId(qint32 inviterId);
    qint32 inviterId() const;

    void setPayload(const QByteArray &payload);
    QByteArray payload() const;

    void setPhoto(PhotoObject* photo);
    PhotoObject* photo() const;

    void setReason(PhoneCallDiscardReasonObject* reason);
    PhoneCallDiscardReasonObject* reason() const;

    void setScore(qint32 score);
    qint32 score() const;

    void setShippingOptionId(const QString &shippingOptionId);
    QString shippingOptionId() const;

    void setTitle(const QString &title);
    QString title() const;

    void setTotalAmount(qint64 totalAmount);
    qint64 totalAmount() const;

    void setUserId(qint32 userId);
    qint32 userId() const;

    void setUsers(const QList<qint32> &users);
    QList<qint32> users() const;

    void setClassType(quint32 classType);
    quint32 classType() const;

    void setCore(const MessageAction &core);
    MessageAction core() const;

    MessageActionObject &operator =(const MessageAction &b);
    bool operator ==(const MessageAction &b) const;

Q_SIGNALS:
    void coreChanged();
    void classTypeChanged();
    void callIdChanged();
    void channelIdChanged();
    void chargeChanged();
    void chatIdChanged();
    void currencyChanged();
    void durationChanged();
    void flagsChanged();
    void gameIdChanged();
    void infoChanged();
    void inviterIdChanged();
    void payloadChanged();
    void photoChanged();
    void reasonChanged();
    void scoreChanged();
    void shippingOptionIdChanged();
    void titleChanged();
    void totalAmountChanged();
    void userIdChanged();
    void usersChanged();

private Q_SLOTS:
    void coreChargeChanged();
    void coreInfoChanged();
    void corePhotoChanged();
    void coreReasonChanged();

private:
    QPointer<PaymentChargeObject> m_charge;
    QPointer<PaymentRequestedInfoObject> m_info;
    QPointer<PhotoObject> m_photo;
    QPointer<PhoneCallDiscardReasonObject> m_reason;
    MessageAction m_core;
};

#endif // LQTG_TYPE_MESSAGEACTION_OBJECT
