#pragma once

#include "AqsiError.h"
#include "aqsi-commons-global.h"

/* ConfigManagerChangeParameterError*/
/*  */
enum class AQSICOMMONS_EXPORT ConfigManagerChangeParameterError {
    kUnknown = 1,
    kWriteError = 2,
    kReadError = 3,
    kLockFileForWriteError = 4,
    kUnsupportedValueType = 5,
    kChangeParameterValueError = 6,
};

typedef std::unordered_map<ConfigManagerChangeParameterError, std::string_view> ConfigManagerChangeParameterErrorMap;

static ConfigManagerChangeParameterErrorMap const instanceConfigManagerChangeParameterErrorMap = {
    {ConfigManagerChangeParameterError::kUnknown, "Неизвестная ошибка"},
    {ConfigManagerChangeParameterError::kWriteError, "Ошибка записи данных в файл конфигурации"},
    {ConfigManagerChangeParameterError::kReadError, "Ошибка чтения данных из файла конфигурации"},
    {ConfigManagerChangeParameterError::kLockFileForWriteError, "Ошибка блокировки файла конфигурации для записи"},
    {ConfigManagerChangeParameterError::kUnsupportedValueType, "Неподдерживаемый тип значения конфигурационного параметра"},
    {ConfigManagerChangeParameterError::kChangeParameterValueError, "Ошибка изменения значения конфигурационного параметра"},
};
AQSICOMMONS_EXPORT std::error_code make_error_code(ConfigManagerChangeParameterError);

namespace std {
template <>
struct is_error_code_enum<ConfigManagerChangeParameterError> : public true_type {};
}  // namespace std
