// Generated by the protocol buffer compiler.  DO NOT EDIT!
// clang-format off
// source: keyapis/telemetry_control/v1/keyapis_telemetry_control_stream_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 KEYAPISTELEMETRYCONTROLV1Building;
@class KEYAPISTELEMETRYCONTROLV1Device;
@class KEYAPISTELEMETRYCONTROLV1DeviceIndicatorMetricPoint;
@class KEYAPISTELEMETRYCONTROLV1Device_MetricPoint;
@class KEYAPISTELEMETRYCONTROLV1Indicator;
@class KEYAPISTELEMETRYCONTROLV1PostResourceFullDuplexRequest_ResourceAsyncStatus;
@class KEYAPISTELEMETRYCONTROLV1PostResourceFullDuplexRequest_ResourceAsyncStatus_Error;
@class KEYAPISTELEMETRYCONTROLV1PostResourceFullDuplexRequest_ResourceAsyncStatus_Error_UnknownError;
@class KEYAPISTELEMETRYCONTROLV1PostResourceFullDuplexRequest_ResourceAsyncStatus_Success;
@class KEYAPISTELEMETRYCONTROLV1PostResourceFullDuplexResponse_RemoveResourceEvent;
@class KEYAPISTELEMETRYCONTROLV1PostResourceFullDuplexResponse_UpsertResourceEvent;
@class KEYAPISTELEMETRYCONTROLV1Resource;
@class KEYAPISTELEMETRYCONTROLV1ResourceId;

NS_ASSUME_NONNULL_BEGIN

#pragma mark - KEYAPISTELEMETRYCONTROLV1KeyapisTelemetryControlStreamV1Root

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

#pragma mark - KEYAPISTELEMETRYCONTROLV1PostResourceFullDuplexResponse

typedef GPB_ENUM(KEYAPISTELEMETRYCONTROLV1PostResourceFullDuplexResponse_FieldNumber) {
  KEYAPISTELEMETRYCONTROLV1PostResourceFullDuplexResponse_FieldNumber_RequestId = 1,
  KEYAPISTELEMETRYCONTROLV1PostResourceFullDuplexResponse_FieldNumber_UpsertResourceEvent = 2,
  KEYAPISTELEMETRYCONTROLV1PostResourceFullDuplexResponse_FieldNumber_RemoveResourceEvent = 3,
};

typedef GPB_ENUM(KEYAPISTELEMETRYCONTROLV1PostResourceFullDuplexResponse_Event_OneOfCase) {
  KEYAPISTELEMETRYCONTROLV1PostResourceFullDuplexResponse_Event_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISTELEMETRYCONTROLV1PostResourceFullDuplexResponse_Event_OneOfCase_UpsertResourceEvent = 2,
  KEYAPISTELEMETRYCONTROLV1PostResourceFullDuplexResponse_Event_OneOfCase_RemoveResourceEvent = 3,
};

/**
 * Событие создания/изменения ресурса
 **/
GPB_FINAL @interface KEYAPISTELEMETRYCONTROLV1PostResourceFullDuplexResponse : GPBMessage

/** Идентификатор запроса */
@property(nonatomic, readwrite, copy, null_resettable) NSString *requestId;

/** Событие */
@property(nonatomic, readonly) KEYAPISTELEMETRYCONTROLV1PostResourceFullDuplexResponse_Event_OneOfCase eventOneOfCase;

/** Событие создания/обновления ресурса */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISTELEMETRYCONTROLV1PostResourceFullDuplexResponse_UpsertResourceEvent *upsertResourceEvent;

/** Событие удаления ресурса */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISTELEMETRYCONTROLV1PostResourceFullDuplexResponse_RemoveResourceEvent *removeResourceEvent;

@end

/**
 * Clears whatever value was set for the oneof 'event'.
 **/
void KEYAPISTELEMETRYCONTROLV1PostResourceFullDuplexResponse_ClearEventOneOfCase(KEYAPISTELEMETRYCONTROLV1PostResourceFullDuplexResponse *message);

#pragma mark - KEYAPISTELEMETRYCONTROLV1PostResourceFullDuplexResponse_RemoveResourceEvent

typedef GPB_ENUM(KEYAPISTELEMETRYCONTROLV1PostResourceFullDuplexResponse_RemoveResourceEvent_FieldNumber) {
  KEYAPISTELEMETRYCONTROLV1PostResourceFullDuplexResponse_RemoveResourceEvent_FieldNumber_ResourceId = 1,
};

/**
 * Событие удаления ресурса
 **/
GPB_FINAL @interface KEYAPISTELEMETRYCONTROLV1PostResourceFullDuplexResponse_RemoveResourceEvent : GPBMessage

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

@end

#pragma mark - KEYAPISTELEMETRYCONTROLV1PostResourceFullDuplexResponse_UpsertResourceEvent

typedef GPB_ENUM(KEYAPISTELEMETRYCONTROLV1PostResourceFullDuplexResponse_UpsertResourceEvent_FieldNumber) {
  KEYAPISTELEMETRYCONTROLV1PostResourceFullDuplexResponse_UpsertResourceEvent_FieldNumber_Resource = 1,
};

/**
 * Событие создания/обновления ресурса
 **/
GPB_FINAL @interface KEYAPISTELEMETRYCONTROLV1PostResourceFullDuplexResponse_UpsertResourceEvent : GPBMessage

/** Ресурс */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISTELEMETRYCONTROLV1Resource *resource;
/** Test to see if @c resource has been set. */
@property(nonatomic, readwrite) BOOL hasResource;

@end

#pragma mark - KEYAPISTELEMETRYCONTROLV1ResourceId

typedef GPB_ENUM(KEYAPISTELEMETRYCONTROLV1ResourceId_FieldNumber) {
  KEYAPISTELEMETRYCONTROLV1ResourceId_FieldNumber_BuildingId = 1,
  KEYAPISTELEMETRYCONTROLV1ResourceId_FieldNumber_DeviceId = 2,
  KEYAPISTELEMETRYCONTROLV1ResourceId_FieldNumber_MetricPointId = 3,
  KEYAPISTELEMETRYCONTROLV1ResourceId_FieldNumber_IndicatorId = 4,
  KEYAPISTELEMETRYCONTROLV1ResourceId_FieldNumber_IndicatorMetricPoint = 5,
};

typedef GPB_ENUM(KEYAPISTELEMETRYCONTROLV1ResourceId_Type_OneOfCase) {
  KEYAPISTELEMETRYCONTROLV1ResourceId_Type_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISTELEMETRYCONTROLV1ResourceId_Type_OneOfCase_BuildingId = 1,
  KEYAPISTELEMETRYCONTROLV1ResourceId_Type_OneOfCase_DeviceId = 2,
  KEYAPISTELEMETRYCONTROLV1ResourceId_Type_OneOfCase_MetricPointId = 3,
  KEYAPISTELEMETRYCONTROLV1ResourceId_Type_OneOfCase_IndicatorId = 4,
  KEYAPISTELEMETRYCONTROLV1ResourceId_Type_OneOfCase_IndicatorMetricPoint = 5,
};

/**
 * Идентификатор ресурса
 **/
GPB_FINAL @interface KEYAPISTELEMETRYCONTROLV1ResourceId : GPBMessage

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

/** Идентификатор объекта строительства */
@property(nonatomic, readwrite) int32_t buildingId;

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

/** Идентификатор ТУ */
@property(nonatomic, readwrite, copy, null_resettable) NSString *metricPointId;

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

/** Связка индикатора и ТУ */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISTELEMETRYCONTROLV1DeviceIndicatorMetricPoint *indicatorMetricPoint;

@end

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

#pragma mark - KEYAPISTELEMETRYCONTROLV1Resource

typedef GPB_ENUM(KEYAPISTELEMETRYCONTROLV1Resource_FieldNumber) {
  KEYAPISTELEMETRYCONTROLV1Resource_FieldNumber_Building = 1,
  KEYAPISTELEMETRYCONTROLV1Resource_FieldNumber_Device = 2,
  KEYAPISTELEMETRYCONTROLV1Resource_FieldNumber_MetricPoint = 3,
  KEYAPISTELEMETRYCONTROLV1Resource_FieldNumber_Indicator = 4,
  KEYAPISTELEMETRYCONTROLV1Resource_FieldNumber_IndicatorMetricPoint = 5,
};

typedef GPB_ENUM(KEYAPISTELEMETRYCONTROLV1Resource_Type_OneOfCase) {
  KEYAPISTELEMETRYCONTROLV1Resource_Type_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISTELEMETRYCONTROLV1Resource_Type_OneOfCase_Building = 1,
  KEYAPISTELEMETRYCONTROLV1Resource_Type_OneOfCase_Device = 2,
  KEYAPISTELEMETRYCONTROLV1Resource_Type_OneOfCase_MetricPoint = 3,
  KEYAPISTELEMETRYCONTROLV1Resource_Type_OneOfCase_Indicator = 4,
  KEYAPISTELEMETRYCONTROLV1Resource_Type_OneOfCase_IndicatorMetricPoint = 5,
};

/**
 * Ресурс
 **/
GPB_FINAL @interface KEYAPISTELEMETRYCONTROLV1Resource : GPBMessage

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

/** Объект строительства */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISTELEMETRYCONTROLV1Building *building;

/** Идентификатор ПУ */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISTELEMETRYCONTROLV1Device *device;

/** Точка учета */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISTELEMETRYCONTROLV1Device_MetricPoint *metricPoint;

/** Индикатор */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISTELEMETRYCONTROLV1Indicator *indicator;

/** Связка индикатора и ТУ */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISTELEMETRYCONTROLV1DeviceIndicatorMetricPoint *indicatorMetricPoint;

@end

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

#pragma mark - KEYAPISTELEMETRYCONTROLV1PostResourceFullDuplexRequest

typedef GPB_ENUM(KEYAPISTELEMETRYCONTROLV1PostResourceFullDuplexRequest_FieldNumber) {
  KEYAPISTELEMETRYCONTROLV1PostResourceFullDuplexRequest_FieldNumber_RequestId = 1,
  KEYAPISTELEMETRYCONTROLV1PostResourceFullDuplexRequest_FieldNumber_ResourceAsyncStatus = 2,
};

typedef GPB_ENUM(KEYAPISTELEMETRYCONTROLV1PostResourceFullDuplexRequest_Task_OneOfCase) {
  KEYAPISTELEMETRYCONTROLV1PostResourceFullDuplexRequest_Task_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISTELEMETRYCONTROLV1PostResourceFullDuplexRequest_Task_OneOfCase_ResourceAsyncStatus = 2,
};

/**
 * Запрос создания задачи с клиента на сервере
 **/
GPB_FINAL @interface KEYAPISTELEMETRYCONTROLV1PostResourceFullDuplexRequest : GPBMessage

/** Идентификатор запроса */
@property(nonatomic, readwrite, copy, null_resettable) NSString *requestId;

/** Задача с клиента */
@property(nonatomic, readonly) KEYAPISTELEMETRYCONTROLV1PostResourceFullDuplexRequest_Task_OneOfCase taskOneOfCase;

/** Результат обработки ресурса на клиенте */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISTELEMETRYCONTROLV1PostResourceFullDuplexRequest_ResourceAsyncStatus *resourceAsyncStatus;

@end

/**
 * Clears whatever value was set for the oneof 'task'.
 **/
void KEYAPISTELEMETRYCONTROLV1PostResourceFullDuplexRequest_ClearTaskOneOfCase(KEYAPISTELEMETRYCONTROLV1PostResourceFullDuplexRequest *message);

#pragma mark - KEYAPISTELEMETRYCONTROLV1PostResourceFullDuplexRequest_ResourceAsyncStatus

typedef GPB_ENUM(KEYAPISTELEMETRYCONTROLV1PostResourceFullDuplexRequest_ResourceAsyncStatus_FieldNumber) {
  KEYAPISTELEMETRYCONTROLV1PostResourceFullDuplexRequest_ResourceAsyncStatus_FieldNumber_ResourceId = 1,
  KEYAPISTELEMETRYCONTROLV1PostResourceFullDuplexRequest_ResourceAsyncStatus_FieldNumber_Data_p = 2,
  KEYAPISTELEMETRYCONTROLV1PostResourceFullDuplexRequest_ResourceAsyncStatus_FieldNumber_Error = 3,
};

typedef GPB_ENUM(KEYAPISTELEMETRYCONTROLV1PostResourceFullDuplexRequest_ResourceAsyncStatus_Type_OneOfCase) {
  KEYAPISTELEMETRYCONTROLV1PostResourceFullDuplexRequest_ResourceAsyncStatus_Type_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISTELEMETRYCONTROLV1PostResourceFullDuplexRequest_ResourceAsyncStatus_Type_OneOfCase_Data_p = 2,
  KEYAPISTELEMETRYCONTROLV1PostResourceFullDuplexRequest_ResourceAsyncStatus_Type_OneOfCase_Error = 3,
};

/**
 * Результат обработки ресурса на клиенте
 **/
GPB_FINAL @interface KEYAPISTELEMETRYCONTROLV1PostResourceFullDuplexRequest_ResourceAsyncStatus : GPBMessage

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

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

/** Успех */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISTELEMETRYCONTROLV1PostResourceFullDuplexRequest_ResourceAsyncStatus_Success *data_p;

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

@end

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

#pragma mark - KEYAPISTELEMETRYCONTROLV1PostResourceFullDuplexRequest_ResourceAsyncStatus_Success

/**
 * Команда принята
 **/
GPB_FINAL @interface KEYAPISTELEMETRYCONTROLV1PostResourceFullDuplexRequest_ResourceAsyncStatus_Success : GPBMessage

@end

#pragma mark - KEYAPISTELEMETRYCONTROLV1PostResourceFullDuplexRequest_ResourceAsyncStatus_Error

typedef GPB_ENUM(KEYAPISTELEMETRYCONTROLV1PostResourceFullDuplexRequest_ResourceAsyncStatus_Error_FieldNumber) {
  KEYAPISTELEMETRYCONTROLV1PostResourceFullDuplexRequest_ResourceAsyncStatus_Error_FieldNumber_Unknown = 1,
};

typedef GPB_ENUM(KEYAPISTELEMETRYCONTROLV1PostResourceFullDuplexRequest_ResourceAsyncStatus_Error_Reason_OneOfCase) {
  KEYAPISTELEMETRYCONTROLV1PostResourceFullDuplexRequest_ResourceAsyncStatus_Error_Reason_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISTELEMETRYCONTROLV1PostResourceFullDuplexRequest_ResourceAsyncStatus_Error_Reason_OneOfCase_Unknown = 1,
};

/**
 * Ошибки обработки ресурса на клиенте
 **/
GPB_FINAL @interface KEYAPISTELEMETRYCONTROLV1PostResourceFullDuplexRequest_ResourceAsyncStatus_Error : GPBMessage

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

/** Неизвестная ошибка */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISTELEMETRYCONTROLV1PostResourceFullDuplexRequest_ResourceAsyncStatus_Error_UnknownError *unknown;

@end

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

#pragma mark - KEYAPISTELEMETRYCONTROLV1PostResourceFullDuplexRequest_ResourceAsyncStatus_Error_UnknownError

typedef GPB_ENUM(KEYAPISTELEMETRYCONTROLV1PostResourceFullDuplexRequest_ResourceAsyncStatus_Error_UnknownError_FieldNumber) {
  KEYAPISTELEMETRYCONTROLV1PostResourceFullDuplexRequest_ResourceAsyncStatus_Error_UnknownError_FieldNumber_Message = 1,
};

/**
 * Неизвестная ошибка на стороне клиента
 **/
GPB_FINAL @interface KEYAPISTELEMETRYCONTROLV1PostResourceFullDuplexRequest_ResourceAsyncStatus_Error_UnknownError : GPBMessage

/**
 * Произвольный текст ошибки на стороне клиента.
 * Отправляется в случае если в спецификации нет подходящей ошибки.
 * После анализа таких ошибок в спецификацию добавляется специальный тип под эту ошибку
 **/
@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
