// 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_DECRYPTEDMESSAGE_OBJECT
#define LQTG_TYPE_DECRYPTEDMESSAGE_OBJECT

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

#include <QPointer>
#include "decryptedmessageactionobject.h"
#include "decryptedmessagemediaobject.h"

class LIBQTELEGRAMSHARED_EXPORT DecryptedMessageObject : public TelegramTypeQObject
{
    Q_OBJECT
    Q_ENUMS(DecryptedMessageClassType)
    Q_PROPERTY(DecryptedMessageActionObject* action READ action WRITE setAction NOTIFY actionChanged)
    Q_PROPERTY(DecryptedMessageMediaObject* media READ media WRITE setMedia NOTIFY mediaChanged)
    Q_PROPERTY(QString message READ message WRITE setMessage NOTIFY messageChanged)
    Q_PROPERTY(QByteArray randomBytes READ randomBytes WRITE setRandomBytes NOTIFY randomBytesChanged)
    Q_PROPERTY(qint64 randomId READ randomId WRITE setRandomId NOTIFY randomIdChanged)
    Q_PROPERTY(qint32 ttl READ ttl WRITE setTtl NOTIFY ttlChanged)
    Q_PROPERTY(DecryptedMessage core READ core WRITE setCore NOTIFY coreChanged)
    Q_PROPERTY(quint32 classType READ classType WRITE setClassType NOTIFY classTypeChanged)

public:
    enum DecryptedMessageClassType {
        TypeDecryptedMessageSecret8,
        TypeDecryptedMessageServiceSecret8,
        TypeDecryptedMessageSecret17,
        TypeDecryptedMessageServiceSecret17
    };

    DecryptedMessageObject(const DecryptedMessage &core, QObject *parent = 0);
    DecryptedMessageObject(QObject *parent = 0);
    virtual ~DecryptedMessageObject();

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

    void setMedia(DecryptedMessageMediaObject* media);
    DecryptedMessageMediaObject* media() const;

    void setMessage(const QString &message);
    QString message() const;

    void setRandomBytes(const QByteArray &randomBytes);
    QByteArray randomBytes() const;

    void setRandomId(qint64 randomId);
    qint64 randomId() const;

    void setTtl(qint32 ttl);
    qint32 ttl() const;

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

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

    DecryptedMessageObject &operator =(const DecryptedMessage &b);
    bool operator ==(const DecryptedMessage &b) const;

Q_SIGNALS:
    void coreChanged();
    void classTypeChanged();
    void actionChanged();
    void mediaChanged();
    void messageChanged();
    void randomBytesChanged();
    void randomIdChanged();
    void ttlChanged();

private Q_SLOTS:
    void coreActionChanged();
    void coreMediaChanged();

private:
    QPointer<DecryptedMessageActionObject> m_action;
    QPointer<DecryptedMessageMediaObject> m_media;
    DecryptedMessage m_core;
};

#endif // LQTG_TYPE_DECRYPTEDMESSAGE_OBJECT
