// 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_PAYMENTSPAYMENTFORM_OBJECT
#define LQTG_TYPE_PAYMENTSPAYMENTFORM_OBJECT

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

#include <QPointer>
#include "invoiceobject.h"
#include "datajsonobject.h"
#include "paymentsavedcredentialsobject.h"
#include "paymentrequestedinfoobject.h"

class LIBQTELEGRAMSHARED_EXPORT PaymentsPaymentFormObject : public TelegramTypeQObject
{
    Q_OBJECT
    Q_ENUMS(PaymentsPaymentFormClassType)
    Q_PROPERTY(qint32 botId READ botId WRITE setBotId NOTIFY botIdChanged)
    Q_PROPERTY(bool canSaveCredentials READ canSaveCredentials WRITE setCanSaveCredentials NOTIFY canSaveCredentialsChanged)
    Q_PROPERTY(qint32 flags READ flags WRITE setFlags NOTIFY flagsChanged)
    Q_PROPERTY(InvoiceObject* invoice READ invoice WRITE setInvoice NOTIFY invoiceChanged)
    Q_PROPERTY(DataJSONObject* nativeParams READ nativeParams WRITE setNativeParams NOTIFY nativeParamsChanged)
    Q_PROPERTY(QString nativeProvider READ nativeProvider WRITE setNativeProvider NOTIFY nativeProviderChanged)
    Q_PROPERTY(bool passwordMissing READ passwordMissing WRITE setPasswordMissing NOTIFY passwordMissingChanged)
    Q_PROPERTY(qint32 providerId READ providerId WRITE setProviderId NOTIFY providerIdChanged)
    Q_PROPERTY(PaymentSavedCredentialsObject* savedCredentials READ savedCredentials WRITE setSavedCredentials NOTIFY savedCredentialsChanged)
    Q_PROPERTY(PaymentRequestedInfoObject* savedInfo READ savedInfo WRITE setSavedInfo NOTIFY savedInfoChanged)
    Q_PROPERTY(QString url READ url WRITE setUrl NOTIFY urlChanged)
    Q_PROPERTY(QList<User> users READ users WRITE setUsers NOTIFY usersChanged)
    Q_PROPERTY(PaymentsPaymentForm core READ core WRITE setCore NOTIFY coreChanged)
    Q_PROPERTY(quint32 classType READ classType WRITE setClassType NOTIFY classTypeChanged)

public:
    enum PaymentsPaymentFormClassType {
        TypePaymentsPaymentForm
    };

    PaymentsPaymentFormObject(const PaymentsPaymentForm &core, QObject *parent = 0);
    PaymentsPaymentFormObject(QObject *parent = 0);
    virtual ~PaymentsPaymentFormObject();

    void setBotId(qint32 botId);
    qint32 botId() const;

    void setCanSaveCredentials(bool canSaveCredentials);
    bool canSaveCredentials() const;

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

    void setInvoice(InvoiceObject* invoice);
    InvoiceObject* invoice() const;

    void setNativeParams(DataJSONObject* nativeParams);
    DataJSONObject* nativeParams() const;

    void setNativeProvider(const QString &nativeProvider);
    QString nativeProvider() const;

    void setPasswordMissing(bool passwordMissing);
    bool passwordMissing() const;

    void setProviderId(qint32 providerId);
    qint32 providerId() const;

    void setSavedCredentials(PaymentSavedCredentialsObject* savedCredentials);
    PaymentSavedCredentialsObject* savedCredentials() const;

    void setSavedInfo(PaymentRequestedInfoObject* savedInfo);
    PaymentRequestedInfoObject* savedInfo() const;

    void setUrl(const QString &url);
    QString url() const;

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

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

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

    PaymentsPaymentFormObject &operator =(const PaymentsPaymentForm &b);
    bool operator ==(const PaymentsPaymentForm &b) const;

Q_SIGNALS:
    void coreChanged();
    void classTypeChanged();
    void botIdChanged();
    void canSaveCredentialsChanged();
    void flagsChanged();
    void invoiceChanged();
    void nativeParamsChanged();
    void nativeProviderChanged();
    void passwordMissingChanged();
    void providerIdChanged();
    void savedCredentialsChanged();
    void savedInfoChanged();
    void urlChanged();
    void usersChanged();

private Q_SLOTS:
    void coreInvoiceChanged();
    void coreNativeParamsChanged();
    void coreSavedCredentialsChanged();
    void coreSavedInfoChanged();

private:
    QPointer<InvoiceObject> m_invoice;
    QPointer<DataJSONObject> m_nativeParams;
    QPointer<PaymentSavedCredentialsObject> m_savedCredentials;
    QPointer<PaymentRequestedInfoObject> m_savedInfo;
    PaymentsPaymentForm m_core;
};

#endif // LQTG_TYPE_PAYMENTSPAYMENTFORM_OBJECT
