// Generated by the protocol buffer compiler.  DO NOT EDIT!
// clang-format off
// source: keyapis/telemetry_control/v1/keyapis_telemetry_control_template_v1.proto

// This CPP symbol can be defined to use imports that match up to the framework
// imports needed when using CocoaPods.
#if !defined(GPB_USE_PROTOBUF_FRAMEWORK_IMPORTS)
 #define GPB_USE_PROTOBUF_FRAMEWORK_IMPORTS 0
#endif

#if GPB_USE_PROTOBUF_FRAMEWORK_IMPORTS
 #import <Protobuf/GPBProtocolBuffers.h>
#else
 #import "GPBProtocolBuffers.h"
#endif

#if GOOGLE_PROTOBUF_OBJC_VERSION < 30007
#error This file was generated by a newer version of protoc which is incompatible with your Protocol Buffer library sources.
#endif
#if 30007 < GOOGLE_PROTOBUF_OBJC_MIN_SUPPORTED_VERSION
#error This file was generated by an older version of protoc which is incompatible with your Protocol Buffer library sources.
#endif

// @@protoc_insertion_point(imports)

#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wdeprecated-declarations"

CF_EXTERN_C_BEGIN

@class KEYAPISTELEMETRYCONTROLV1GetTemplateDeviceCountResponse_Error;
@class KEYAPISTELEMETRYCONTROLV1GetTemplateDeviceListResponse_Error;
@class KEYAPISTELEMETRYCONTROLV1GetTemplateIndicatorCountResponse_Error;
@class KEYAPISTELEMETRYCONTROLV1GetTemplateIndicatorListResponse_Error;
@class KEYAPISTELEMETRYCONTROLV1PostTemplateDeviceResponse_Error;
@class KEYAPISTELEMETRYCONTROLV1PostTemplateIndicatorResponse_Error;
@class KEYAPISTELEMETRYCONTROLV1TemplateDevice;
@class KEYAPISTELEMETRYCONTROLV1TemplateDeviceFilter;
@class KEYAPISTELEMETRYCONTROLV1TemplateDeviceFilter_ValidationError;
@class KEYAPISTELEMETRYCONTROLV1TemplateDevicePaging;
@class KEYAPISTELEMETRYCONTROLV1TemplateDevicePaging_ValidationError;
@class KEYAPISTELEMETRYCONTROLV1TemplateDevicePaging_ValidationError_LimitInvalid;
@class KEYAPISTELEMETRYCONTROLV1TemplateDevicePaging_ValidationError_OffsetInvalid;
@class KEYAPISTELEMETRYCONTROLV1TemplateDevice_ValidationError;
@class KEYAPISTELEMETRYCONTROLV1TemplateIndicator;
@class KEYAPISTELEMETRYCONTROLV1TemplateIndicatorFilter;
@class KEYAPISTELEMETRYCONTROLV1TemplateIndicatorFilter_ValidationError;
@class KEYAPISTELEMETRYCONTROLV1TemplateIndicatorPaging;
@class KEYAPISTELEMETRYCONTROLV1TemplateIndicatorPaging_ValidationError;
@class KEYAPISTELEMETRYCONTROLV1TemplateIndicatorPaging_ValidationError_LimitInvalid;
@class KEYAPISTELEMETRYCONTROLV1TemplateIndicatorPaging_ValidationError_OffsetInvalid;
@class KEYAPISTELEMETRYCONTROLV1TemplateIndicator_ValidationError;

NS_ASSUME_NONNULL_BEGIN

#pragma mark - Enum KEYAPISTELEMETRYCONTROLV1TemplateDevicePaging_OrderByType

/** Справочник типов значений сортировки */
typedef GPB_ENUM(KEYAPISTELEMETRYCONTROLV1TemplateDevicePaging_OrderByType) {
  /**
   * Value used if any message's field encounters a value that is not defined
   * by this enum. The message will also have C functions to get/set the rawValue
   * of the field.
   **/
  KEYAPISTELEMETRYCONTROLV1TemplateDevicePaging_OrderByType_GPBUnrecognizedEnumeratorValue = kGPBUnrecognizedEnumeratorValue,
  /** Значение не указано */
  KEYAPISTELEMETRYCONTROLV1TemplateDevicePaging_OrderByType_OrderByTypeUnknown = 0,

  /** По идентификатору */
  KEYAPISTELEMETRYCONTROLV1TemplateDevicePaging_OrderByType_Id = 1,

  /** По типу энергоресурса */
  KEYAPISTELEMETRYCONTROLV1TemplateDevicePaging_OrderByType_MetricType = 2,

  /** По модели счетчика */
  KEYAPISTELEMETRYCONTROLV1TemplateDevicePaging_OrderByType_Model = 3,
};

GPBEnumDescriptor *KEYAPISTELEMETRYCONTROLV1TemplateDevicePaging_OrderByType_EnumDescriptor(void);

/**
 * Checks to see if the given value is defined by the enum or was not known at
 * the time this source was generated.
 **/
BOOL KEYAPISTELEMETRYCONTROLV1TemplateDevicePaging_OrderByType_IsValidValue(int32_t value);

#pragma mark - Enum KEYAPISTELEMETRYCONTROLV1TemplateDevicePaging_DirectionType

/** Справочник типов направлений сортировки */
typedef GPB_ENUM(KEYAPISTELEMETRYCONTROLV1TemplateDevicePaging_DirectionType) {
  /**
   * Value used if any message's field encounters a value that is not defined
   * by this enum. The message will also have C functions to get/set the rawValue
   * of the field.
   **/
  KEYAPISTELEMETRYCONTROLV1TemplateDevicePaging_DirectionType_GPBUnrecognizedEnumeratorValue = kGPBUnrecognizedEnumeratorValue,
  /** Значение не указано */
  KEYAPISTELEMETRYCONTROLV1TemplateDevicePaging_DirectionType_DirectionTypeUnknown = 0,

  /** От большего к меньшему */
  KEYAPISTELEMETRYCONTROLV1TemplateDevicePaging_DirectionType_Desc = 1,

  /** От меньшего к большему */
  KEYAPISTELEMETRYCONTROLV1TemplateDevicePaging_DirectionType_Asc = 2,
};

GPBEnumDescriptor *KEYAPISTELEMETRYCONTROLV1TemplateDevicePaging_DirectionType_EnumDescriptor(void);

/**
 * Checks to see if the given value is defined by the enum or was not known at
 * the time this source was generated.
 **/
BOOL KEYAPISTELEMETRYCONTROLV1TemplateDevicePaging_DirectionType_IsValidValue(int32_t value);

#pragma mark - Enum KEYAPISTELEMETRYCONTROLV1TemplateDevice_MetricType

/** Справочние типов энергоресурсов */
typedef GPB_ENUM(KEYAPISTELEMETRYCONTROLV1TemplateDevice_MetricType) {
  /**
   * Value used if any message's field encounters a value that is not defined
   * by this enum. The message will also have C functions to get/set the rawValue
   * of the field.
   **/
  KEYAPISTELEMETRYCONTROLV1TemplateDevice_MetricType_GPBUnrecognizedEnumeratorValue = kGPBUnrecognizedEnumeratorValue,
  /** Значение не указано */
  KEYAPISTELEMETRYCONTROLV1TemplateDevice_MetricType_MetricTypeUnknown = 0,

  /** Горячая вода */
  KEYAPISTELEMETRYCONTROLV1TemplateDevice_MetricType_HotWater = 1,

  /** Холодная вода */
  KEYAPISTELEMETRYCONTROLV1TemplateDevice_MetricType_ColdWater = 2,

  /** Теплоэнергия */
  KEYAPISTELEMETRYCONTROLV1TemplateDevice_MetricType_Heat = 3,

  /** Газ */
  KEYAPISTELEMETRYCONTROLV1TemplateDevice_MetricType_Gas = 4,

  /** Электроэнергия */
  KEYAPISTELEMETRYCONTROLV1TemplateDevice_MetricType_Electricity = 5,
};

GPBEnumDescriptor *KEYAPISTELEMETRYCONTROLV1TemplateDevice_MetricType_EnumDescriptor(void);

/**
 * Checks to see if the given value is defined by the enum or was not known at
 * the time this source was generated.
 **/
BOOL KEYAPISTELEMETRYCONTROLV1TemplateDevice_MetricType_IsValidValue(int32_t value);

#pragma mark - Enum KEYAPISTELEMETRYCONTROLV1TemplateDevice_PlanType

/** Тип тарифного плана */
typedef GPB_ENUM(KEYAPISTELEMETRYCONTROLV1TemplateDevice_PlanType) {
  /**
   * Value used if any message's field encounters a value that is not defined
   * by this enum. The message will also have C functions to get/set the rawValue
   * of the field.
   **/
  KEYAPISTELEMETRYCONTROLV1TemplateDevice_PlanType_GPBUnrecognizedEnumeratorValue = kGPBUnrecognizedEnumeratorValue,
  /** Значение не указано */
  KEYAPISTELEMETRYCONTROLV1TemplateDevice_PlanType_PlanTypeUnknown = 0,

  /** Однотарифный */
  KEYAPISTELEMETRYCONTROLV1TemplateDevice_PlanType_Single = 1,

  /** Двухтарифный */
  KEYAPISTELEMETRYCONTROLV1TemplateDevice_PlanType_Double = 2,

  /** Трёхтарифный */
  KEYAPISTELEMETRYCONTROLV1TemplateDevice_PlanType_Triple = 3,
};

GPBEnumDescriptor *KEYAPISTELEMETRYCONTROLV1TemplateDevice_PlanType_EnumDescriptor(void);

/**
 * Checks to see if the given value is defined by the enum or was not known at
 * the time this source was generated.
 **/
BOOL KEYAPISTELEMETRYCONTROLV1TemplateDevice_PlanType_IsValidValue(int32_t value);

#pragma mark - Enum KEYAPISTELEMETRYCONTROLV1TemplateIndicatorPaging_OrderByType

/** Справочник типов значений сортировки */
typedef GPB_ENUM(KEYAPISTELEMETRYCONTROLV1TemplateIndicatorPaging_OrderByType) {
  /**
   * Value used if any message's field encounters a value that is not defined
   * by this enum. The message will also have C functions to get/set the rawValue
   * of the field.
   **/
  KEYAPISTELEMETRYCONTROLV1TemplateIndicatorPaging_OrderByType_GPBUnrecognizedEnumeratorValue = kGPBUnrecognizedEnumeratorValue,
  /** Значение не указано */
  KEYAPISTELEMETRYCONTROLV1TemplateIndicatorPaging_OrderByType_OrderByTypeUnknown = 0,

  /** По идентификатору */
  KEYAPISTELEMETRYCONTROLV1TemplateIndicatorPaging_OrderByType_Id = 1,

  /** По типу измерений */
  KEYAPISTELEMETRYCONTROLV1TemplateIndicatorPaging_OrderByType_SignType = 2,

  /** По типу архивности показаний */
  KEYAPISTELEMETRYCONTROLV1TemplateIndicatorPaging_OrderByType_ArchiveType = 3,
};

GPBEnumDescriptor *KEYAPISTELEMETRYCONTROLV1TemplateIndicatorPaging_OrderByType_EnumDescriptor(void);

/**
 * Checks to see if the given value is defined by the enum or was not known at
 * the time this source was generated.
 **/
BOOL KEYAPISTELEMETRYCONTROLV1TemplateIndicatorPaging_OrderByType_IsValidValue(int32_t value);

#pragma mark - Enum KEYAPISTELEMETRYCONTROLV1TemplateIndicatorPaging_DirectionType

/** Справочник типов направлений сортировки */
typedef GPB_ENUM(KEYAPISTELEMETRYCONTROLV1TemplateIndicatorPaging_DirectionType) {
  /**
   * Value used if any message's field encounters a value that is not defined
   * by this enum. The message will also have C functions to get/set the rawValue
   * of the field.
   **/
  KEYAPISTELEMETRYCONTROLV1TemplateIndicatorPaging_DirectionType_GPBUnrecognizedEnumeratorValue = kGPBUnrecognizedEnumeratorValue,
  /** Значение не указано */
  KEYAPISTELEMETRYCONTROLV1TemplateIndicatorPaging_DirectionType_DirectionTypeUnknown = 0,

  /** От большего к меньшему */
  KEYAPISTELEMETRYCONTROLV1TemplateIndicatorPaging_DirectionType_Desc = 1,

  /** От меньшего к большему */
  KEYAPISTELEMETRYCONTROLV1TemplateIndicatorPaging_DirectionType_Asc = 2,
};

GPBEnumDescriptor *KEYAPISTELEMETRYCONTROLV1TemplateIndicatorPaging_DirectionType_EnumDescriptor(void);

/**
 * Checks to see if the given value is defined by the enum or was not known at
 * the time this source was generated.
 **/
BOOL KEYAPISTELEMETRYCONTROLV1TemplateIndicatorPaging_DirectionType_IsValidValue(int32_t value);

#pragma mark - Enum KEYAPISTELEMETRYCONTROLV1TemplateIndicator_VendorType

/** Посредники получения показаний */
typedef GPB_ENUM(KEYAPISTELEMETRYCONTROLV1TemplateIndicator_VendorType) {
  /**
   * Value used if any message's field encounters a value that is not defined
   * by this enum. The message will also have C functions to get/set the rawValue
   * of the field.
   **/
  KEYAPISTELEMETRYCONTROLV1TemplateIndicator_VendorType_GPBUnrecognizedEnumeratorValue = kGPBUnrecognizedEnumeratorValue,
  /** Значение не указано */
  KEYAPISTELEMETRYCONTROLV1TemplateIndicator_VendorType_VendorTypeUnknown = 0,

  /** Энвайро */
  KEYAPISTELEMETRYCONTROLV1TemplateIndicator_VendorType_Enviro = 1,

  /** Лартех */
  KEYAPISTELEMETRYCONTROLV1TemplateIndicator_VendorType_Lartech = 2,

  /** РТК */
  KEYAPISTELEMETRYCONTROLV1TemplateIndicator_VendorType_Rtk = 3,
};

GPBEnumDescriptor *KEYAPISTELEMETRYCONTROLV1TemplateIndicator_VendorType_EnumDescriptor(void);

/**
 * Checks to see if the given value is defined by the enum or was not known at
 * the time this source was generated.
 **/
BOOL KEYAPISTELEMETRYCONTROLV1TemplateIndicator_VendorType_IsValidValue(int32_t value);

#pragma mark - Enum KEYAPISTELEMETRYCONTROLV1TemplateIndicator_UnitType

/** Справочник типов единиц измерений */
typedef GPB_ENUM(KEYAPISTELEMETRYCONTROLV1TemplateIndicator_UnitType) {
  /**
   * Value used if any message's field encounters a value that is not defined
   * by this enum. The message will also have C functions to get/set the rawValue
   * of the field.
   **/
  KEYAPISTELEMETRYCONTROLV1TemplateIndicator_UnitType_GPBUnrecognizedEnumeratorValue = kGPBUnrecognizedEnumeratorValue,
  /** Значение не указано */
  KEYAPISTELEMETRYCONTROLV1TemplateIndicator_UnitType_UnitTypeUnknown = 0,

  /** Процент */
  KEYAPISTELEMETRYCONTROLV1TemplateIndicator_UnitType_Percent = 1,

  /** Градус по Цельсию */
  KEYAPISTELEMETRYCONTROLV1TemplateIndicator_UnitType_C = 2,

  /** Ватт */
  KEYAPISTELEMETRYCONTROLV1TemplateIndicator_UnitType_Wt = 3,

  /** Гигакалория */
  KEYAPISTELEMETRYCONTROLV1TemplateIndicator_UnitType_Gkal = 4,

  /** Количество */
  KEYAPISTELEMETRYCONTROLV1TemplateIndicator_UnitType_Value = 5,

  /** Киловaтт-час */
  KEYAPISTELEMETRYCONTROLV1TemplateIndicator_UnitType_Kwh = 6,

  /** Килограмм на квадратный сантиметр */
  KEYAPISTELEMETRYCONTROLV1TemplateIndicator_UnitType_KgCm2 = 7,

  /** Килограмм-сила на квадратный сантиметр */
  KEYAPISTELEMETRYCONTROLV1TemplateIndicator_UnitType_KgfCm2 = 8,

  /** Кубический метр */
  KEYAPISTELEMETRYCONTROLV1TemplateIndicator_UnitType_M3 = 9,

  /** Кубический метр в час */
  KEYAPISTELEMETRYCONTROLV1TemplateIndicator_UnitType_M3H = 10,

  /** Мегапаскаль */
  KEYAPISTELEMETRYCONTROLV1TemplateIndicator_UnitType_Mpa = 11,

  /** Миллисекунда */
  KEYAPISTELEMETRYCONTROLV1TemplateIndicator_UnitType_Ms = 12,

  /** Флаг состояния */
  KEYAPISTELEMETRYCONTROLV1TemplateIndicator_UnitType_Boolean = 13,

  /** Тонна */
  KEYAPISTELEMETRYCONTROLV1TemplateIndicator_UnitType_T = 14,

  /** Тонна в час */
  KEYAPISTELEMETRYCONTROLV1TemplateIndicator_UnitType_TH = 15,

  /** Час */
  KEYAPISTELEMETRYCONTROLV1TemplateIndicator_UnitType_H = 16,

  /** Безразмерная величина */
  KEYAPISTELEMETRYCONTROLV1TemplateIndicator_UnitType_NonMeasurable = 17,

  /** Импульс */
  KEYAPISTELEMETRYCONTROLV1TemplateIndicator_UnitType_Imp = 18,

  /** Джоуль */
  KEYAPISTELEMETRYCONTROLV1TemplateIndicator_UnitType_J = 19,

  /** Килоджоуль */
  KEYAPISTELEMETRYCONTROLV1TemplateIndicator_UnitType_Kj = 20,

  /** Гигаджоуль */
  KEYAPISTELEMETRYCONTROLV1TemplateIndicator_UnitType_Gj = 21,

  /** Ватт-час */
  KEYAPISTELEMETRYCONTROLV1TemplateIndicator_UnitType_Wth = 22,

  /** Киловатт */
  KEYAPISTELEMETRYCONTROLV1TemplateIndicator_UnitType_Kwt = 23,

  /** Минута */
  KEYAPISTELEMETRYCONTROLV1TemplateIndicator_UnitType_Min = 24,

  /** Секунда */
  KEYAPISTELEMETRYCONTROLV1TemplateIndicator_UnitType_S = 25,
};

GPBEnumDescriptor *KEYAPISTELEMETRYCONTROLV1TemplateIndicator_UnitType_EnumDescriptor(void);

/**
 * Checks to see if the given value is defined by the enum or was not known at
 * the time this source was generated.
 **/
BOOL KEYAPISTELEMETRYCONTROLV1TemplateIndicator_UnitType_IsValidValue(int32_t value);

#pragma mark - Enum KEYAPISTELEMETRYCONTROLV1TemplateIndicator_SignType

/** Справочник типов измерений */
typedef GPB_ENUM(KEYAPISTELEMETRYCONTROLV1TemplateIndicator_SignType) {
  /**
   * Value used if any message's field encounters a value that is not defined
   * by this enum. The message will also have C functions to get/set the rawValue
   * of the field.
   **/
  KEYAPISTELEMETRYCONTROLV1TemplateIndicator_SignType_GPBUnrecognizedEnumeratorValue = kGPBUnrecognizedEnumeratorValue,
  /** Значение не указано */
  KEYAPISTELEMETRYCONTROLV1TemplateIndicator_SignType_SignTypeUnknown = 0,

  /** Абсолютный показатель */
  KEYAPISTELEMETRYCONTROLV1TemplateIndicator_SignType_AbsoluteDs = 1,

  /** Абсолютный расход ресурса */
  KEYAPISTELEMETRYCONTROLV1TemplateIndicator_SignType_AbsoluteRc = 2,

  /** Интервальный показатель состояния */
  KEYAPISTELEMETRYCONTROLV1TemplateIndicator_SignType_IntervalDs = 3,

  /** Интервальный расход ресурса */
  KEYAPISTELEMETRYCONTROLV1TemplateIndicator_SignType_IntervalRc = 4,

  /** Текущее состояние */
  KEYAPISTELEMETRYCONTROLV1TemplateIndicator_SignType_CurrentDs = 5,

  /** Текущее состояние ресурса */
  KEYAPISTELEMETRYCONTROLV1TemplateIndicator_SignType_CurrentRs = 6,

  /** Объём */
  KEYAPISTELEMETRYCONTROLV1TemplateIndicator_SignType_Volume = 7,

  /** Параметр конфигурации */
  KEYAPISTELEMETRYCONTROLV1TemplateIndicator_SignType_Parameter = 8,

  /** Флаг состояния */
  KEYAPISTELEMETRYCONTROLV1TemplateIndicator_SignType_Flag = 9,
};

GPBEnumDescriptor *KEYAPISTELEMETRYCONTROLV1TemplateIndicator_SignType_EnumDescriptor(void);

/**
 * Checks to see if the given value is defined by the enum or was not known at
 * the time this source was generated.
 **/
BOOL KEYAPISTELEMETRYCONTROLV1TemplateIndicator_SignType_IsValidValue(int32_t value);

#pragma mark - Enum KEYAPISTELEMETRYCONTROLV1TemplateIndicator_ArchiveType

/**
 * Справочник типа архивности показаний.
 * Используется для указания за какой период произошло измерение.
 * По умолчанию CURRENT
 **/
typedef GPB_ENUM(KEYAPISTELEMETRYCONTROLV1TemplateIndicator_ArchiveType) {
  /**
   * Value used if any message's field encounters a value that is not defined
   * by this enum. The message will also have C functions to get/set the rawValue
   * of the field.
   **/
  KEYAPISTELEMETRYCONTROLV1TemplateIndicator_ArchiveType_GPBUnrecognizedEnumeratorValue = kGPBUnrecognizedEnumeratorValue,
  /** Значение не указано */
  KEYAPISTELEMETRYCONTROLV1TemplateIndicator_ArchiveType_ArchiveTypeUnknown = 0,

  /** Текущие показания */
  KEYAPISTELEMETRYCONTROLV1TemplateIndicator_ArchiveType_Current = 1,

  /** За 30 мин */
  KEYAPISTELEMETRYCONTROLV1TemplateIndicator_ArchiveType_Halfhour = 2,

  /** За час */
  KEYAPISTELEMETRYCONTROLV1TemplateIndicator_ArchiveType_Hour = 3,

  /** За суток */
  KEYAPISTELEMETRYCONTROLV1TemplateIndicator_ArchiveType_Day = 4,

  /** За месяц */
  KEYAPISTELEMETRYCONTROLV1TemplateIndicator_ArchiveType_Month = 5,

  /** За год */
  KEYAPISTELEMETRYCONTROLV1TemplateIndicator_ArchiveType_Year = 6,
};

GPBEnumDescriptor *KEYAPISTELEMETRYCONTROLV1TemplateIndicator_ArchiveType_EnumDescriptor(void);

/**
 * Checks to see if the given value is defined by the enum or was not known at
 * the time this source was generated.
 **/
BOOL KEYAPISTELEMETRYCONTROLV1TemplateIndicator_ArchiveType_IsValidValue(int32_t value);

#pragma mark - KEYAPISTELEMETRYCONTROLV1KeyapisTelemetryControlTemplateV1Root

/**
 * Exposes the extension registry for this file.
 *
 * The base class provides:
 * @code
 *   + (GPBExtensionRegistry *)extensionRegistry;
 * @endcode
 * which is a @c GPBExtensionRegistry that includes all the extensions defined by
 * this file and all files that it depends on.
 **/
GPB_FINAL @interface KEYAPISTELEMETRYCONTROLV1KeyapisTelemetryControlTemplateV1Root : GPBRootObject
@end

#pragma mark - KEYAPISTELEMETRYCONTROLV1PostTemplateDeviceRequest

typedef GPB_ENUM(KEYAPISTELEMETRYCONTROLV1PostTemplateDeviceRequest_FieldNumber) {
  KEYAPISTELEMETRYCONTROLV1PostTemplateDeviceRequest_FieldNumber_Data_p = 1,
};

/**
 * Запрос сохранения шаблона ПУ
 **/
GPB_FINAL @interface KEYAPISTELEMETRYCONTROLV1PostTemplateDeviceRequest : GPBMessage

/** Шаблон ПУ */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISTELEMETRYCONTROLV1TemplateDevice *data_p;
/** Test to see if @c data_p has been set. */
@property(nonatomic, readwrite) BOOL hasData_p;

@end

#pragma mark - KEYAPISTELEMETRYCONTROLV1PostTemplateDeviceResponse

typedef GPB_ENUM(KEYAPISTELEMETRYCONTROLV1PostTemplateDeviceResponse_FieldNumber) {
  KEYAPISTELEMETRYCONTROLV1PostTemplateDeviceResponse_FieldNumber_Data_p = 1,
  KEYAPISTELEMETRYCONTROLV1PostTemplateDeviceResponse_FieldNumber_Error = 2,
};

typedef GPB_ENUM(KEYAPISTELEMETRYCONTROLV1PostTemplateDeviceResponse_Type_OneOfCase) {
  KEYAPISTELEMETRYCONTROLV1PostTemplateDeviceResponse_Type_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISTELEMETRYCONTROLV1PostTemplateDeviceResponse_Type_OneOfCase_Data_p = 1,
  KEYAPISTELEMETRYCONTROLV1PostTemplateDeviceResponse_Type_OneOfCase_Error = 2,
};

/**
 * Ответ на запрос сохранения шаблона ПУ
 **/
GPB_FINAL @interface KEYAPISTELEMETRYCONTROLV1PostTemplateDeviceResponse : GPBMessage

/** Тип результата */
@property(nonatomic, readonly) KEYAPISTELEMETRYCONTROLV1PostTemplateDeviceResponse_Type_OneOfCase typeOneOfCase;

/** Шаблон ПУ */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISTELEMETRYCONTROLV1TemplateDevice *data_p;

/** Ошибка */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISTELEMETRYCONTROLV1PostTemplateDeviceResponse_Error *error;

@end

/**
 * Clears whatever value was set for the oneof 'type'.
 **/
void KEYAPISTELEMETRYCONTROLV1PostTemplateDeviceResponse_ClearTypeOneOfCase(KEYAPISTELEMETRYCONTROLV1PostTemplateDeviceResponse *message);

#pragma mark - KEYAPISTELEMETRYCONTROLV1PostTemplateDeviceResponse_Error

typedef GPB_ENUM(KEYAPISTELEMETRYCONTROLV1PostTemplateDeviceResponse_Error_FieldNumber) {
  KEYAPISTELEMETRYCONTROLV1PostTemplateDeviceResponse_Error_FieldNumber_Validation = 1,
};

typedef GPB_ENUM(KEYAPISTELEMETRYCONTROLV1PostTemplateDeviceResponse_Error_Reason_OneOfCase) {
  KEYAPISTELEMETRYCONTROLV1PostTemplateDeviceResponse_Error_Reason_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISTELEMETRYCONTROLV1PostTemplateDeviceResponse_Error_Reason_OneOfCase_Validation = 1,
};

/**
 * Ошибка запроса сохранения шаблона ПУ
 **/
GPB_FINAL @interface KEYAPISTELEMETRYCONTROLV1PostTemplateDeviceResponse_Error : GPBMessage

/** Причина ошибки */
@property(nonatomic, readonly) KEYAPISTELEMETRYCONTROLV1PostTemplateDeviceResponse_Error_Reason_OneOfCase reasonOneOfCase;

/** Ошибка валидации */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISTELEMETRYCONTROLV1TemplateDevice_ValidationError *validation;

@end

/**
 * Clears whatever value was set for the oneof 'reason'.
 **/
void KEYAPISTELEMETRYCONTROLV1PostTemplateDeviceResponse_Error_ClearReasonOneOfCase(KEYAPISTELEMETRYCONTROLV1PostTemplateDeviceResponse_Error *message);

#pragma mark - KEYAPISTELEMETRYCONTROLV1DeleteTemplateDeviceRequest

typedef GPB_ENUM(KEYAPISTELEMETRYCONTROLV1DeleteTemplateDeviceRequest_FieldNumber) {
  KEYAPISTELEMETRYCONTROLV1DeleteTemplateDeviceRequest_FieldNumber_Id_p = 1,
};

/**
 * Запрос удаления шаблона ПУ
 **/
GPB_FINAL @interface KEYAPISTELEMETRYCONTROLV1DeleteTemplateDeviceRequest : GPBMessage

/** Идентификатор */
@property(nonatomic, readwrite) int32_t id_p;

@end

#pragma mark - KEYAPISTELEMETRYCONTROLV1DeleteTemplateDeviceResponse

/**
 * Ответ на запрос удаления шаблона ПУ
 **/
GPB_FINAL @interface KEYAPISTELEMETRYCONTROLV1DeleteTemplateDeviceResponse : GPBMessage

@end

#pragma mark - KEYAPISTELEMETRYCONTROLV1GetTemplateDeviceRequest

typedef GPB_ENUM(KEYAPISTELEMETRYCONTROLV1GetTemplateDeviceRequest_FieldNumber) {
  KEYAPISTELEMETRYCONTROLV1GetTemplateDeviceRequest_FieldNumber_Id_p = 1,
};

/**
 * Запрос получения шаблона ПУ
 **/
GPB_FINAL @interface KEYAPISTELEMETRYCONTROLV1GetTemplateDeviceRequest : GPBMessage

/** Идентификатор шаблона ПУ */
@property(nonatomic, readwrite) int32_t id_p;

@end

#pragma mark - KEYAPISTELEMETRYCONTROLV1GetTemplateDeviceResponse

typedef GPB_ENUM(KEYAPISTELEMETRYCONTROLV1GetTemplateDeviceResponse_FieldNumber) {
  KEYAPISTELEMETRYCONTROLV1GetTemplateDeviceResponse_FieldNumber_Data_p = 1,
};

typedef GPB_ENUM(KEYAPISTELEMETRYCONTROLV1GetTemplateDeviceResponse_Type_OneOfCase) {
  KEYAPISTELEMETRYCONTROLV1GetTemplateDeviceResponse_Type_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISTELEMETRYCONTROLV1GetTemplateDeviceResponse_Type_OneOfCase_Data_p = 1,
};

/**
 * Ответ на запрос получения шаблона ПУ
 **/
GPB_FINAL @interface KEYAPISTELEMETRYCONTROLV1GetTemplateDeviceResponse : GPBMessage

/** Тип результата */
@property(nonatomic, readonly) KEYAPISTELEMETRYCONTROLV1GetTemplateDeviceResponse_Type_OneOfCase typeOneOfCase;

/** Шаблон ПУ */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISTELEMETRYCONTROLV1TemplateDevice *data_p;

@end

/**
 * Clears whatever value was set for the oneof 'type'.
 **/
void KEYAPISTELEMETRYCONTROLV1GetTemplateDeviceResponse_ClearTypeOneOfCase(KEYAPISTELEMETRYCONTROLV1GetTemplateDeviceResponse *message);

#pragma mark - KEYAPISTELEMETRYCONTROLV1GetTemplateDeviceListRequest

typedef GPB_ENUM(KEYAPISTELEMETRYCONTROLV1GetTemplateDeviceListRequest_FieldNumber) {
  KEYAPISTELEMETRYCONTROLV1GetTemplateDeviceListRequest_FieldNumber_Filter = 1,
  KEYAPISTELEMETRYCONTROLV1GetTemplateDeviceListRequest_FieldNumber_Paging = 2,
};

typedef GPB_ENUM(KEYAPISTELEMETRYCONTROLV1GetTemplateDeviceListRequest_Pagination_OneOfCase) {
  KEYAPISTELEMETRYCONTROLV1GetTemplateDeviceListRequest_Pagination_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISTELEMETRYCONTROLV1GetTemplateDeviceListRequest_Pagination_OneOfCase_Paging = 2,
};

/**
 * Запрос получения списка шаблонов ПУ
 **/
GPB_FINAL @interface KEYAPISTELEMETRYCONTROLV1GetTemplateDeviceListRequest : GPBMessage

/** Фильтр */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISTELEMETRYCONTROLV1TemplateDeviceFilter *filter;
/** Test to see if @c filter has been set. */
@property(nonatomic, readwrite) BOOL hasFilter;

/** Вариант разбиения на страницы */
@property(nonatomic, readonly) KEYAPISTELEMETRYCONTROLV1GetTemplateDeviceListRequest_Pagination_OneOfCase paginationOneOfCase;

/** Пагинация */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISTELEMETRYCONTROLV1TemplateDevicePaging *paging;

@end

/**
 * Clears whatever value was set for the oneof 'pagination'.
 **/
void KEYAPISTELEMETRYCONTROLV1GetTemplateDeviceListRequest_ClearPaginationOneOfCase(KEYAPISTELEMETRYCONTROLV1GetTemplateDeviceListRequest *message);

#pragma mark - KEYAPISTELEMETRYCONTROLV1TemplateDevicePaging

typedef GPB_ENUM(KEYAPISTELEMETRYCONTROLV1TemplateDevicePaging_FieldNumber) {
  KEYAPISTELEMETRYCONTROLV1TemplateDevicePaging_FieldNumber_OrderByType = 1,
  KEYAPISTELEMETRYCONTROLV1TemplateDevicePaging_FieldNumber_DirectionType = 2,
  KEYAPISTELEMETRYCONTROLV1TemplateDevicePaging_FieldNumber_Limit = 3,
  KEYAPISTELEMETRYCONTROLV1TemplateDevicePaging_FieldNumber_Offset = 4,
};

/**
 * Пагинация
 **/
GPB_FINAL @interface KEYAPISTELEMETRYCONTROLV1TemplateDevicePaging : GPBMessage

/**
 * Тип значения сортировки.
 * По умолчанию: ID
 **/
@property(nonatomic, readwrite) KEYAPISTELEMETRYCONTROLV1TemplateDevicePaging_OrderByType orderByType;

/**
 * Тип направления сортировки.
 * По умолчанию: DESC
 **/
@property(nonatomic, readwrite) KEYAPISTELEMETRYCONTROLV1TemplateDevicePaging_DirectionType directionType;

/**
 * Количество.
 * Минимальное значение: 1.
 * Максимальное значение: 100.
 * По умолчанию: 20.
 * Если значение 0 (не передано) то выставляем значение по умолчанию
 **/
@property(nonatomic, readwrite) int32_t limit;

/**
 * Сдвиг.
 * По умолчанию: 0
 **/
@property(nonatomic, readwrite) int32_t offset;

@end

/**
 * Fetches the raw value of a @c KEYAPISTELEMETRYCONTROLV1TemplateDevicePaging's @c orderByType property, even
 * if the value was not defined by the enum at the time the code was generated.
 **/
int32_t KEYAPISTELEMETRYCONTROLV1TemplateDevicePaging_OrderByType_RawValue(KEYAPISTELEMETRYCONTROLV1TemplateDevicePaging *message);
/**
 * Sets the raw value of an @c KEYAPISTELEMETRYCONTROLV1TemplateDevicePaging's @c orderByType property, allowing
 * it to be set to a value that was not defined by the enum at the time the code
 * was generated.
 **/
void SetKEYAPISTELEMETRYCONTROLV1TemplateDevicePaging_OrderByType_RawValue(KEYAPISTELEMETRYCONTROLV1TemplateDevicePaging *message, int32_t value);

/**
 * Fetches the raw value of a @c KEYAPISTELEMETRYCONTROLV1TemplateDevicePaging's @c directionType property, even
 * if the value was not defined by the enum at the time the code was generated.
 **/
int32_t KEYAPISTELEMETRYCONTROLV1TemplateDevicePaging_DirectionType_RawValue(KEYAPISTELEMETRYCONTROLV1TemplateDevicePaging *message);
/**
 * Sets the raw value of an @c KEYAPISTELEMETRYCONTROLV1TemplateDevicePaging's @c directionType property, allowing
 * it to be set to a value that was not defined by the enum at the time the code
 * was generated.
 **/
void SetKEYAPISTELEMETRYCONTROLV1TemplateDevicePaging_DirectionType_RawValue(KEYAPISTELEMETRYCONTROLV1TemplateDevicePaging *message, int32_t value);

#pragma mark - KEYAPISTELEMETRYCONTROLV1TemplateDevicePaging_ValidationError

typedef GPB_ENUM(KEYAPISTELEMETRYCONTROLV1TemplateDevicePaging_ValidationError_FieldNumber) {
  KEYAPISTELEMETRYCONTROLV1TemplateDevicePaging_ValidationError_FieldNumber_Limit = 1,
  KEYAPISTELEMETRYCONTROLV1TemplateDevicePaging_ValidationError_FieldNumber_Offset = 2,
};

typedef GPB_ENUM(KEYAPISTELEMETRYCONTROLV1TemplateDevicePaging_ValidationError_Reason_OneOfCase) {
  KEYAPISTELEMETRYCONTROLV1TemplateDevicePaging_ValidationError_Reason_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISTELEMETRYCONTROLV1TemplateDevicePaging_ValidationError_Reason_OneOfCase_Limit = 1,
  KEYAPISTELEMETRYCONTROLV1TemplateDevicePaging_ValidationError_Reason_OneOfCase_Offset = 2,
};

/**
 * Ошибка валидации постраничной пагинации по шаблонам ПУ.
 * Эти проверки выполняются до обращения в базу данных
 **/
GPB_FINAL @interface KEYAPISTELEMETRYCONTROLV1TemplateDevicePaging_ValidationError : GPBMessage

/** Причина ошибки */
@property(nonatomic, readonly) KEYAPISTELEMETRYCONTROLV1TemplateDevicePaging_ValidationError_Reason_OneOfCase reasonOneOfCase;

/** Количество передано некорректно */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISTELEMETRYCONTROLV1TemplateDevicePaging_ValidationError_LimitInvalid *limit;

/** Сдвиг передан некорректно */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISTELEMETRYCONTROLV1TemplateDevicePaging_ValidationError_OffsetInvalid *offset;

@end

/**
 * Clears whatever value was set for the oneof 'reason'.
 **/
void KEYAPISTELEMETRYCONTROLV1TemplateDevicePaging_ValidationError_ClearReasonOneOfCase(KEYAPISTELEMETRYCONTROLV1TemplateDevicePaging_ValidationError *message);

#pragma mark - KEYAPISTELEMETRYCONTROLV1TemplateDevicePaging_ValidationError_LimitInvalid

/**
 * Причины:
 * - Значение количества < 0 или > 100
 **/
GPB_FINAL @interface KEYAPISTELEMETRYCONTROLV1TemplateDevicePaging_ValidationError_LimitInvalid : GPBMessage

@end

#pragma mark - KEYAPISTELEMETRYCONTROLV1TemplateDevicePaging_ValidationError_OffsetInvalid

/**
 * Причины:
 * - Значение сдвига < 0
 **/
GPB_FINAL @interface KEYAPISTELEMETRYCONTROLV1TemplateDevicePaging_ValidationError_OffsetInvalid : GPBMessage

@end

#pragma mark - KEYAPISTELEMETRYCONTROLV1TemplateDeviceFilter

typedef GPB_ENUM(KEYAPISTELEMETRYCONTROLV1TemplateDeviceFilter_FieldNumber) {
  KEYAPISTELEMETRYCONTROLV1TemplateDeviceFilter_FieldNumber_MetricTypesArray = 1,
  KEYAPISTELEMETRYCONTROLV1TemplateDeviceFilter_FieldNumber_ModelIdsArray = 2,
  KEYAPISTELEMETRYCONTROLV1TemplateDeviceFilter_FieldNumber_PlanTypesArray = 3,
  KEYAPISTELEMETRYCONTROLV1TemplateDeviceFilter_FieldNumber_IndicatorVendorTypesArray = 4,
};

/**
 * Фильтр для запроса шаблонов приборов учета.
 * При передаче массива в параметр фильтра элементы массива работают в выборке через ИЛИ.
 * При передаче нескольких разных параметров фильтра они работают в выборке через И
 **/
GPB_FINAL @interface KEYAPISTELEMETRYCONTROLV1TemplateDeviceFilter : GPBMessage

/** По типу энергоресурса */
// |metricTypesArray| contains |KEYAPISTELEMETRYCONTROLV1TemplateDevice_MetricType|
@property(nonatomic, readwrite, strong, null_resettable) GPBEnumArray *metricTypesArray;
/** The number of items in @c metricTypesArray without causing the container to be created. */
@property(nonatomic, readonly) NSUInteger metricTypesArray_Count;

/** По ID модели счетчика */
@property(nonatomic, readwrite, strong, null_resettable) GPBInt32Array *modelIdsArray;
/** The number of items in @c modelIdsArray without causing the container to be created. */
@property(nonatomic, readonly) NSUInteger modelIdsArray_Count;

/** По типу тарифного плана. Для ПУ электроэнергии */
// |planTypesArray| contains |KEYAPISTELEMETRYCONTROLV1TemplateDevice_PlanType|
@property(nonatomic, readwrite, strong, null_resettable) GPBEnumArray *planTypesArray;
/** The number of items in @c planTypesArray without causing the container to be created. */
@property(nonatomic, readonly) NSUInteger planTypesArray_Count;

/** По посреднику получения показаний */
// |indicatorVendorTypesArray| contains |KEYAPISTELEMETRYCONTROLV1TemplateIndicator_VendorType|
@property(nonatomic, readwrite, strong, null_resettable) GPBEnumArray *indicatorVendorTypesArray;
/** The number of items in @c indicatorVendorTypesArray without causing the container to be created. */
@property(nonatomic, readonly) NSUInteger indicatorVendorTypesArray_Count;

@end

#pragma mark - KEYAPISTELEMETRYCONTROLV1TemplateDeviceFilter_ValidationError

typedef GPB_ENUM(KEYAPISTELEMETRYCONTROLV1TemplateDeviceFilter_ValidationError_FieldNumber) {
  KEYAPISTELEMETRYCONTROLV1TemplateDeviceFilter_ValidationError_FieldNumber_Path = 1,
  KEYAPISTELEMETRYCONTROLV1TemplateDeviceFilter_ValidationError_FieldNumber_Message = 2,
};

/**
 * Ошибки валидации.
 * Эти проверки выполняются до обращения в базу данных
 **/
GPB_FINAL @interface KEYAPISTELEMETRYCONTROLV1TemplateDeviceFilter_ValidationError : GPBMessage

/** Путь к полю в формате наименования protobuf */
@property(nonatomic, readwrite, copy, null_resettable) NSString *path;

/** Валидационное сообщение */
@property(nonatomic, readwrite, copy, null_resettable) NSString *message;

@end

#pragma mark - KEYAPISTELEMETRYCONTROLV1GetTemplateDeviceListResponse

typedef GPB_ENUM(KEYAPISTELEMETRYCONTROLV1GetTemplateDeviceListResponse_FieldNumber) {
  KEYAPISTELEMETRYCONTROLV1GetTemplateDeviceListResponse_FieldNumber_Data_p = 1,
  KEYAPISTELEMETRYCONTROLV1GetTemplateDeviceListResponse_FieldNumber_Error = 2,
};

typedef GPB_ENUM(KEYAPISTELEMETRYCONTROLV1GetTemplateDeviceListResponse_Type_OneOfCase) {
  KEYAPISTELEMETRYCONTROLV1GetTemplateDeviceListResponse_Type_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISTELEMETRYCONTROLV1GetTemplateDeviceListResponse_Type_OneOfCase_Data_p = 1,
  KEYAPISTELEMETRYCONTROLV1GetTemplateDeviceListResponse_Type_OneOfCase_Error = 2,
};

/**
 * Ответ на запрос получения списка шаблонов приборов учета
 **/
GPB_FINAL @interface KEYAPISTELEMETRYCONTROLV1GetTemplateDeviceListResponse : GPBMessage

/** Тип результата */
@property(nonatomic, readonly) KEYAPISTELEMETRYCONTROLV1GetTemplateDeviceListResponse_Type_OneOfCase typeOneOfCase;

/** Шаблон ПУ */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISTELEMETRYCONTROLV1TemplateDevice *data_p;

/** Ошибка */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISTELEMETRYCONTROLV1GetTemplateDeviceListResponse_Error *error;

@end

/**
 * Clears whatever value was set for the oneof 'type'.
 **/
void KEYAPISTELEMETRYCONTROLV1GetTemplateDeviceListResponse_ClearTypeOneOfCase(KEYAPISTELEMETRYCONTROLV1GetTemplateDeviceListResponse *message);

#pragma mark - KEYAPISTELEMETRYCONTROLV1GetTemplateDeviceListResponse_Error

typedef GPB_ENUM(KEYAPISTELEMETRYCONTROLV1GetTemplateDeviceListResponse_Error_FieldNumber) {
  KEYAPISTELEMETRYCONTROLV1GetTemplateDeviceListResponse_Error_FieldNumber_TemplateDeviceFilterValidation = 1,
  KEYAPISTELEMETRYCONTROLV1GetTemplateDeviceListResponse_Error_FieldNumber_TemplateDevicePagingValidation = 2,
};

typedef GPB_ENUM(KEYAPISTELEMETRYCONTROLV1GetTemplateDeviceListResponse_Error_Reason_OneOfCase) {
  KEYAPISTELEMETRYCONTROLV1GetTemplateDeviceListResponse_Error_Reason_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISTELEMETRYCONTROLV1GetTemplateDeviceListResponse_Error_Reason_OneOfCase_TemplateDeviceFilterValidation = 1,
  KEYAPISTELEMETRYCONTROLV1GetTemplateDeviceListResponse_Error_Reason_OneOfCase_TemplateDevicePagingValidation = 2,
};

/**
 * Ошибка запроса получения списка шаблонов приборов учета
 **/
GPB_FINAL @interface KEYAPISTELEMETRYCONTROLV1GetTemplateDeviceListResponse_Error : GPBMessage

/** Причина ошибки */
@property(nonatomic, readonly) KEYAPISTELEMETRYCONTROLV1GetTemplateDeviceListResponse_Error_Reason_OneOfCase reasonOneOfCase;

/** Ошибка фильтрации */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISTELEMETRYCONTROLV1TemplateDeviceFilter_ValidationError *templateDeviceFilterValidation;

/** Ошибка пагинации  по страницам */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISTELEMETRYCONTROLV1TemplateDevicePaging_ValidationError *templateDevicePagingValidation;

@end

/**
 * Clears whatever value was set for the oneof 'reason'.
 **/
void KEYAPISTELEMETRYCONTROLV1GetTemplateDeviceListResponse_Error_ClearReasonOneOfCase(KEYAPISTELEMETRYCONTROLV1GetTemplateDeviceListResponse_Error *message);

#pragma mark - KEYAPISTELEMETRYCONTROLV1GetTemplateDeviceCountRequest

typedef GPB_ENUM(KEYAPISTELEMETRYCONTROLV1GetTemplateDeviceCountRequest_FieldNumber) {
  KEYAPISTELEMETRYCONTROLV1GetTemplateDeviceCountRequest_FieldNumber_Filter = 1,
};

/**
 * Запрос получения количества шаблонов приборов учета
 **/
GPB_FINAL @interface KEYAPISTELEMETRYCONTROLV1GetTemplateDeviceCountRequest : GPBMessage

/** Фильтр по шаблонам приборов учета */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISTELEMETRYCONTROLV1TemplateDeviceFilter *filter;
/** Test to see if @c filter has been set. */
@property(nonatomic, readwrite) BOOL hasFilter;

@end

#pragma mark - KEYAPISTELEMETRYCONTROLV1GetTemplateDeviceCountResponse

typedef GPB_ENUM(KEYAPISTELEMETRYCONTROLV1GetTemplateDeviceCountResponse_FieldNumber) {
  KEYAPISTELEMETRYCONTROLV1GetTemplateDeviceCountResponse_FieldNumber_Data_p = 1,
  KEYAPISTELEMETRYCONTROLV1GetTemplateDeviceCountResponse_FieldNumber_Error = 2,
};

typedef GPB_ENUM(KEYAPISTELEMETRYCONTROLV1GetTemplateDeviceCountResponse_Type_OneOfCase) {
  KEYAPISTELEMETRYCONTROLV1GetTemplateDeviceCountResponse_Type_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISTELEMETRYCONTROLV1GetTemplateDeviceCountResponse_Type_OneOfCase_Data_p = 1,
  KEYAPISTELEMETRYCONTROLV1GetTemplateDeviceCountResponse_Type_OneOfCase_Error = 2,
};

/**
 * Ответ на запрос получения количества шаблонов приборов учета
 **/
GPB_FINAL @interface KEYAPISTELEMETRYCONTROLV1GetTemplateDeviceCountResponse : GPBMessage

/** Тип результата */
@property(nonatomic, readonly) KEYAPISTELEMETRYCONTROLV1GetTemplateDeviceCountResponse_Type_OneOfCase typeOneOfCase;

/** Всего шаблонов приборов учета */
@property(nonatomic, readwrite) int32_t data_p;

/** Ошибка */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISTELEMETRYCONTROLV1GetTemplateDeviceCountResponse_Error *error;

@end

/**
 * Clears whatever value was set for the oneof 'type'.
 **/
void KEYAPISTELEMETRYCONTROLV1GetTemplateDeviceCountResponse_ClearTypeOneOfCase(KEYAPISTELEMETRYCONTROLV1GetTemplateDeviceCountResponse *message);

#pragma mark - KEYAPISTELEMETRYCONTROLV1GetTemplateDeviceCountResponse_Error

typedef GPB_ENUM(KEYAPISTELEMETRYCONTROLV1GetTemplateDeviceCountResponse_Error_FieldNumber) {
  KEYAPISTELEMETRYCONTROLV1GetTemplateDeviceCountResponse_Error_FieldNumber_TemplateDeviceFilterValidation = 1,
};

typedef GPB_ENUM(KEYAPISTELEMETRYCONTROLV1GetTemplateDeviceCountResponse_Error_Reason_OneOfCase) {
  KEYAPISTELEMETRYCONTROLV1GetTemplateDeviceCountResponse_Error_Reason_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISTELEMETRYCONTROLV1GetTemplateDeviceCountResponse_Error_Reason_OneOfCase_TemplateDeviceFilterValidation = 1,
};

/**
 * Ошибка запроса получения количества шаблонов приборов учета
 **/
GPB_FINAL @interface KEYAPISTELEMETRYCONTROLV1GetTemplateDeviceCountResponse_Error : GPBMessage

/** Причина ошибки */
@property(nonatomic, readonly) KEYAPISTELEMETRYCONTROLV1GetTemplateDeviceCountResponse_Error_Reason_OneOfCase reasonOneOfCase;

/** Ошибка фильтрации */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISTELEMETRYCONTROLV1TemplateDeviceFilter_ValidationError *templateDeviceFilterValidation;

@end

/**
 * Clears whatever value was set for the oneof 'reason'.
 **/
void KEYAPISTELEMETRYCONTROLV1GetTemplateDeviceCountResponse_Error_ClearReasonOneOfCase(KEYAPISTELEMETRYCONTROLV1GetTemplateDeviceCountResponse_Error *message);

#pragma mark - KEYAPISTELEMETRYCONTROLV1TemplateDevice

typedef GPB_ENUM(KEYAPISTELEMETRYCONTROLV1TemplateDevice_FieldNumber) {
  KEYAPISTELEMETRYCONTROLV1TemplateDevice_FieldNumber_Id_p = 1,
  KEYAPISTELEMETRYCONTROLV1TemplateDevice_FieldNumber_CreatedAt = 2,
  KEYAPISTELEMETRYCONTROLV1TemplateDevice_FieldNumber_ChangedAt = 3,
  KEYAPISTELEMETRYCONTROLV1TemplateDevice_FieldNumber_MetricType = 4,
  KEYAPISTELEMETRYCONTROLV1TemplateDevice_FieldNumber_ModelId = 5,
  KEYAPISTELEMETRYCONTROLV1TemplateDevice_FieldNumber_IndicatorTemplateIdsArray = 6,
  KEYAPISTELEMETRYCONTROLV1TemplateDevice_FieldNumber_PlanType = 7,
  KEYAPISTELEMETRYCONTROLV1TemplateDevice_FieldNumber_IndicatorVendorType = 8,
};

/**
 * Шаблон ПУ
 **/
GPB_FINAL @interface KEYAPISTELEMETRYCONTROLV1TemplateDevice : GPBMessage

/** Идентификатор */
@property(nonatomic, readwrite) int32_t id_p;

/** Дата создания */
@property(nonatomic, readwrite, strong, null_resettable) GPBTimestamp *createdAt;
/** Test to see if @c createdAt has been set. */
@property(nonatomic, readwrite) BOOL hasCreatedAt;

/**
 * Дата последнего изменения.
 * Заполняется и обновляется сервером.
 * Заполняется при создании и изменении
 **/
@property(nonatomic, readwrite, strong, null_resettable) GPBTimestamp *changedAt;
/** Test to see if @c changedAt has been set. */
@property(nonatomic, readwrite) BOOL hasChangedAt;

/** Тип энергоресурса */
@property(nonatomic, readwrite) KEYAPISTELEMETRYCONTROLV1TemplateDevice_MetricType metricType;

/** ID Модели счетчика */
@property(nonatomic, readwrite) int32_t modelId;

/** Шаблоны индикаторов */
@property(nonatomic, readwrite, strong, null_resettable) GPBInt32Array *indicatorTemplateIdsArray;
/** The number of items in @c indicatorTemplateIdsArray without causing the container to be created. */
@property(nonatomic, readonly) NSUInteger indicatorTemplateIdsArray_Count;

/**
 * Тип тарифного плана.
 * Для ПУ электроэнергии
 **/
@property(nonatomic, readwrite) KEYAPISTELEMETRYCONTROLV1TemplateDevice_PlanType planType;

/** Посредник получения показаний */
@property(nonatomic, readwrite) KEYAPISTELEMETRYCONTROLV1TemplateIndicator_VendorType indicatorVendorType;

@end

/**
 * Fetches the raw value of a @c KEYAPISTELEMETRYCONTROLV1TemplateDevice's @c metricType property, even
 * if the value was not defined by the enum at the time the code was generated.
 **/
int32_t KEYAPISTELEMETRYCONTROLV1TemplateDevice_MetricType_RawValue(KEYAPISTELEMETRYCONTROLV1TemplateDevice *message);
/**
 * Sets the raw value of an @c KEYAPISTELEMETRYCONTROLV1TemplateDevice's @c metricType property, allowing
 * it to be set to a value that was not defined by the enum at the time the code
 * was generated.
 **/
void SetKEYAPISTELEMETRYCONTROLV1TemplateDevice_MetricType_RawValue(KEYAPISTELEMETRYCONTROLV1TemplateDevice *message, int32_t value);

/**
 * Fetches the raw value of a @c KEYAPISTELEMETRYCONTROLV1TemplateDevice's @c planType property, even
 * if the value was not defined by the enum at the time the code was generated.
 **/
int32_t KEYAPISTELEMETRYCONTROLV1TemplateDevice_PlanType_RawValue(KEYAPISTELEMETRYCONTROLV1TemplateDevice *message);
/**
 * Sets the raw value of an @c KEYAPISTELEMETRYCONTROLV1TemplateDevice's @c planType property, allowing
 * it to be set to a value that was not defined by the enum at the time the code
 * was generated.
 **/
void SetKEYAPISTELEMETRYCONTROLV1TemplateDevice_PlanType_RawValue(KEYAPISTELEMETRYCONTROLV1TemplateDevice *message, int32_t value);

/**
 * Fetches the raw value of a @c KEYAPISTELEMETRYCONTROLV1TemplateDevice's @c indicatorVendorType property, even
 * if the value was not defined by the enum at the time the code was generated.
 **/
int32_t KEYAPISTELEMETRYCONTROLV1TemplateDevice_IndicatorVendorType_RawValue(KEYAPISTELEMETRYCONTROLV1TemplateDevice *message);
/**
 * Sets the raw value of an @c KEYAPISTELEMETRYCONTROLV1TemplateDevice's @c indicatorVendorType property, allowing
 * it to be set to a value that was not defined by the enum at the time the code
 * was generated.
 **/
void SetKEYAPISTELEMETRYCONTROLV1TemplateDevice_IndicatorVendorType_RawValue(KEYAPISTELEMETRYCONTROLV1TemplateDevice *message, int32_t value);

#pragma mark - KEYAPISTELEMETRYCONTROLV1TemplateDevice_ValidationError

typedef GPB_ENUM(KEYAPISTELEMETRYCONTROLV1TemplateDevice_ValidationError_FieldNumber) {
  KEYAPISTELEMETRYCONTROLV1TemplateDevice_ValidationError_FieldNumber_Path = 1,
  KEYAPISTELEMETRYCONTROLV1TemplateDevice_ValidationError_FieldNumber_Message = 2,
};

/**
 * Ошибки валидации.
 * Эти проверки выполняются до обращения в базу данных
 **/
GPB_FINAL @interface KEYAPISTELEMETRYCONTROLV1TemplateDevice_ValidationError : GPBMessage

/** Путь к полю в формате наименования protobuf */
@property(nonatomic, readwrite, copy, null_resettable) NSString *path;

/** Валидационное сообщение */
@property(nonatomic, readwrite, copy, null_resettable) NSString *message;

@end

#pragma mark - KEYAPISTELEMETRYCONTROLV1GetTemplateIndicatorRequest

typedef GPB_ENUM(KEYAPISTELEMETRYCONTROLV1GetTemplateIndicatorRequest_FieldNumber) {
  KEYAPISTELEMETRYCONTROLV1GetTemplateIndicatorRequest_FieldNumber_Id_p = 1,
};

/**
 * Запрос получения шаблона шаблона индикатора
 **/
GPB_FINAL @interface KEYAPISTELEMETRYCONTROLV1GetTemplateIndicatorRequest : GPBMessage

/** Идентификатор шаблона индикатора */
@property(nonatomic, readwrite) int32_t id_p;

@end

#pragma mark - KEYAPISTELEMETRYCONTROLV1GetTemplateIndicatorResponse

typedef GPB_ENUM(KEYAPISTELEMETRYCONTROLV1GetTemplateIndicatorResponse_FieldNumber) {
  KEYAPISTELEMETRYCONTROLV1GetTemplateIndicatorResponse_FieldNumber_Data_p = 1,
};

typedef GPB_ENUM(KEYAPISTELEMETRYCONTROLV1GetTemplateIndicatorResponse_Type_OneOfCase) {
  KEYAPISTELEMETRYCONTROLV1GetTemplateIndicatorResponse_Type_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISTELEMETRYCONTROLV1GetTemplateIndicatorResponse_Type_OneOfCase_Data_p = 1,
};

/**
 * Ответ на запрос получения шаблона индикатора
 **/
GPB_FINAL @interface KEYAPISTELEMETRYCONTROLV1GetTemplateIndicatorResponse : GPBMessage

/** Тип результата */
@property(nonatomic, readonly) KEYAPISTELEMETRYCONTROLV1GetTemplateIndicatorResponse_Type_OneOfCase typeOneOfCase;

/** Шаблон ндикатора */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISTELEMETRYCONTROLV1TemplateIndicator *data_p;

@end

/**
 * Clears whatever value was set for the oneof 'type'.
 **/
void KEYAPISTELEMETRYCONTROLV1GetTemplateIndicatorResponse_ClearTypeOneOfCase(KEYAPISTELEMETRYCONTROLV1GetTemplateIndicatorResponse *message);

#pragma mark - KEYAPISTELEMETRYCONTROLV1GetTemplateIndicatorListRequest

typedef GPB_ENUM(KEYAPISTELEMETRYCONTROLV1GetTemplateIndicatorListRequest_FieldNumber) {
  KEYAPISTELEMETRYCONTROLV1GetTemplateIndicatorListRequest_FieldNumber_Filter = 1,
  KEYAPISTELEMETRYCONTROLV1GetTemplateIndicatorListRequest_FieldNumber_Paging = 2,
};

typedef GPB_ENUM(KEYAPISTELEMETRYCONTROLV1GetTemplateIndicatorListRequest_Pagination_OneOfCase) {
  KEYAPISTELEMETRYCONTROLV1GetTemplateIndicatorListRequest_Pagination_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISTELEMETRYCONTROLV1GetTemplateIndicatorListRequest_Pagination_OneOfCase_Paging = 2,
};

/**
 * Запрос получения списка шаблонов индикаторов
 **/
GPB_FINAL @interface KEYAPISTELEMETRYCONTROLV1GetTemplateIndicatorListRequest : GPBMessage

/** Фильтр */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISTELEMETRYCONTROLV1TemplateIndicatorFilter *filter;
/** Test to see if @c filter has been set. */
@property(nonatomic, readwrite) BOOL hasFilter;

/** Вариант разбиения на страницы */
@property(nonatomic, readonly) KEYAPISTELEMETRYCONTROLV1GetTemplateIndicatorListRequest_Pagination_OneOfCase paginationOneOfCase;

/** Пагинация */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISTELEMETRYCONTROLV1TemplateIndicatorPaging *paging;

@end

/**
 * Clears whatever value was set for the oneof 'pagination'.
 **/
void KEYAPISTELEMETRYCONTROLV1GetTemplateIndicatorListRequest_ClearPaginationOneOfCase(KEYAPISTELEMETRYCONTROLV1GetTemplateIndicatorListRequest *message);

#pragma mark - KEYAPISTELEMETRYCONTROLV1TemplateIndicatorPaging

typedef GPB_ENUM(KEYAPISTELEMETRYCONTROLV1TemplateIndicatorPaging_FieldNumber) {
  KEYAPISTELEMETRYCONTROLV1TemplateIndicatorPaging_FieldNumber_OrderByType = 1,
  KEYAPISTELEMETRYCONTROLV1TemplateIndicatorPaging_FieldNumber_DirectionType = 2,
  KEYAPISTELEMETRYCONTROLV1TemplateIndicatorPaging_FieldNumber_Limit = 3,
  KEYAPISTELEMETRYCONTROLV1TemplateIndicatorPaging_FieldNumber_Offset = 4,
};

/**
 * Пагинация
 **/
GPB_FINAL @interface KEYAPISTELEMETRYCONTROLV1TemplateIndicatorPaging : GPBMessage

/**
 * Тип значения сортировки.
 * По умолчанию: ID
 **/
@property(nonatomic, readwrite) KEYAPISTELEMETRYCONTROLV1TemplateIndicatorPaging_OrderByType orderByType;

/**
 * Тип направления сортировки.
 * По умолчанию: DESC
 **/
@property(nonatomic, readwrite) KEYAPISTELEMETRYCONTROLV1TemplateIndicatorPaging_DirectionType directionType;

/**
 * Количество.
 * Минимальное значение: 1.
 * Максимальное значение: 100.
 * По умолчанию: 20.
 * Если значение 0 (не передано) то выставляем значение по умолчанию
 **/
@property(nonatomic, readwrite) int32_t limit;

/**
 * Сдвиг.
 * По умолчанию: 0
 **/
@property(nonatomic, readwrite) int32_t offset;

@end

/**
 * Fetches the raw value of a @c KEYAPISTELEMETRYCONTROLV1TemplateIndicatorPaging's @c orderByType property, even
 * if the value was not defined by the enum at the time the code was generated.
 **/
int32_t KEYAPISTELEMETRYCONTROLV1TemplateIndicatorPaging_OrderByType_RawValue(KEYAPISTELEMETRYCONTROLV1TemplateIndicatorPaging *message);
/**
 * Sets the raw value of an @c KEYAPISTELEMETRYCONTROLV1TemplateIndicatorPaging's @c orderByType property, allowing
 * it to be set to a value that was not defined by the enum at the time the code
 * was generated.
 **/
void SetKEYAPISTELEMETRYCONTROLV1TemplateIndicatorPaging_OrderByType_RawValue(KEYAPISTELEMETRYCONTROLV1TemplateIndicatorPaging *message, int32_t value);

/**
 * Fetches the raw value of a @c KEYAPISTELEMETRYCONTROLV1TemplateIndicatorPaging's @c directionType property, even
 * if the value was not defined by the enum at the time the code was generated.
 **/
int32_t KEYAPISTELEMETRYCONTROLV1TemplateIndicatorPaging_DirectionType_RawValue(KEYAPISTELEMETRYCONTROLV1TemplateIndicatorPaging *message);
/**
 * Sets the raw value of an @c KEYAPISTELEMETRYCONTROLV1TemplateIndicatorPaging's @c directionType property, allowing
 * it to be set to a value that was not defined by the enum at the time the code
 * was generated.
 **/
void SetKEYAPISTELEMETRYCONTROLV1TemplateIndicatorPaging_DirectionType_RawValue(KEYAPISTELEMETRYCONTROLV1TemplateIndicatorPaging *message, int32_t value);

#pragma mark - KEYAPISTELEMETRYCONTROLV1TemplateIndicatorPaging_ValidationError

typedef GPB_ENUM(KEYAPISTELEMETRYCONTROLV1TemplateIndicatorPaging_ValidationError_FieldNumber) {
  KEYAPISTELEMETRYCONTROLV1TemplateIndicatorPaging_ValidationError_FieldNumber_Limit = 1,
  KEYAPISTELEMETRYCONTROLV1TemplateIndicatorPaging_ValidationError_FieldNumber_Offset = 2,
};

typedef GPB_ENUM(KEYAPISTELEMETRYCONTROLV1TemplateIndicatorPaging_ValidationError_Reason_OneOfCase) {
  KEYAPISTELEMETRYCONTROLV1TemplateIndicatorPaging_ValidationError_Reason_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISTELEMETRYCONTROLV1TemplateIndicatorPaging_ValidationError_Reason_OneOfCase_Limit = 1,
  KEYAPISTELEMETRYCONTROLV1TemplateIndicatorPaging_ValidationError_Reason_OneOfCase_Offset = 2,
};

/**
 * Ошибка валидации постраничной пагинации по шаблонам индикатора.
 * Эти проверки выполняются до обращения в базу данных
 **/
GPB_FINAL @interface KEYAPISTELEMETRYCONTROLV1TemplateIndicatorPaging_ValidationError : GPBMessage

/** Причина ошибки */
@property(nonatomic, readonly) KEYAPISTELEMETRYCONTROLV1TemplateIndicatorPaging_ValidationError_Reason_OneOfCase reasonOneOfCase;

/** Количество передано некорректно */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISTELEMETRYCONTROLV1TemplateIndicatorPaging_ValidationError_LimitInvalid *limit;

/** Сдвиг передан некорректно */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISTELEMETRYCONTROLV1TemplateIndicatorPaging_ValidationError_OffsetInvalid *offset;

@end

/**
 * Clears whatever value was set for the oneof 'reason'.
 **/
void KEYAPISTELEMETRYCONTROLV1TemplateIndicatorPaging_ValidationError_ClearReasonOneOfCase(KEYAPISTELEMETRYCONTROLV1TemplateIndicatorPaging_ValidationError *message);

#pragma mark - KEYAPISTELEMETRYCONTROLV1TemplateIndicatorPaging_ValidationError_LimitInvalid

/**
 * Причины:
 * - Значение количества < 0 или > 100
 **/
GPB_FINAL @interface KEYAPISTELEMETRYCONTROLV1TemplateIndicatorPaging_ValidationError_LimitInvalid : GPBMessage

@end

#pragma mark - KEYAPISTELEMETRYCONTROLV1TemplateIndicatorPaging_ValidationError_OffsetInvalid

/**
 * Причины:
 * - Значение сдвига < 0
 **/
GPB_FINAL @interface KEYAPISTELEMETRYCONTROLV1TemplateIndicatorPaging_ValidationError_OffsetInvalid : GPBMessage

@end

#pragma mark - KEYAPISTELEMETRYCONTROLV1TemplateIndicatorFilter

typedef GPB_ENUM(KEYAPISTELEMETRYCONTROLV1TemplateIndicatorFilter_FieldNumber) {
  KEYAPISTELEMETRYCONTROLV1TemplateIndicatorFilter_FieldNumber_SignTypesArray = 1,
  KEYAPISTELEMETRYCONTROLV1TemplateIndicatorFilter_FieldNumber_ArchiveTypesArray = 2,
  KEYAPISTELEMETRYCONTROLV1TemplateIndicatorFilter_FieldNumber_IsIndividual = 3,
  KEYAPISTELEMETRYCONTROLV1TemplateIndicatorFilter_FieldNumber_Title = 4,
  KEYAPISTELEMETRYCONTROLV1TemplateIndicatorFilter_FieldNumber_IndicatorVendorTypesArray = 5,
};

/**
 * Фильтр для запроса шаблонов индикаторов.
 * При передаче массива в параметр фильтра элементы массива работают в выборке через ИЛИ.
 * При передаче нескольких разных параметров фильтра они работают в выборке через И
 **/
GPB_FINAL @interface KEYAPISTELEMETRYCONTROLV1TemplateIndicatorFilter : GPBMessage

/** По типу измерений */
// |signTypesArray| contains |KEYAPISTELEMETRYCONTROLV1TemplateIndicator_SignType|
@property(nonatomic, readwrite, strong, null_resettable) GPBEnumArray *signTypesArray;
/** The number of items in @c signTypesArray without causing the container to be created. */
@property(nonatomic, readonly) NSUInteger signTypesArray_Count;

/** По типу архивности показаний */
// |archiveTypesArray| contains |KEYAPISTELEMETRYCONTROLV1TemplateIndicator_ArchiveType|
@property(nonatomic, readwrite, strong, null_resettable) GPBEnumArray *archiveTypesArray;
/** The number of items in @c archiveTypesArray without causing the container to be created. */
@property(nonatomic, readonly) NSUInteger archiveTypesArray_Count;

/** По флагу видимости индикатора для клиента ФЛ */
@property(nonatomic, readwrite, strong, null_resettable) GPBBoolValue *isIndividual;
/** Test to see if @c isIndividual has been set. */
@property(nonatomic, readwrite) BOOL hasIsIndividual;

/**
 * По шаблонному названию индикатора.
 * Поиск производится по подстроке
 **/
@property(nonatomic, readwrite, strong, null_resettable) GPBStringValue *title;
/** Test to see if @c title has been set. */
@property(nonatomic, readwrite) BOOL hasTitle;

/** По посреднику получения показаний */
// |indicatorVendorTypesArray| contains |KEYAPISTELEMETRYCONTROLV1TemplateIndicator_VendorType|
@property(nonatomic, readwrite, strong, null_resettable) GPBEnumArray *indicatorVendorTypesArray;
/** The number of items in @c indicatorVendorTypesArray without causing the container to be created. */
@property(nonatomic, readonly) NSUInteger indicatorVendorTypesArray_Count;

@end

#pragma mark - KEYAPISTELEMETRYCONTROLV1TemplateIndicatorFilter_ValidationError

typedef GPB_ENUM(KEYAPISTELEMETRYCONTROLV1TemplateIndicatorFilter_ValidationError_FieldNumber) {
  KEYAPISTELEMETRYCONTROLV1TemplateIndicatorFilter_ValidationError_FieldNumber_Path = 1,
  KEYAPISTELEMETRYCONTROLV1TemplateIndicatorFilter_ValidationError_FieldNumber_Message = 2,
};

/**
 * Ошибки валидации.
 * Эти проверки выполняются до обращения в базу данных
 **/
GPB_FINAL @interface KEYAPISTELEMETRYCONTROLV1TemplateIndicatorFilter_ValidationError : GPBMessage

/** Путь к полю в формате наименования protobuf */
@property(nonatomic, readwrite, copy, null_resettable) NSString *path;

/** Валидационное сообщение */
@property(nonatomic, readwrite, copy, null_resettable) NSString *message;

@end

#pragma mark - KEYAPISTELEMETRYCONTROLV1GetTemplateIndicatorListResponse

typedef GPB_ENUM(KEYAPISTELEMETRYCONTROLV1GetTemplateIndicatorListResponse_FieldNumber) {
  KEYAPISTELEMETRYCONTROLV1GetTemplateIndicatorListResponse_FieldNumber_Data_p = 1,
  KEYAPISTELEMETRYCONTROLV1GetTemplateIndicatorListResponse_FieldNumber_Error = 2,
};

typedef GPB_ENUM(KEYAPISTELEMETRYCONTROLV1GetTemplateIndicatorListResponse_Type_OneOfCase) {
  KEYAPISTELEMETRYCONTROLV1GetTemplateIndicatorListResponse_Type_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISTELEMETRYCONTROLV1GetTemplateIndicatorListResponse_Type_OneOfCase_Data_p = 1,
  KEYAPISTELEMETRYCONTROLV1GetTemplateIndicatorListResponse_Type_OneOfCase_Error = 2,
};

/**
 * Ответ на запрос получения списка шаблонов индикаторов
 **/
GPB_FINAL @interface KEYAPISTELEMETRYCONTROLV1GetTemplateIndicatorListResponse : GPBMessage

/** Тип результата */
@property(nonatomic, readonly) KEYAPISTELEMETRYCONTROLV1GetTemplateIndicatorListResponse_Type_OneOfCase typeOneOfCase;

/** Шаблон индикатора */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISTELEMETRYCONTROLV1TemplateIndicator *data_p;

/** Ошибка */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISTELEMETRYCONTROLV1GetTemplateIndicatorListResponse_Error *error;

@end

/**
 * Clears whatever value was set for the oneof 'type'.
 **/
void KEYAPISTELEMETRYCONTROLV1GetTemplateIndicatorListResponse_ClearTypeOneOfCase(KEYAPISTELEMETRYCONTROLV1GetTemplateIndicatorListResponse *message);

#pragma mark - KEYAPISTELEMETRYCONTROLV1GetTemplateIndicatorListResponse_Error

typedef GPB_ENUM(KEYAPISTELEMETRYCONTROLV1GetTemplateIndicatorListResponse_Error_FieldNumber) {
  KEYAPISTELEMETRYCONTROLV1GetTemplateIndicatorListResponse_Error_FieldNumber_TemplateIndicatorFilterValidation = 1,
  KEYAPISTELEMETRYCONTROLV1GetTemplateIndicatorListResponse_Error_FieldNumber_TemplateIndicatorPagingValidation = 2,
};

typedef GPB_ENUM(KEYAPISTELEMETRYCONTROLV1GetTemplateIndicatorListResponse_Error_Reason_OneOfCase) {
  KEYAPISTELEMETRYCONTROLV1GetTemplateIndicatorListResponse_Error_Reason_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISTELEMETRYCONTROLV1GetTemplateIndicatorListResponse_Error_Reason_OneOfCase_TemplateIndicatorFilterValidation = 1,
  KEYAPISTELEMETRYCONTROLV1GetTemplateIndicatorListResponse_Error_Reason_OneOfCase_TemplateIndicatorPagingValidation = 2,
};

/**
 * Ошибка запроса получения списка шаблонов индикаторов
 **/
GPB_FINAL @interface KEYAPISTELEMETRYCONTROLV1GetTemplateIndicatorListResponse_Error : GPBMessage

/** Причина ошибки */
@property(nonatomic, readonly) KEYAPISTELEMETRYCONTROLV1GetTemplateIndicatorListResponse_Error_Reason_OneOfCase reasonOneOfCase;

/** Ошибка фильтрации */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISTELEMETRYCONTROLV1TemplateIndicatorFilter_ValidationError *templateIndicatorFilterValidation;

/** Ошибка пагинации  по страницам */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISTELEMETRYCONTROLV1TemplateIndicatorPaging_ValidationError *templateIndicatorPagingValidation;

@end

/**
 * Clears whatever value was set for the oneof 'reason'.
 **/
void KEYAPISTELEMETRYCONTROLV1GetTemplateIndicatorListResponse_Error_ClearReasonOneOfCase(KEYAPISTELEMETRYCONTROLV1GetTemplateIndicatorListResponse_Error *message);

#pragma mark - KEYAPISTELEMETRYCONTROLV1GetTemplateIndicatorCountRequest

typedef GPB_ENUM(KEYAPISTELEMETRYCONTROLV1GetTemplateIndicatorCountRequest_FieldNumber) {
  KEYAPISTELEMETRYCONTROLV1GetTemplateIndicatorCountRequest_FieldNumber_Filter = 1,
};

/**
 * Запрос получения количества шаблонов индикаторов
 **/
GPB_FINAL @interface KEYAPISTELEMETRYCONTROLV1GetTemplateIndicatorCountRequest : GPBMessage

/** Фильтр по шаблонам индикаторов */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISTELEMETRYCONTROLV1TemplateIndicatorFilter *filter;
/** Test to see if @c filter has been set. */
@property(nonatomic, readwrite) BOOL hasFilter;

@end

#pragma mark - KEYAPISTELEMETRYCONTROLV1GetTemplateIndicatorCountResponse

typedef GPB_ENUM(KEYAPISTELEMETRYCONTROLV1GetTemplateIndicatorCountResponse_FieldNumber) {
  KEYAPISTELEMETRYCONTROLV1GetTemplateIndicatorCountResponse_FieldNumber_Data_p = 1,
  KEYAPISTELEMETRYCONTROLV1GetTemplateIndicatorCountResponse_FieldNumber_Error = 2,
};

typedef GPB_ENUM(KEYAPISTELEMETRYCONTROLV1GetTemplateIndicatorCountResponse_Type_OneOfCase) {
  KEYAPISTELEMETRYCONTROLV1GetTemplateIndicatorCountResponse_Type_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISTELEMETRYCONTROLV1GetTemplateIndicatorCountResponse_Type_OneOfCase_Data_p = 1,
  KEYAPISTELEMETRYCONTROLV1GetTemplateIndicatorCountResponse_Type_OneOfCase_Error = 2,
};

/**
 * Ответ на запрос получения количества шаблонов индикаторов
 **/
GPB_FINAL @interface KEYAPISTELEMETRYCONTROLV1GetTemplateIndicatorCountResponse : GPBMessage

/** Тип результата */
@property(nonatomic, readonly) KEYAPISTELEMETRYCONTROLV1GetTemplateIndicatorCountResponse_Type_OneOfCase typeOneOfCase;

/** Всего шаблонов индикаторов */
@property(nonatomic, readwrite) int32_t data_p;

/** Ошибка */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISTELEMETRYCONTROLV1GetTemplateIndicatorCountResponse_Error *error;

@end

/**
 * Clears whatever value was set for the oneof 'type'.
 **/
void KEYAPISTELEMETRYCONTROLV1GetTemplateIndicatorCountResponse_ClearTypeOneOfCase(KEYAPISTELEMETRYCONTROLV1GetTemplateIndicatorCountResponse *message);

#pragma mark - KEYAPISTELEMETRYCONTROLV1GetTemplateIndicatorCountResponse_Error

typedef GPB_ENUM(KEYAPISTELEMETRYCONTROLV1GetTemplateIndicatorCountResponse_Error_FieldNumber) {
  KEYAPISTELEMETRYCONTROLV1GetTemplateIndicatorCountResponse_Error_FieldNumber_TemplateIndicatorFilterValidation = 1,
};

typedef GPB_ENUM(KEYAPISTELEMETRYCONTROLV1GetTemplateIndicatorCountResponse_Error_Reason_OneOfCase) {
  KEYAPISTELEMETRYCONTROLV1GetTemplateIndicatorCountResponse_Error_Reason_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISTELEMETRYCONTROLV1GetTemplateIndicatorCountResponse_Error_Reason_OneOfCase_TemplateIndicatorFilterValidation = 1,
};

/**
 * Ошибка запроса получения количества шаблонов индикаторов
 **/
GPB_FINAL @interface KEYAPISTELEMETRYCONTROLV1GetTemplateIndicatorCountResponse_Error : GPBMessage

/** Причина ошибки */
@property(nonatomic, readonly) KEYAPISTELEMETRYCONTROLV1GetTemplateIndicatorCountResponse_Error_Reason_OneOfCase reasonOneOfCase;

/** Ошибка фильтрации */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISTELEMETRYCONTROLV1TemplateIndicatorFilter_ValidationError *templateIndicatorFilterValidation;

@end

/**
 * Clears whatever value was set for the oneof 'reason'.
 **/
void KEYAPISTELEMETRYCONTROLV1GetTemplateIndicatorCountResponse_Error_ClearReasonOneOfCase(KEYAPISTELEMETRYCONTROLV1GetTemplateIndicatorCountResponse_Error *message);

#pragma mark - KEYAPISTELEMETRYCONTROLV1PostTemplateIndicatorRequest

typedef GPB_ENUM(KEYAPISTELEMETRYCONTROLV1PostTemplateIndicatorRequest_FieldNumber) {
  KEYAPISTELEMETRYCONTROLV1PostTemplateIndicatorRequest_FieldNumber_Data_p = 1,
};

/**
 * Запрос сохранения шаблона индикатора
 **/
GPB_FINAL @interface KEYAPISTELEMETRYCONTROLV1PostTemplateIndicatorRequest : GPBMessage

/** Шаблон индикатора */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISTELEMETRYCONTROLV1TemplateIndicator *data_p;
/** Test to see if @c data_p has been set. */
@property(nonatomic, readwrite) BOOL hasData_p;

@end

#pragma mark - KEYAPISTELEMETRYCONTROLV1PostTemplateIndicatorResponse

typedef GPB_ENUM(KEYAPISTELEMETRYCONTROLV1PostTemplateIndicatorResponse_FieldNumber) {
  KEYAPISTELEMETRYCONTROLV1PostTemplateIndicatorResponse_FieldNumber_Data_p = 1,
  KEYAPISTELEMETRYCONTROLV1PostTemplateIndicatorResponse_FieldNumber_Error = 2,
};

typedef GPB_ENUM(KEYAPISTELEMETRYCONTROLV1PostTemplateIndicatorResponse_Type_OneOfCase) {
  KEYAPISTELEMETRYCONTROLV1PostTemplateIndicatorResponse_Type_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISTELEMETRYCONTROLV1PostTemplateIndicatorResponse_Type_OneOfCase_Data_p = 1,
  KEYAPISTELEMETRYCONTROLV1PostTemplateIndicatorResponse_Type_OneOfCase_Error = 2,
};

/**
 * Ответ на запрос сохранения шаблона индикатора
 **/
GPB_FINAL @interface KEYAPISTELEMETRYCONTROLV1PostTemplateIndicatorResponse : GPBMessage

/** Тип результата */
@property(nonatomic, readonly) KEYAPISTELEMETRYCONTROLV1PostTemplateIndicatorResponse_Type_OneOfCase typeOneOfCase;

/** Шаблон индикатора */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISTELEMETRYCONTROLV1TemplateIndicator *data_p;

/** Ошибка */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISTELEMETRYCONTROLV1PostTemplateIndicatorResponse_Error *error;

@end

/**
 * Clears whatever value was set for the oneof 'type'.
 **/
void KEYAPISTELEMETRYCONTROLV1PostTemplateIndicatorResponse_ClearTypeOneOfCase(KEYAPISTELEMETRYCONTROLV1PostTemplateIndicatorResponse *message);

#pragma mark - KEYAPISTELEMETRYCONTROLV1PostTemplateIndicatorResponse_Error

typedef GPB_ENUM(KEYAPISTELEMETRYCONTROLV1PostTemplateIndicatorResponse_Error_FieldNumber) {
  KEYAPISTELEMETRYCONTROLV1PostTemplateIndicatorResponse_Error_FieldNumber_Validation = 1,
};

typedef GPB_ENUM(KEYAPISTELEMETRYCONTROLV1PostTemplateIndicatorResponse_Error_Reason_OneOfCase) {
  KEYAPISTELEMETRYCONTROLV1PostTemplateIndicatorResponse_Error_Reason_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISTELEMETRYCONTROLV1PostTemplateIndicatorResponse_Error_Reason_OneOfCase_Validation = 1,
};

/**
 * Ошибка запроса сохранения шаблона индикатора
 **/
GPB_FINAL @interface KEYAPISTELEMETRYCONTROLV1PostTemplateIndicatorResponse_Error : GPBMessage

/** Причина ошибки */
@property(nonatomic, readonly) KEYAPISTELEMETRYCONTROLV1PostTemplateIndicatorResponse_Error_Reason_OneOfCase reasonOneOfCase;

/** Ошибка валидации */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISTELEMETRYCONTROLV1TemplateIndicator_ValidationError *validation;

@end

/**
 * Clears whatever value was set for the oneof 'reason'.
 **/
void KEYAPISTELEMETRYCONTROLV1PostTemplateIndicatorResponse_Error_ClearReasonOneOfCase(KEYAPISTELEMETRYCONTROLV1PostTemplateIndicatorResponse_Error *message);

#pragma mark - KEYAPISTELEMETRYCONTROLV1DeleteTemplateIndicatorRequest

typedef GPB_ENUM(KEYAPISTELEMETRYCONTROLV1DeleteTemplateIndicatorRequest_FieldNumber) {
  KEYAPISTELEMETRYCONTROLV1DeleteTemplateIndicatorRequest_FieldNumber_Id_p = 1,
};

/**
 * Запрос удаления шаблона индикатора
 **/
GPB_FINAL @interface KEYAPISTELEMETRYCONTROLV1DeleteTemplateIndicatorRequest : GPBMessage

/** Идентификатор */
@property(nonatomic, readwrite) int32_t id_p;

@end

#pragma mark - KEYAPISTELEMETRYCONTROLV1DeleteTemplateIndicatorResponse

/**
 * Ответ на запрос удаления шаблона индикатора
 **/
GPB_FINAL @interface KEYAPISTELEMETRYCONTROLV1DeleteTemplateIndicatorResponse : GPBMessage

@end

#pragma mark - KEYAPISTELEMETRYCONTROLV1TemplateIndicator

typedef GPB_ENUM(KEYAPISTELEMETRYCONTROLV1TemplateIndicator_FieldNumber) {
  KEYAPISTELEMETRYCONTROLV1TemplateIndicator_FieldNumber_Id_p = 1,
  KEYAPISTELEMETRYCONTROLV1TemplateIndicator_FieldNumber_CreatedAt = 2,
  KEYAPISTELEMETRYCONTROLV1TemplateIndicator_FieldNumber_ChangedAt = 3,
  KEYAPISTELEMETRYCONTROLV1TemplateIndicator_FieldNumber_Title = 4,
  KEYAPISTELEMETRYCONTROLV1TemplateIndicator_FieldNumber_UnitType = 5,
  KEYAPISTELEMETRYCONTROLV1TemplateIndicator_FieldNumber_SignType = 6,
  KEYAPISTELEMETRYCONTROLV1TemplateIndicator_FieldNumber_ArchiveType = 7,
  KEYAPISTELEMETRYCONTROLV1TemplateIndicator_FieldNumber_PresentationUnitType = 8,
  KEYAPISTELEMETRYCONTROLV1TemplateIndicator_FieldNumber_CompatibilityCode = 9,
  KEYAPISTELEMETRYCONTROLV1TemplateIndicator_FieldNumber_IsIndividual = 10,
  KEYAPISTELEMETRYCONTROLV1TemplateIndicator_FieldNumber_Coefficient = 11,
  KEYAPISTELEMETRYCONTROLV1TemplateIndicator_FieldNumber_Shift = 12,
  KEYAPISTELEMETRYCONTROLV1TemplateIndicator_FieldNumber_RoundDecimalDigits = 13,
  KEYAPISTELEMETRYCONTROLV1TemplateIndicator_FieldNumber_MetricExpectedFreq = 14,
  KEYAPISTELEMETRYCONTROLV1TemplateIndicator_FieldNumber_IndicatorVendorType = 15,
};

/**
 * Шаблон индикатора
 **/
GPB_FINAL @interface KEYAPISTELEMETRYCONTROLV1TemplateIndicator : GPBMessage

/** Идентификатор */
@property(nonatomic, readwrite) int32_t id_p;

/** Дата создания */
@property(nonatomic, readwrite, strong, null_resettable) GPBTimestamp *createdAt;
/** Test to see if @c createdAt has been set. */
@property(nonatomic, readwrite) BOOL hasCreatedAt;

/**
 * Дата последнего изменения.
 * Заполняется и обновляется сервером.
 * Заполняется при создании и изменении
 **/
@property(nonatomic, readwrite, strong, null_resettable) GPBTimestamp *changedAt;
/** Test to see if @c changedAt has been set. */
@property(nonatomic, readwrite) BOOL hasChangedAt;

/** Шаблонное название индикатора */
@property(nonatomic, readwrite, copy, null_resettable) NSString *title;

/** Тип единицы измерения, в которой интерпретировано, получаемое измерение */
@property(nonatomic, readwrite) KEYAPISTELEMETRYCONTROLV1TemplateIndicator_UnitType unitType;

/** Тип измерения */
@property(nonatomic, readwrite) KEYAPISTELEMETRYCONTROLV1TemplateIndicator_SignType signType;

/** Тип архивности показаний */
@property(nonatomic, readwrite) KEYAPISTELEMETRYCONTROLV1TemplateIndicator_ArchiveType archiveType;

/**
 * Тип единицы измерения для отображения измерения.
 * При UNIT_TYPE_UNKNOWN отображаемые единицы совпадают с единицами источников значений, преобразования единиц не происходит.
 * Применяется после коэффициента
 **/
@property(nonatomic, readwrite) KEYAPISTELEMETRYCONTROLV1TemplateIndicator_UnitType presentationUnitType;

/** Код для совместимости с поставщиком метрик */
@property(nonatomic, readwrite, strong, null_resettable) GPBStringValue *compatibilityCode;
/** Test to see if @c compatibilityCode has been set. */
@property(nonatomic, readwrite) BOOL hasCompatibilityCode;

/** Флаг видимости индикатора для клиента ФЛ */
@property(nonatomic, readwrite) BOOL isIndividual;

/**
 * Коэффициент, на который умножается отображаемое значение.
 * Применяется перед преобразованием единиц измерений к presentation_unit_type и после применения поправки
 **/
@property(nonatomic, readwrite, strong, null_resettable) GPBFloatValue *coefficient;
/** Test to see if @c coefficient has been set. */
@property(nonatomic, readwrite) BOOL hasCoefficient;

/**
 * Величина поправки к отображаемому значению.
 * Применяется перед применением коэффициента
 **/
@property(nonatomic, readwrite, strong, null_resettable) GPBFloatValue *shift;
/** Test to see if @c shift has been set. */
@property(nonatomic, readwrite) BOOL hasShift;

/**
 * Количество возвращаемых десятичных знаков при округлении итогового значения.
 * При пустом параметре округления не происходит.
 * Применяется после преобразования единиц измерения
 **/
@property(nonatomic, readwrite, strong, null_resettable) GPBInt32Value *roundDecimalDigits;
/** Test to see if @c roundDecimalDigits has been set. */
@property(nonatomic, readwrite) BOOL hasRoundDecimalDigits;

/** Ожидаемая частота поступления показаний в днях */
@property(nonatomic, readwrite) int32_t metricExpectedFreq;

/** Посредник получения показаний */
@property(nonatomic, readwrite) KEYAPISTELEMETRYCONTROLV1TemplateIndicator_VendorType indicatorVendorType;

@end

/**
 * Fetches the raw value of a @c KEYAPISTELEMETRYCONTROLV1TemplateIndicator's @c unitType property, even
 * if the value was not defined by the enum at the time the code was generated.
 **/
int32_t KEYAPISTELEMETRYCONTROLV1TemplateIndicator_UnitType_RawValue(KEYAPISTELEMETRYCONTROLV1TemplateIndicator *message);
/**
 * Sets the raw value of an @c KEYAPISTELEMETRYCONTROLV1TemplateIndicator's @c unitType property, allowing
 * it to be set to a value that was not defined by the enum at the time the code
 * was generated.
 **/
void SetKEYAPISTELEMETRYCONTROLV1TemplateIndicator_UnitType_RawValue(KEYAPISTELEMETRYCONTROLV1TemplateIndicator *message, int32_t value);

/**
 * Fetches the raw value of a @c KEYAPISTELEMETRYCONTROLV1TemplateIndicator's @c signType property, even
 * if the value was not defined by the enum at the time the code was generated.
 **/
int32_t KEYAPISTELEMETRYCONTROLV1TemplateIndicator_SignType_RawValue(KEYAPISTELEMETRYCONTROLV1TemplateIndicator *message);
/**
 * Sets the raw value of an @c KEYAPISTELEMETRYCONTROLV1TemplateIndicator's @c signType property, allowing
 * it to be set to a value that was not defined by the enum at the time the code
 * was generated.
 **/
void SetKEYAPISTELEMETRYCONTROLV1TemplateIndicator_SignType_RawValue(KEYAPISTELEMETRYCONTROLV1TemplateIndicator *message, int32_t value);

/**
 * Fetches the raw value of a @c KEYAPISTELEMETRYCONTROLV1TemplateIndicator's @c archiveType property, even
 * if the value was not defined by the enum at the time the code was generated.
 **/
int32_t KEYAPISTELEMETRYCONTROLV1TemplateIndicator_ArchiveType_RawValue(KEYAPISTELEMETRYCONTROLV1TemplateIndicator *message);
/**
 * Sets the raw value of an @c KEYAPISTELEMETRYCONTROLV1TemplateIndicator's @c archiveType property, allowing
 * it to be set to a value that was not defined by the enum at the time the code
 * was generated.
 **/
void SetKEYAPISTELEMETRYCONTROLV1TemplateIndicator_ArchiveType_RawValue(KEYAPISTELEMETRYCONTROLV1TemplateIndicator *message, int32_t value);

/**
 * Fetches the raw value of a @c KEYAPISTELEMETRYCONTROLV1TemplateIndicator's @c presentationUnitType property, even
 * if the value was not defined by the enum at the time the code was generated.
 **/
int32_t KEYAPISTELEMETRYCONTROLV1TemplateIndicator_PresentationUnitType_RawValue(KEYAPISTELEMETRYCONTROLV1TemplateIndicator *message);
/**
 * Sets the raw value of an @c KEYAPISTELEMETRYCONTROLV1TemplateIndicator's @c presentationUnitType property, allowing
 * it to be set to a value that was not defined by the enum at the time the code
 * was generated.
 **/
void SetKEYAPISTELEMETRYCONTROLV1TemplateIndicator_PresentationUnitType_RawValue(KEYAPISTELEMETRYCONTROLV1TemplateIndicator *message, int32_t value);

/**
 * Fetches the raw value of a @c KEYAPISTELEMETRYCONTROLV1TemplateIndicator's @c indicatorVendorType property, even
 * if the value was not defined by the enum at the time the code was generated.
 **/
int32_t KEYAPISTELEMETRYCONTROLV1TemplateIndicator_IndicatorVendorType_RawValue(KEYAPISTELEMETRYCONTROLV1TemplateIndicator *message);
/**
 * Sets the raw value of an @c KEYAPISTELEMETRYCONTROLV1TemplateIndicator's @c indicatorVendorType property, allowing
 * it to be set to a value that was not defined by the enum at the time the code
 * was generated.
 **/
void SetKEYAPISTELEMETRYCONTROLV1TemplateIndicator_IndicatorVendorType_RawValue(KEYAPISTELEMETRYCONTROLV1TemplateIndicator *message, int32_t value);

#pragma mark - KEYAPISTELEMETRYCONTROLV1TemplateIndicator_ValidationError

typedef GPB_ENUM(KEYAPISTELEMETRYCONTROLV1TemplateIndicator_ValidationError_FieldNumber) {
  KEYAPISTELEMETRYCONTROLV1TemplateIndicator_ValidationError_FieldNumber_Path = 1,
  KEYAPISTELEMETRYCONTROLV1TemplateIndicator_ValidationError_FieldNumber_Message = 2,
};

/**
 * Ошибки валидации.
 * Эти проверки выполняются до обращения в базу данных
 **/
GPB_FINAL @interface KEYAPISTELEMETRYCONTROLV1TemplateIndicator_ValidationError : GPBMessage

/** Путь к полю в формате наименования protobuf */
@property(nonatomic, readwrite, copy, null_resettable) NSString *path;

/** Валидационное сообщение */
@property(nonatomic, readwrite, copy, null_resettable) NSString *message;

@end

NS_ASSUME_NONNULL_END

CF_EXTERN_C_END

#pragma clang diagnostic pop

// @@protoc_insertion_point(global_scope)

// clang-format on
