// SPDX-License-Identifier: GPL-3.0-or-later

// This file is auto-generated by scripts/generate_nymea_api.py
// Any changes made here will be lost when the files are regenerated.
// Do not edit manually.

#pragma once

#include "apiutils.h"
#include "actiontype.h"
#include "eventtype.h"
#include "paramtype.h"
#include "statetype.h"

namespace nymea::api {

class ThingClass {
public:
    // wire: 'actionTypes' (required)
    ActionTypes actionTypes{};
    // wire: 'browsable' (required)
    bool browsable{};
    // wire: 'browserItemActionTypes' (required)
    ActionTypes browserItemActionTypes{};
    // wire: 'createMethods' (required)
    CreateMethods createMethods{};
    // wire: 'discoveryParamTypes' (required)
    ParamTypes discoveryParamTypes{};
    // wire: 'discoveryType' (required)
    DiscoveryType discoveryType{};
    // wire: 'displayName' (required)
    QString displayName{};
    // wire: 'eventTypes' (required)
    EventTypes eventTypes{};
    // wire: 'id' (required)
    QUuid id{};
    // wire: 'interfaces' (required)
    QStringList interfaces{};
    // wire: 'name' (required)
    QString name{};
    // wire: 'paramTypes' (required)
    ParamTypes paramTypes{};
    // wire: 'pluginId' (required)
    QUuid pluginId{};
    // wire: 'providedInterfaces' (required)
    QStringList providedInterfaces{};
    // wire: 'settingsTypes' (required)
    ParamTypes settingsTypes{};
    // wire: 'setupMethod' (required)
    SetupMethod setupMethod{};
    // wire: 'stateTypes' (required)
    StateTypes stateTypes{};
    // wire: 'vendorId' (required)
    QUuid vendorId{};

    static ThingClass fromJson(const QJsonObject &object);
    QJsonObject toJson() const;
};

} // namespace nymea::api
