// 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 "zigbeebindingtablerecord.h"
#include "zigbeeneighbortablerecord.h"
#include "zigbeenodeendpoint.h"
#include "zigbeeroutingtablerecord.h"

namespace nymea::api {

class ZigbeeNode {
public:
    // wire: 'bindingTableRecords' (field)
    QList<ZigbeeBindingTableRecord> bindingTableRecords{};
    // wire: 'endpoints' (field)
    QList<ZigbeeNodeEndpoint> endpoints{};
    // wire: 'ieeeAddress' (field)
    QString ieeeAddress{};
    // wire: 'lastSeen' (field)
    quint64 lastSeen{};
    // wire: 'lqi' (field)
    quint64 lqi{};
    // wire: 'manufacturer' (field)
    QString manufacturer{};
    // wire: 'model' (field)
    QString model{};
    // wire: 'neighborTableRecords' (field)
    QList<ZigbeeNeighborTableRecord> neighborTableRecords{};
    // wire: 'networkAddress' (field)
    quint64 networkAddress{};
    // wire: 'networkUuid' (field)
    QUuid networkUuid{};
    // wire: 'reachable' (field)
    bool reachable{};
    // wire: 'receiverOnWhileIdle' (field)
    bool receiverOnWhileIdle{};
    // wire: 'routingTableRecords' (field)
    QList<ZigbeeRoutingTableRecord> routingTableRecords{};
    // wire: 'state' (field)
    ZigbeeNodeState state{};
    // wire: 'type' (field)
    ZigbeeNodeType type{};
    // wire: 'version' (field)
    QString version{};

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

} // namespace nymea::api
