// NOLINTBEGIN
#pragma once
#include <cstdint>
#include <nlohmann/json.hpp>

namespace power
{
// clang-format off

enum class PowerLimitException : std::uint8_t{
    Invalid,
    NoAction,
    HardPowerOff,
    LogEventOnly,
    Oem,
};

enum class PowerSupplyType : std::uint8_t{
    Invalid,
    Unknown,
    AC,
    DC,
    ACorDC,
};

enum class LineInputVoltageType : std::uint8_t{
    Invalid,
    Unknown,
    ACLowLine,
    ACMidLine,
    ACHighLine,
    DCNeg48V,
    DC380V,
    AC120V,
    AC240V,
    AC277V,
    ACandDCWideRange,
    ACWideRange,
    DC240V,
};

enum class InputType : std::uint8_t{
    Invalid,
    AC,
    DC,
};

NLOHMANN_JSON_SERIALIZE_ENUM(PowerLimitException, {
    {PowerLimitException::Invalid, "Invalid"},
    {PowerLimitException::NoAction, "NoAction"},
    {PowerLimitException::HardPowerOff, "HardPowerOff"},
    {PowerLimitException::LogEventOnly, "LogEventOnly"},
    {PowerLimitException::Oem, "Oem"},
});

NLOHMANN_JSON_SERIALIZE_ENUM(PowerSupplyType, {
    {PowerSupplyType::Invalid, "Invalid"},
    {PowerSupplyType::Unknown, "Unknown"},
    {PowerSupplyType::AC, "AC"},
    {PowerSupplyType::DC, "DC"},
    {PowerSupplyType::ACorDC, "ACorDC"},
});

NLOHMANN_JSON_SERIALIZE_ENUM(LineInputVoltageType, {
    {LineInputVoltageType::Invalid, "Invalid"},
    {LineInputVoltageType::Unknown, "Unknown"},
    {LineInputVoltageType::ACLowLine, "ACLowLine"},
    {LineInputVoltageType::ACMidLine, "ACMidLine"},
    {LineInputVoltageType::ACHighLine, "ACHighLine"},
    {LineInputVoltageType::DCNeg48V, "DCNeg48V"},
    {LineInputVoltageType::DC380V, "DC380V"},
    {LineInputVoltageType::AC120V, "AC120V"},
    {LineInputVoltageType::AC240V, "AC240V"},
    {LineInputVoltageType::AC277V, "AC277V"},
    {LineInputVoltageType::ACandDCWideRange, "ACandDCWideRange"},
    {LineInputVoltageType::ACWideRange, "ACWideRange"},
    {LineInputVoltageType::DC240V, "DC240V"},
});

NLOHMANN_JSON_SERIALIZE_ENUM(InputType, {
    {InputType::Invalid, "Invalid"},
    {InputType::AC, "AC"},
    {InputType::DC, "DC"},
});

} // namespace power
// clang-format on
// NOLINTEND
