#pragma once

#include <cstdint>
#include <string>

namespace softbus::core {

struct OpcUaProfile {
    uint16_t port{4840};
    std::string applicationName{"SoftBusDaemon"};
};

struct UplinkProfile {
    std::string listenHost{"127.0.0.1"};
    uint16_t listenPort{9000};
};

struct PluginProfile {
    std::string modbus{"protocol_modbus"};
    std::string canopen{"protocol_canopen"};
};

struct SecurityProfile {
    bool tlsEnabled{false};
    std::string certPath;
    std::string keyPath;
};

struct DaemonProfile {
    OpcUaProfile opcua;
    UplinkProfile uplink;
    PluginProfile plugins;
    SecurityProfile security;

    bool loadFromFile(const std::string& path);
};

} // namespace softbus::core
