// Generated by the protocol buffer compiler.  DO NOT EDIT!
// clang-format off
// source: keyapis/telemetry_metric/v1/keyapis_telemetry_metric_measurement_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 KEYAPISTELEMETRYMETRICYV1Measurement;
@class KEYAPISTELEMETRYMETRICYV1MeasurementFilter;
@class KEYAPISTELEMETRYMETRICYV1MeasurementPaging;

NS_ASSUME_NONNULL_BEGIN

#pragma mark - Enum KEYAPISTELEMETRYMETRICYV1MeasurementPaging_OrderByType

/** Справочник типов значений сортировки */
typedef GPB_ENUM(KEYAPISTELEMETRYMETRICYV1MeasurementPaging_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.
   **/
  KEYAPISTELEMETRYMETRICYV1MeasurementPaging_OrderByType_GPBUnrecognizedEnumeratorValue = kGPBUnrecognizedEnumeratorValue,
  /** Значение не указано */
  KEYAPISTELEMETRYMETRICYV1MeasurementPaging_OrderByType_OrderByTypeUnknown = 0,

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

  /** По дате synced_at */
  KEYAPISTELEMETRYMETRICYV1MeasurementPaging_OrderByType_SyncedAt = 2,
};

GPBEnumDescriptor *KEYAPISTELEMETRYMETRICYV1MeasurementPaging_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 KEYAPISTELEMETRYMETRICYV1MeasurementPaging_OrderByType_IsValidValue(int32_t value);

#pragma mark - Enum KEYAPISTELEMETRYMETRICYV1MeasurementPaging_DirectionType

/** Справочник типов направлений сортировки */
typedef GPB_ENUM(KEYAPISTELEMETRYMETRICYV1MeasurementPaging_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.
   **/
  KEYAPISTELEMETRYMETRICYV1MeasurementPaging_DirectionType_GPBUnrecognizedEnumeratorValue = kGPBUnrecognizedEnumeratorValue,
  /** Значение не указано */
  KEYAPISTELEMETRYMETRICYV1MeasurementPaging_DirectionType_DirectionTypeUnknown = 0,

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

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

GPBEnumDescriptor *KEYAPISTELEMETRYMETRICYV1MeasurementPaging_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 KEYAPISTELEMETRYMETRICYV1MeasurementPaging_DirectionType_IsValidValue(int32_t value);

#pragma mark - Enum KEYAPISTELEMETRYMETRICYV1Measurement_DeviceType

/** Справочник типов устройств */
typedef GPB_ENUM(KEYAPISTELEMETRYMETRICYV1Measurement_DeviceType) {
  /**
   * 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.
   **/
  KEYAPISTELEMETRYMETRICYV1Measurement_DeviceType_GPBUnrecognizedEnumeratorValue = kGPBUnrecognizedEnumeratorValue,
  /** Значение не указано */
  KEYAPISTELEMETRYMETRICYV1Measurement_DeviceType_DeviceTypeUnknown = 0,

  /** Коммуникационный модуль */
  KEYAPISTELEMETRYMETRICYV1Measurement_DeviceType_Hub = 1,

  /** Счетчик импульсов - регистратор */
  KEYAPISTELEMETRYMETRICYV1Measurement_DeviceType_PulseCounterRecorder = 2,

  /** Счетчик импульсов - регистратор LoRaWAN */
  KEYAPISTELEMETRYMETRICYV1Measurement_DeviceType_PulseCounterRecorderLr = 3,

  /** Прибор учета расхода коммунальных услуг */
  KEYAPISTELEMETRYMETRICYV1Measurement_DeviceType_MeteringDevice = 4,

  /** Конвертер интерфейсов */
  KEYAPISTELEMETRYMETRICYV1Measurement_DeviceType_InterfaceConverter = 5,

  /** M-BUS концентратор */
  KEYAPISTELEMETRYMETRICYV1Measurement_DeviceType_MBusHub = 6,

  /** Модуль связи LoRaWAN */
  KEYAPISTELEMETRYMETRICYV1Measurement_DeviceType_CommunicationModuleLr = 7,

  /** Базовая станция LoRaWAN */
  KEYAPISTELEMETRYMETRICYV1Measurement_DeviceType_BaseLr = 8,
};

GPBEnumDescriptor *KEYAPISTELEMETRYMETRICYV1Measurement_DeviceType_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 KEYAPISTELEMETRYMETRICYV1Measurement_DeviceType_IsValidValue(int32_t value);

#pragma mark - Enum KEYAPISTELEMETRYMETRICYV1Measurement_MetricType

/** Справочние типов энергоресурсов */
typedef GPB_ENUM(KEYAPISTELEMETRYMETRICYV1Measurement_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.
   **/
  KEYAPISTELEMETRYMETRICYV1Measurement_MetricType_GPBUnrecognizedEnumeratorValue = kGPBUnrecognizedEnumeratorValue,
  /** Значение не указано */
  KEYAPISTELEMETRYMETRICYV1Measurement_MetricType_MetricTypeUnknown = 0,

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

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

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

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

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

GPBEnumDescriptor *KEYAPISTELEMETRYMETRICYV1Measurement_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 KEYAPISTELEMETRYMETRICYV1Measurement_MetricType_IsValidValue(int32_t value);

#pragma mark - Enum KEYAPISTELEMETRYMETRICYV1Measurement_UnitType

/** Справочник типов единиц измерений */
typedef GPB_ENUM(KEYAPISTELEMETRYMETRICYV1Measurement_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.
   **/
  KEYAPISTELEMETRYMETRICYV1Measurement_UnitType_GPBUnrecognizedEnumeratorValue = kGPBUnrecognizedEnumeratorValue,
  /** Значение не указано */
  KEYAPISTELEMETRYMETRICYV1Measurement_UnitType_UnitTypeUnknown = 0,

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

GPBEnumDescriptor *KEYAPISTELEMETRYMETRICYV1Measurement_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 KEYAPISTELEMETRYMETRICYV1Measurement_UnitType_IsValidValue(int32_t value);

#pragma mark - KEYAPISTELEMETRYMETRICYV1KeyapisTelemetryMetricMeasurementV1Root

/**
 * 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 KEYAPISTELEMETRYMETRICYV1KeyapisTelemetryMetricMeasurementV1Root : GPBRootObject
@end

#pragma mark - KEYAPISTELEMETRYMETRICYV1GetMeasurementListRequest

typedef GPB_ENUM(KEYAPISTELEMETRYMETRICYV1GetMeasurementListRequest_FieldNumber) {
  KEYAPISTELEMETRYMETRICYV1GetMeasurementListRequest_FieldNumber_Filter = 1,
  KEYAPISTELEMETRYMETRICYV1GetMeasurementListRequest_FieldNumber_Paging = 2,
};

typedef GPB_ENUM(KEYAPISTELEMETRYMETRICYV1GetMeasurementListRequest_Pagination_OneOfCase) {
  KEYAPISTELEMETRYMETRICYV1GetMeasurementListRequest_Pagination_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISTELEMETRYMETRICYV1GetMeasurementListRequest_Pagination_OneOfCase_Paging = 2,
};

/**
 * Запрос получения списка измерений
 **/
GPB_FINAL @interface KEYAPISTELEMETRYMETRICYV1GetMeasurementListRequest : GPBMessage

/** Параметры фильтрации измерений */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISTELEMETRYMETRICYV1MeasurementFilter *filter;
/** Test to see if @c filter has been set. */
@property(nonatomic, readwrite) BOOL hasFilter;

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

/** Параметры пагинации по измерениям */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISTELEMETRYMETRICYV1MeasurementPaging *paging;

@end

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

#pragma mark - KEYAPISTELEMETRYMETRICYV1GetMeasurementConvertedListRequest

typedef GPB_ENUM(KEYAPISTELEMETRYMETRICYV1GetMeasurementConvertedListRequest_FieldNumber) {
  KEYAPISTELEMETRYMETRICYV1GetMeasurementConvertedListRequest_FieldNumber_Filter = 1,
  KEYAPISTELEMETRYMETRICYV1GetMeasurementConvertedListRequest_FieldNumber_Paging = 2,
};

typedef GPB_ENUM(KEYAPISTELEMETRYMETRICYV1GetMeasurementConvertedListRequest_Pagination_OneOfCase) {
  KEYAPISTELEMETRYMETRICYV1GetMeasurementConvertedListRequest_Pagination_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISTELEMETRYMETRICYV1GetMeasurementConvertedListRequest_Pagination_OneOfCase_Paging = 2,
};

/**
 * Запрос получения списка преобразованных измерений
 **/
GPB_FINAL @interface KEYAPISTELEMETRYMETRICYV1GetMeasurementConvertedListRequest : GPBMessage

/** Параметры фильтрации измерений */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISTELEMETRYMETRICYV1MeasurementFilter *filter;
/** Test to see if @c filter has been set. */
@property(nonatomic, readwrite) BOOL hasFilter;

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

/** Параметры пагинации по измерениям */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISTELEMETRYMETRICYV1MeasurementPaging *paging;

@end

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

#pragma mark - KEYAPISTELEMETRYMETRICYV1GetMeasurementListResponse

typedef GPB_ENUM(KEYAPISTELEMETRYMETRICYV1GetMeasurementListResponse_FieldNumber) {
  KEYAPISTELEMETRYMETRICYV1GetMeasurementListResponse_FieldNumber_Data_p = 1,
};

typedef GPB_ENUM(KEYAPISTELEMETRYMETRICYV1GetMeasurementListResponse_Type_OneOfCase) {
  KEYAPISTELEMETRYMETRICYV1GetMeasurementListResponse_Type_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISTELEMETRYMETRICYV1GetMeasurementListResponse_Type_OneOfCase_Data_p = 1,
};

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

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

/** Значение измерения */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISTELEMETRYMETRICYV1Measurement *data_p;

@end

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

#pragma mark - KEYAPISTELEMETRYMETRICYV1GetMeasurementConvertedListResponse

typedef GPB_ENUM(KEYAPISTELEMETRYMETRICYV1GetMeasurementConvertedListResponse_FieldNumber) {
  KEYAPISTELEMETRYMETRICYV1GetMeasurementConvertedListResponse_FieldNumber_Data_p = 1,
};

typedef GPB_ENUM(KEYAPISTELEMETRYMETRICYV1GetMeasurementConvertedListResponse_Type_OneOfCase) {
  KEYAPISTELEMETRYMETRICYV1GetMeasurementConvertedListResponse_Type_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISTELEMETRYMETRICYV1GetMeasurementConvertedListResponse_Type_OneOfCase_Data_p = 1,
};

/**
 * Ответ на запрос получения списка преобразованных измерений
 **/
GPB_FINAL @interface KEYAPISTELEMETRYMETRICYV1GetMeasurementConvertedListResponse : GPBMessage

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

/** Значение измерения */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISTELEMETRYMETRICYV1Measurement *data_p;

@end

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

#pragma mark - KEYAPISTELEMETRYMETRICYV1MeasurementFilter

typedef GPB_ENUM(KEYAPISTELEMETRYMETRICYV1MeasurementFilter_FieldNumber) {
  KEYAPISTELEMETRYMETRICYV1MeasurementFilter_FieldNumber_FiasIdsArray = 1,
  KEYAPISTELEMETRYMETRICYV1MeasurementFilter_FieldNumber_DeviceIdsArray = 2,
  KEYAPISTELEMETRYMETRICYV1MeasurementFilter_FieldNumber_IndicatorIdsArray = 3,
  KEYAPISTELEMETRYMETRICYV1MeasurementFilter_FieldNumber_BeginSyncedAt = 4,
  KEYAPISTELEMETRYMETRICYV1MeasurementFilter_FieldNumber_EndSyncedAt = 5,
  KEYAPISTELEMETRYMETRICYV1MeasurementFilter_FieldNumber_DeviceModelsArray = 6,
  KEYAPISTELEMETRYMETRICYV1MeasurementFilter_FieldNumber_DeviceTypesArray = 7,
  KEYAPISTELEMETRYMETRICYV1MeasurementFilter_FieldNumber_MetricTypesArray = 8,
  KEYAPISTELEMETRYMETRICYV1MeasurementFilter_FieldNumber_IsBorderMeasurementsOnly = 9,
};

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

/** По ФИАСам */
@property(nonatomic, readwrite, strong, null_resettable) NSMutableArray<NSString*> *fiasIdsArray;
/** The number of items in @c fiasIdsArray without causing the container to be created. */
@property(nonatomic, readonly) NSUInteger fiasIdsArray_Count;

/** По идентификаторам */
@property(nonatomic, readwrite, strong, null_resettable) GPBInt32Array *deviceIdsArray;
/** The number of items in @c deviceIdsArray without causing the container to be created. */
@property(nonatomic, readonly) NSUInteger deviceIdsArray_Count;

/** По идентификаторам индикаторов */
@property(nonatomic, readwrite, strong, null_resettable) GPBInt32Array *indicatorIdsArray;
/** The number of items in @c indicatorIdsArray without causing the container to be created. */
@property(nonatomic, readonly) NSUInteger indicatorIdsArray_Count;

/** От даты синхронизации включительно (>=) */
@property(nonatomic, readwrite, strong, null_resettable) GPBTimestamp *beginSyncedAt;
/** Test to see if @c beginSyncedAt has been set. */
@property(nonatomic, readwrite) BOOL hasBeginSyncedAt;

/** До даты синхронизации (<) */
@property(nonatomic, readwrite, strong, null_resettable) GPBTimestamp *endSyncedAt;
/** Test to see if @c endSyncedAt has been set. */
@property(nonatomic, readwrite) BOOL hasEndSyncedAt;

/** По моделям устройств */
@property(nonatomic, readwrite, strong, null_resettable) NSMutableArray<NSString*> *deviceModelsArray;
/** The number of items in @c deviceModelsArray without causing the container to be created. */
@property(nonatomic, readonly) NSUInteger deviceModelsArray_Count;

/** По типам устройств */
// |deviceTypesArray| contains |KEYAPISTELEMETRYMETRICYV1Measurement_DeviceType|
@property(nonatomic, readwrite, strong, null_resettable) GPBEnumArray *deviceTypesArray;
/** The number of items in @c deviceTypesArray without causing the container to be created. */
@property(nonatomic, readonly) NSUInteger deviceTypesArray_Count;

/** По типам измерений */
// |metricTypesArray| contains |KEYAPISTELEMETRYMETRICYV1Measurement_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;

/**
 * Ограничение результатов только пограничными значениями для периода.
 * Если border_measurements_only=null возвращаем измерения по условиям фильтра, уникальные по (indicator_id, synced_at).
 * Если border_measurements_only=falsе возвращаем измерения по условиям фильтра, уникальные по (indicator_id, synced_at).
 * Если заданы border_measurements_only=true, begin_synced_at, end_synced_at возвращаем два измерения ближайшие к границам периода.
 * Если заданы border_measurements_only=true, и не задана end_synced_at возвращаем одно измерение ближайшее к begin_synced_at.
 * Если заданы border_measurements_only=true, и не задана begin_synced_at возвращаем одно измерение ближайшее к end_synced_at.
 * Если заданы border_measurements_only=true и не заданы begin_synced_at и end_synced_at возвращаем ошибку валидации параметров
 **/
@property(nonatomic, readwrite, strong, null_resettable) GPBBoolValue *isBorderMeasurementsOnly;
/** Test to see if @c isBorderMeasurementsOnly has been set. */
@property(nonatomic, readwrite) BOOL hasIsBorderMeasurementsOnly;

@end

#pragma mark - KEYAPISTELEMETRYMETRICYV1GetMeasurementCountRequest

typedef GPB_ENUM(KEYAPISTELEMETRYMETRICYV1GetMeasurementCountRequest_FieldNumber) {
  KEYAPISTELEMETRYMETRICYV1GetMeasurementCountRequest_FieldNumber_Filter = 1,
};

/**
 * Запрос получения количества измерений
 **/
GPB_FINAL @interface KEYAPISTELEMETRYMETRICYV1GetMeasurementCountRequest : GPBMessage

/** Параметры фильтрации измерений */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISTELEMETRYMETRICYV1MeasurementFilter *filter;
/** Test to see if @c filter has been set. */
@property(nonatomic, readwrite) BOOL hasFilter;

@end

#pragma mark - KEYAPISTELEMETRYMETRICYV1GetMeasurementConvertedCountRequest

typedef GPB_ENUM(KEYAPISTELEMETRYMETRICYV1GetMeasurementConvertedCountRequest_FieldNumber) {
  KEYAPISTELEMETRYMETRICYV1GetMeasurementConvertedCountRequest_FieldNumber_Filter = 1,
};

/**
 * Запрос получения количества преобразованных измерений
 **/
GPB_FINAL @interface KEYAPISTELEMETRYMETRICYV1GetMeasurementConvertedCountRequest : GPBMessage

/** Параметры фильтрации измерений */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISTELEMETRYMETRICYV1MeasurementFilter *filter;
/** Test to see if @c filter has been set. */
@property(nonatomic, readwrite) BOOL hasFilter;

@end

#pragma mark - KEYAPISTELEMETRYMETRICYV1GetMeasurementCountResponse

typedef GPB_ENUM(KEYAPISTELEMETRYMETRICYV1GetMeasurementCountResponse_FieldNumber) {
  KEYAPISTELEMETRYMETRICYV1GetMeasurementCountResponse_FieldNumber_Data_p = 1,
};

typedef GPB_ENUM(KEYAPISTELEMETRYMETRICYV1GetMeasurementCountResponse_Type_OneOfCase) {
  KEYAPISTELEMETRYMETRICYV1GetMeasurementCountResponse_Type_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISTELEMETRYMETRICYV1GetMeasurementCountResponse_Type_OneOfCase_Data_p = 1,
};

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

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

/** Всего измерений */
@property(nonatomic, readwrite) int32_t data_p;

@end

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

#pragma mark - KEYAPISTELEMETRYMETRICYV1GetMeasurementConvertedCountResponse

typedef GPB_ENUM(KEYAPISTELEMETRYMETRICYV1GetMeasurementConvertedCountResponse_FieldNumber) {
  KEYAPISTELEMETRYMETRICYV1GetMeasurementConvertedCountResponse_FieldNumber_Data_p = 1,
};

typedef GPB_ENUM(KEYAPISTELEMETRYMETRICYV1GetMeasurementConvertedCountResponse_Type_OneOfCase) {
  KEYAPISTELEMETRYMETRICYV1GetMeasurementConvertedCountResponse_Type_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISTELEMETRYMETRICYV1GetMeasurementConvertedCountResponse_Type_OneOfCase_Data_p = 1,
};

/**
 * Ответ на запрос получения количества преобразованных измерений
 **/
GPB_FINAL @interface KEYAPISTELEMETRYMETRICYV1GetMeasurementConvertedCountResponse : GPBMessage

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

/** Всего измерений */
@property(nonatomic, readwrite) int32_t data_p;

@end

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

#pragma mark - KEYAPISTELEMETRYMETRICYV1MeasurementPaging

typedef GPB_ENUM(KEYAPISTELEMETRYMETRICYV1MeasurementPaging_FieldNumber) {
  KEYAPISTELEMETRYMETRICYV1MeasurementPaging_FieldNumber_OrderByType = 1,
  KEYAPISTELEMETRYMETRICYV1MeasurementPaging_FieldNumber_DirectionType = 2,
  KEYAPISTELEMETRYMETRICYV1MeasurementPaging_FieldNumber_Limit = 3,
  KEYAPISTELEMETRYMETRICYV1MeasurementPaging_FieldNumber_Offset = 4,
};

/**
 * Параметры пагинации измерений
 **/
GPB_FINAL @interface KEYAPISTELEMETRYMETRICYV1MeasurementPaging : GPBMessage

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

/**
 * Тип направления сортировки.
 * По умолчанию: DESC
 **/
@property(nonatomic, readwrite) KEYAPISTELEMETRYMETRICYV1MeasurementPaging_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 KEYAPISTELEMETRYMETRICYV1MeasurementPaging's @c orderByType property, even
 * if the value was not defined by the enum at the time the code was generated.
 **/
int32_t KEYAPISTELEMETRYMETRICYV1MeasurementPaging_OrderByType_RawValue(KEYAPISTELEMETRYMETRICYV1MeasurementPaging *message);
/**
 * Sets the raw value of an @c KEYAPISTELEMETRYMETRICYV1MeasurementPaging'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 SetKEYAPISTELEMETRYMETRICYV1MeasurementPaging_OrderByType_RawValue(KEYAPISTELEMETRYMETRICYV1MeasurementPaging *message, int32_t value);

/**
 * Fetches the raw value of a @c KEYAPISTELEMETRYMETRICYV1MeasurementPaging's @c directionType property, even
 * if the value was not defined by the enum at the time the code was generated.
 **/
int32_t KEYAPISTELEMETRYMETRICYV1MeasurementPaging_DirectionType_RawValue(KEYAPISTELEMETRYMETRICYV1MeasurementPaging *message);
/**
 * Sets the raw value of an @c KEYAPISTELEMETRYMETRICYV1MeasurementPaging'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 SetKEYAPISTELEMETRYMETRICYV1MeasurementPaging_DirectionType_RawValue(KEYAPISTELEMETRYMETRICYV1MeasurementPaging *message, int32_t value);

#pragma mark - KEYAPISTELEMETRYMETRICYV1PostMeasurementRequest

typedef GPB_ENUM(KEYAPISTELEMETRYMETRICYV1PostMeasurementRequest_FieldNumber) {
  KEYAPISTELEMETRYMETRICYV1PostMeasurementRequest_FieldNumber_Data_p = 1,
};

/**
 * Запрос сохранения измерения
 **/
GPB_FINAL @interface KEYAPISTELEMETRYMETRICYV1PostMeasurementRequest : GPBMessage

/** Измерение */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISTELEMETRYMETRICYV1Measurement *data_p;
/** Test to see if @c data_p has been set. */
@property(nonatomic, readwrite) BOOL hasData_p;

@end

#pragma mark - KEYAPISTELEMETRYMETRICYV1PostMeasurementResponse

/**
 * Ответ на запрос сохранения измерения
 **/
GPB_FINAL @interface KEYAPISTELEMETRYMETRICYV1PostMeasurementResponse : GPBMessage

@end

#pragma mark - KEYAPISTELEMETRYMETRICYV1PostMeasurementHalfDuplexRequest

typedef GPB_ENUM(KEYAPISTELEMETRYMETRICYV1PostMeasurementHalfDuplexRequest_FieldNumber) {
  KEYAPISTELEMETRYMETRICYV1PostMeasurementHalfDuplexRequest_FieldNumber_Data_p = 1,
};

/**
 * Запрос сохранения потока измерения
 **/
GPB_FINAL @interface KEYAPISTELEMETRYMETRICYV1PostMeasurementHalfDuplexRequest : GPBMessage

/** Измерение */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISTELEMETRYMETRICYV1Measurement *data_p;
/** Test to see if @c data_p has been set. */
@property(nonatomic, readwrite) BOOL hasData_p;

@end

#pragma mark - KEYAPISTELEMETRYMETRICYV1PostMeasurementHalfDuplexResponse

/**
 * Ответ на запрос сохранения потока измерений
 **/
GPB_FINAL @interface KEYAPISTELEMETRYMETRICYV1PostMeasurementHalfDuplexResponse : GPBMessage

@end

#pragma mark - KEYAPISTELEMETRYMETRICYV1Measurement

typedef GPB_ENUM(KEYAPISTELEMETRYMETRICYV1Measurement_FieldNumber) {
  KEYAPISTELEMETRYMETRICYV1Measurement_FieldNumber_IndicatorId = 1,
  KEYAPISTELEMETRYMETRICYV1Measurement_FieldNumber_Value = 2,
  KEYAPISTELEMETRYMETRICYV1Measurement_FieldNumber_SyncedAt = 3,
  KEYAPISTELEMETRYMETRICYV1Measurement_FieldNumber_FiasId = 4,
  KEYAPISTELEMETRYMETRICYV1Measurement_FieldNumber_DeviceId = 5,
  KEYAPISTELEMETRYMETRICYV1Measurement_FieldNumber_DeviceParentId = 6,
  KEYAPISTELEMETRYMETRICYV1Measurement_FieldNumber_DeviceModel = 7,
  KEYAPISTELEMETRYMETRICYV1Measurement_FieldNumber_DeviceType = 8,
  KEYAPISTELEMETRYMETRICYV1Measurement_FieldNumber_MetricType = 9,
  KEYAPISTELEMETRYMETRICYV1Measurement_FieldNumber_ChangedAt = 10,
  KEYAPISTELEMETRYMETRICYV1Measurement_FieldNumber_UtcOffset = 11,
  KEYAPISTELEMETRYMETRICYV1Measurement_FieldNumber_UnitType = 12,
};

/**
 * Измерение.
 * Очередь key.telemetry_consumer.measurement_stream_request.v1
 **/
GPB_FINAL @interface KEYAPISTELEMETRYMETRICYV1Measurement : GPBMessage

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

/** Значение */
@property(nonatomic, readwrite) float value;

/**
 * Временная метка сбора счётчиком.
 * Если не передано берётся серверное время
 **/
@property(nonatomic, readwrite, strong, null_resettable) GPBTimestamp *syncedAt;
/** Test to see if @c syncedAt has been set. */
@property(nonatomic, readwrite) BOOL hasSyncedAt;

/** ФИАС */
@property(nonatomic, readwrite, strong, null_resettable) GPBStringValue *fiasId;
/** Test to see if @c fiasId has been set. */
@property(nonatomic, readwrite) BOOL hasFiasId;

/** Идентификатор устройства */
@property(nonatomic, readwrite, strong, null_resettable) GPBInt32Value *deviceId;
/** Test to see if @c deviceId has been set. */
@property(nonatomic, readwrite) BOOL hasDeviceId;

/** Идентификатор родительского устройства */
@property(nonatomic, readwrite, strong, null_resettable) GPBInt32Value *deviceParentId;
/** Test to see if @c deviceParentId has been set. */
@property(nonatomic, readwrite) BOOL hasDeviceParentId;

/** Модель устройства */
@property(nonatomic, readwrite, strong, null_resettable) GPBStringValue *deviceModel;
/** Test to see if @c deviceModel has been set. */
@property(nonatomic, readwrite) BOOL hasDeviceModel;

/** Тип устройства */
@property(nonatomic, readwrite) KEYAPISTELEMETRYMETRICYV1Measurement_DeviceType deviceType;

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

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

/** Сдвиг таймзоны относительно UTC для даты synced_at */
@property(nonatomic, readwrite) int32_t utcOffset;

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

@end

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

/**
 * Fetches the raw value of a @c KEYAPISTELEMETRYMETRICYV1Measurement's @c metricType property, even
 * if the value was not defined by the enum at the time the code was generated.
 **/
int32_t KEYAPISTELEMETRYMETRICYV1Measurement_MetricType_RawValue(KEYAPISTELEMETRYMETRICYV1Measurement *message);
/**
 * Sets the raw value of an @c KEYAPISTELEMETRYMETRICYV1Measurement'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 SetKEYAPISTELEMETRYMETRICYV1Measurement_MetricType_RawValue(KEYAPISTELEMETRYMETRICYV1Measurement *message, int32_t value);

/**
 * Fetches the raw value of a @c KEYAPISTELEMETRYMETRICYV1Measurement's @c unitType property, even
 * if the value was not defined by the enum at the time the code was generated.
 **/
int32_t KEYAPISTELEMETRYMETRICYV1Measurement_UnitType_RawValue(KEYAPISTELEMETRYMETRICYV1Measurement *message);
/**
 * Sets the raw value of an @c KEYAPISTELEMETRYMETRICYV1Measurement'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 SetKEYAPISTELEMETRYMETRICYV1Measurement_UnitType_RawValue(KEYAPISTELEMETRYMETRICYV1Measurement *message, int32_t value);

NS_ASSUME_NONNULL_END

CF_EXTERN_C_END

#pragma clang diagnostic pop

// @@protoc_insertion_point(global_scope)

// clang-format on
