// 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_UPDATESDIFFERENCE_OBJECT
#define LQTG_TYPE_UPDATESDIFFERENCE_OBJECT

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

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

class LIBQTELEGRAMSHARED_EXPORT UpdatesDifferenceObject : public TelegramTypeQObject
{
    Q_OBJECT
    Q_ENUMS(UpdatesDifferenceClassType)
    Q_PROPERTY(QList<Chat> chats READ chats WRITE setChats NOTIFY chatsChanged)
    Q_PROPERTY(qint32 date READ date WRITE setDate NOTIFY dateChanged)
    Q_PROPERTY(UpdatesStateObject* intermediateState READ intermediateState WRITE setIntermediateState NOTIFY intermediateStateChanged)
    Q_PROPERTY(QList<EncryptedMessage> newEncryptedMessages READ newEncryptedMessages WRITE setNewEncryptedMessages NOTIFY newEncryptedMessagesChanged)
    Q_PROPERTY(QList<Message> newMessages READ newMessages WRITE setNewMessages NOTIFY newMessagesChanged)
    Q_PROPERTY(QList<Update> otherUpdates READ otherUpdates WRITE setOtherUpdates NOTIFY otherUpdatesChanged)
    Q_PROPERTY(qint32 pts READ pts WRITE setPts NOTIFY ptsChanged)
    Q_PROPERTY(qint32 seq READ seq WRITE setSeq NOTIFY seqChanged)
    Q_PROPERTY(UpdatesStateObject* state READ state WRITE setState NOTIFY stateChanged)
    Q_PROPERTY(QList<User> users READ users WRITE setUsers NOTIFY usersChanged)
    Q_PROPERTY(UpdatesDifference core READ core WRITE setCore NOTIFY coreChanged)
    Q_PROPERTY(quint32 classType READ classType WRITE setClassType NOTIFY classTypeChanged)

public:
    enum UpdatesDifferenceClassType {
        TypeUpdatesDifferenceEmpty,
        TypeUpdatesDifference,
        TypeUpdatesDifferenceSlice,
        TypeUpdatesDifferenceTooLong
    };

    UpdatesDifferenceObject(const UpdatesDifference &core, QObject *parent = 0);
    UpdatesDifferenceObject(QObject *parent = 0);
    virtual ~UpdatesDifferenceObject();

    void setChats(const QList<Chat> &chats);
    QList<Chat> chats() const;

    void setDate(qint32 date);
    qint32 date() const;

    void setIntermediateState(UpdatesStateObject* intermediateState);
    UpdatesStateObject* intermediateState() const;

    void setNewEncryptedMessages(const QList<EncryptedMessage> &newEncryptedMessages);
    QList<EncryptedMessage> newEncryptedMessages() const;

    void setNewMessages(const QList<Message> &newMessages);
    QList<Message> newMessages() const;

    void setOtherUpdates(const QList<Update> &otherUpdates);
    QList<Update> otherUpdates() const;

    void setPts(qint32 pts);
    qint32 pts() const;

    void setSeq(qint32 seq);
    qint32 seq() const;

    void setState(UpdatesStateObject* state);
    UpdatesStateObject* state() const;

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

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

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

    UpdatesDifferenceObject &operator =(const UpdatesDifference &b);
    bool operator ==(const UpdatesDifference &b) const;

Q_SIGNALS:
    void coreChanged();
    void classTypeChanged();
    void chatsChanged();
    void dateChanged();
    void intermediateStateChanged();
    void newEncryptedMessagesChanged();
    void newMessagesChanged();
    void otherUpdatesChanged();
    void ptsChanged();
    void seqChanged();
    void stateChanged();
    void usersChanged();

private Q_SLOTS:
    void coreIntermediateStateChanged();
    void coreStateChanged();

private:
    QPointer<UpdatesStateObject> m_intermediateState;
    QPointer<UpdatesStateObject> m_state;
    UpdatesDifference m_core;
};

#endif // LQTG_TYPE_UPDATESDIFFERENCE_OBJECT
