// 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_DECRYPTEDMESSAGEACTION_OBJECT
#define LQTG_TYPE_DECRYPTEDMESSAGEACTION_OBJECT

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

#include <QPointer>
#include "sendmessageactionobject.h"

class LIBQTELEGRAMSHARED_EXPORT DecryptedMessageActionObject : public TelegramTypeQObject
{
    Q_OBJECT
    Q_ENUMS(DecryptedMessageActionClassType)
    Q_PROPERTY(SendMessageActionObject* action READ action WRITE setAction NOTIFY actionChanged)
    Q_PROPERTY(qint32 endSeqNo READ endSeqNo WRITE setEndSeqNo NOTIFY endSeqNoChanged)
    Q_PROPERTY(qint64 exchangeId READ exchangeId WRITE setExchangeId NOTIFY exchangeIdChanged)
    Q_PROPERTY(QByteArray gA READ gA WRITE setGA NOTIFY gAChanged)
    Q_PROPERTY(QByteArray gB READ gB WRITE setGB NOTIFY gBChanged)
    Q_PROPERTY(qint64 keyFingerprint READ keyFingerprint WRITE setKeyFingerprint NOTIFY keyFingerprintChanged)
    Q_PROPERTY(qint32 layer READ layer WRITE setLayer NOTIFY layerChanged)
    Q_PROPERTY(QList<qint64> randomIds READ randomIds WRITE setRandomIds NOTIFY randomIdsChanged)
    Q_PROPERTY(qint32 startSeqNo READ startSeqNo WRITE setStartSeqNo NOTIFY startSeqNoChanged)
    Q_PROPERTY(qint32 ttlSeconds READ ttlSeconds WRITE setTtlSeconds NOTIFY ttlSecondsChanged)
    Q_PROPERTY(DecryptedMessageAction core READ core WRITE setCore NOTIFY coreChanged)
    Q_PROPERTY(quint32 classType READ classType WRITE setClassType NOTIFY classTypeChanged)

public:
    enum DecryptedMessageActionClassType {
        TypeDecryptedMessageActionSetMessageTTLSecret8,
        TypeDecryptedMessageActionReadMessagesSecret8,
        TypeDecryptedMessageActionDeleteMessagesSecret8,
        TypeDecryptedMessageActionScreenshotMessagesSecret8,
        TypeDecryptedMessageActionFlushHistorySecret8,
        TypeDecryptedMessageActionResendSecret17,
        TypeDecryptedMessageActionNotifyLayerSecret17,
        TypeDecryptedMessageActionTypingSecret17,
        TypeDecryptedMessageActionRequestKeySecret20,
        TypeDecryptedMessageActionAcceptKeySecret20,
        TypeDecryptedMessageActionAbortKeySecret20,
        TypeDecryptedMessageActionCommitKeySecret20,
        TypeDecryptedMessageActionNoopSecret20
    };

    DecryptedMessageActionObject(const DecryptedMessageAction &core, QObject *parent = 0);
    DecryptedMessageActionObject(QObject *parent = 0);
    virtual ~DecryptedMessageActionObject();

    void setAction(SendMessageActionObject* action);
    SendMessageActionObject* action() const;

    void setEndSeqNo(qint32 endSeqNo);
    qint32 endSeqNo() const;

    void setExchangeId(qint64 exchangeId);
    qint64 exchangeId() const;

    void setGA(const QByteArray &gA);
    QByteArray gA() const;

    void setGB(const QByteArray &gB);
    QByteArray gB() const;

    void setKeyFingerprint(qint64 keyFingerprint);
    qint64 keyFingerprint() const;

    void setLayer(qint32 layer);
    qint32 layer() const;

    void setRandomIds(const QList<qint64> &randomIds);
    QList<qint64> randomIds() const;

    void setStartSeqNo(qint32 startSeqNo);
    qint32 startSeqNo() const;

    void setTtlSeconds(qint32 ttlSeconds);
    qint32 ttlSeconds() const;

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

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

    DecryptedMessageActionObject &operator =(const DecryptedMessageAction &b);
    bool operator ==(const DecryptedMessageAction &b) const;

Q_SIGNALS:
    void coreChanged();
    void classTypeChanged();
    void actionChanged();
    void endSeqNoChanged();
    void exchangeIdChanged();
    void gAChanged();
    void gBChanged();
    void keyFingerprintChanged();
    void layerChanged();
    void randomIdsChanged();
    void startSeqNoChanged();
    void ttlSecondsChanged();

private Q_SLOTS:
    void coreActionChanged();

private:
    QPointer<SendMessageActionObject> m_action;
    DecryptedMessageAction m_core;
};

#endif // LQTG_TYPE_DECRYPTEDMESSAGEACTION_OBJECT
