/* This file is autogenerated. DO NOT CHANGE. All changes will be lost */

#ifndef QPROTOBUF_TIMESTAMP_H
#define QPROTOBUF_TIMESTAMP_H

#include <QtProtobuf/qprotobufmessage.h>
#include <QtProtobuf/qprotobufobject.h>
#include <QtProtobuf/qprotobuflazymessagepointer.h>

#include <QtCore/QDateTime>
#include <QtCore/qbytearray.h>
#include <QtCore/qstring.h>
#include "protobufwellknowntypes_exports.qpb.h"

#include <QtCore/qmetatype.h>
#include <QtCore/qlist.h>
#include <QtCore/qshareddata.h>

#include <memory>


namespace google::protobuf {
class Timestamp;
using TimestampRepeated = QList<Timestamp>;
namespace Timestamp_QtProtobufNested {
enum class QtProtobufFieldEnum;
} // namespace Timestamp_QtProtobufNested


class Timestamp_QtProtobufData;
class QPB_PROTOBUFWELLKNOWNTYPES_EXPORT Timestamp : public QProtobufMessage
{
    Q_GADGET
    Q_PROTOBUF_OBJECT
    Q_DECLARE_PROTOBUF_SERIALIZERS(Timestamp)
    Q_PROPERTY(QtProtobuf::int64 seconds READ seconds WRITE setSeconds SCRIPTABLE false)
    Q_PROPERTY(QtProtobuf::int32 nanos READ nanos WRITE setNanos SCRIPTABLE true)

public:
    using QtProtobufFieldEnum = Timestamp_QtProtobufNested::QtProtobufFieldEnum;
    Timestamp();
    ~Timestamp();
    Timestamp(const Timestamp &other);
    Timestamp &operator =(const Timestamp &other);
    Timestamp(Timestamp &&other) noexcept;
    Timestamp &operator =(Timestamp &&other) noexcept;
    bool operator ==(const Timestamp &other) const;
    bool operator !=(const Timestamp &other) const;

    QtProtobuf::int64 seconds() const;

    QtProtobuf::int32 nanos() const;
    void setSeconds(const QtProtobuf::int64 &seconds);
    void setNanos(const QtProtobuf::int32 &nanos);
    static void registerTypes();
    static Timestamp fromDateTime(const QDateTime &dateTime);
    QDateTime toDateTime() const;

private:
    QExplicitlySharedDataPointer<Timestamp_QtProtobufData> dptr;
};
namespace Timestamp_QtProtobufNested {
Q_NAMESPACE_EXPORT(QPB_PROTOBUFWELLKNOWNTYPES_EXPORT)

enum class QtProtobufFieldEnum {
    SecondsProtoFieldNumber = 1,
    NanosProtoFieldNumber = 2,
};
Q_ENUM_NS(QtProtobufFieldEnum)

} // namespace Timestamp_QtProtobufNested
} // namespace google::protobuf

Q_DECLARE_METATYPE(google::protobuf::Timestamp)
#endif // QPROTOBUF_TIMESTAMP_H
