// 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"

namespace nymea::api {

class ZWaveNode {
public:
    // wire: 'deviceType' (field)
    ZWaveDeviceType deviceType{};
    // wire: 'failed' (field)
    bool failed{};
    // wire: 'initialized' (field)
    bool initialized{};
    // wire: 'isBeamingDevice' (field)
    bool isBeamingDevice{};
    // wire: 'isSecurityDevice' (field)
    bool isSecurityDevice{};
    // wire: 'isZWavePlusDevice' (field)
    bool isZWavePlusDevice{};
    // wire: 'linkQuality' (field)
    quint64 linkQuality{};
    // wire: 'manufacturerId' (field)
    quint64 manufacturerId{};
    // wire: 'manufacturerName' (field)
    QString manufacturerName{};
    // wire: 'networkUuid' (field)
    QUuid networkUuid{};
    // wire: 'nodeId' (field)
    quint64 nodeId{};
    // wire: 'nodeType' (field)
    ZWaveNodeType nodeType{};
    // wire: 'productId' (field)
    quint64 productId{};
    // wire: 'productName' (field)
    QString productName{};
    // wire: 'productType' (field)
    quint64 productType{};
    // wire: 'reachable' (field)
    bool reachable{};
    // wire: 'role' (field)
    ZWaveNodeRole role{};
    // wire: 'securityMode' (field)
    quint64 securityMode{};
    // wire: 'sleeping' (field)
    bool sleeping{};
    // wire: 'version' (field)
    QString version{};

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

} // namespace nymea::api
