#pragma once

#include <cstdint>
#include <string_view>

// clang-format off
// NOLINTBEGIN(readability-identifier-naming)

// String params
constexpr const std::string_view BMCWEB_LOGGING_LEVEL = "@LOGGING_LEVEL@";
constexpr const std::string_view BMCWEB_MUTUAL_TLS_COMMON_NAME_PARSING = "@MUTUAL_TLS_COMMON_NAME_PARSING@";
constexpr const std::string_view BMCWEB_DNS_RESOLVER = "@DNS_RESOLVER@";

// Integer params
constexpr const uint64_t BMCWEB_HTTP_BODY_LIMIT = @HTTP_BODY_LIMIT@;
constexpr const uint16_t BMCWEB_HTTPS_PORT = @HTTPS_PORT@;

// Feature Params
constexpr const bool BMCWEB_BASIC_AUTH = @BASIC_AUTH@;
constexpr const bool BMCWEB_COOKIE_AUTH = @COOKIE_AUTH@;
constexpr const bool BMCWEB_EXPERIMENTAL_HTTP2 = @EXPERIMENTAL_HTTP2@;
constexpr const bool BMCWEB_EXPERIMENTAL_REDFISH_MULTI_COMPUTER_SYSTEM = @EXPERIMENTAL_REDFISH_MULTI_COMPUTER_SYSTEM@;
constexpr const bool BMCWEB_HOST_SERIAL_SOCKET = @HOST_SERIAL_SOCKET@;
constexpr const bool BMCWEB_INSECURE_DISABLE_AUTH = @INSECURE_DISABLE_AUTH@;
constexpr const bool BMCWEB_INSECURE_DISABLE_CSRF = @INSECURE_DISABLE_CSRF@;
constexpr const bool BMCWEB_INSECURE_DISABLE_SSL = @INSECURE_DISABLE_SSL@;
constexpr const bool BMCWEB_INSECURE_ENABLE_REDFISH_QUERY = @INSECURE_ENABLE_REDFISH_QUERY@;
constexpr const bool BMCWEB_INSECURE_IGNORE_CONTENT_TYPE = @INSECURE_IGNORE_CONTENT_TYPE@;
constexpr const bool BMCWEB_INSECURE_PUSH_STYLE_NOTIFICATION = @INSECURE_PUSH_STYLE_NOTIFICATION@;
constexpr const bool BMCWEB_INSECURE_TFTP_UPDATE = @INSECURE_TFTP_UPDATE@;
constexpr const bool BMCWEB_KVM = @KVM@;
constexpr const bool BMCWEB_MUTUAL_TLS_AUTH = @MUTUAL_TLS_AUTH@;
constexpr const bool BMCWEB_REDFISH_AGGREGATION = @REDFISH_AGGREGATION@;
constexpr const bool BMCWEB_REDFISH_ALLOW_DEPRECATED_POWER_THERMAL = @REDFISH_ALLOW_DEPRECATED_POWER_THERMAL@;
constexpr const bool BMCWEB_REDFISH_BMC_JOURNAL = @REDFISH_BMC_JOURNAL@;
constexpr const bool BMCWEB_REDFISH_CPU_LOG = @REDFISH_CPU_LOG@;
constexpr const bool BMCWEB_REDFISH_DBUS_LOG = @REDFISH_DBUS_LOG@;
constexpr const bool BMCWEB_REDFISH_DUMP_LOG = @REDFISH_DUMP_LOG@;
constexpr const bool BMCWEB_REDFISH_HOST_LOGGER = @REDFISH_HOST_LOGGER@;
constexpr const bool BMCWEB_REDFISH_NEW_POWERSUBSYSTEM_THERMALSUBSYSTEM = @REDFISH_NEW_POWERSUBSYSTEM_THERMALSUBSYSTEM@;
constexpr const bool BMCWEB_REDFISH_OEM_MANAGER_FAN_DATA = @REDFISH_OEM_MANAGER_FAN_DATA@;
constexpr const bool BMCWEB_REDFISH_PROVISIONING_FEATURE = @REDFISH_PROVISIONING_FEATURE@;
constexpr const bool BMCWEB_REDFISH_UPDATESERVICE_USE_DBUS = @REDFISH_UPDATESERVICE_USE_DBUS@;
constexpr const bool BMCWEB_REDFISH = @REDFISH@;
constexpr const bool BMCWEB_REST = @REST@;
constexpr const bool BMCWEB_SESSION_AUTH = @SESSION_AUTH@;
constexpr const bool BMCWEB_STATIC_HOSTING = @STATIC_HOSTING@;
constexpr const bool BMCWEB_TESTS = @TESTS@;
constexpr const bool BMCWEB_VM_WEBSOCKET = @VM_WEBSOCKET@;
constexpr const bool BMCWEB_VM_NBDPROXY = false;
constexpr const bool BMCWEB_XTOKEN_AUTH = @XTOKEN_AUTH@;

// Company specific params
constexpr const bool BMCWEB_GOOGLE_API = @GOOGLE_API@;
constexpr const bool BMCWEB_IBM_MANAGEMENT_CONSOLE = @IBM_MANAGEMENT_CONSOLE@;

// NOLINTEND(readability-identifier-naming)
// clang-format on
