#pragma once

#include <softbus_core/models/ObjectModel.h>

#if SOFTBUS_HAS_OPCUA
#include <open62541/types.h>
#else
typedef struct UA_Server UA_Server;
#endif

struct UA_Server;

namespace softbus::opcua {

class UaModelBinder;

class UaAddressSpaceBuilder {
public:
    explicit UaAddressSpaceBuilder(UA_Server* server);

    bool buildFromModel(const softbus::core::ObjectModelTree& tree, UaModelBinder* binder = nullptr);

private:
    UA_Server* server_{nullptr};
};

} // namespace softbus::opcua
