// Code generated by gRPC proto compiler.  DO NOT EDIT!
// source: keyapis/telemetry_control/v1/keyapis_telemetry_control_device_v1.proto

#import <Foundation/Foundation.h>

#if !defined(GPB_GRPC_FORWARD_DECLARE_MESSAGE_PROTO) || !GPB_GRPC_FORWARD_DECLARE_MESSAGE_PROTO
#import "keyapis/telemetry_control/v1/KeyapisTelemetryControlDeviceV1.pbobjc.h"
#endif

#if !defined(GPB_GRPC_PROTOCOL_ONLY) || !GPB_GRPC_PROTOCOL_ONLY
#import <ProtoRPC/ProtoService.h>
#import <ProtoRPC/ProtoRPCLegacy.h>
#import <RxLibrary/GRXWriteable.h>
#import <RxLibrary/GRXWriter.h>
#endif

@class KEYAPISTELEMETRYCONTROLV1DeleteDeviceIndicatorRequest;
@class KEYAPISTELEMETRYCONTROLV1DeleteDeviceIndicatorResponse;
@class KEYAPISTELEMETRYCONTROLV1DeleteDeviceRequest;
@class KEYAPISTELEMETRYCONTROLV1DeleteDeviceResponse;
@class KEYAPISTELEMETRYCONTROLV1GetDeviceCountRequest;
@class KEYAPISTELEMETRYCONTROLV1GetDeviceCountResponse;
@class KEYAPISTELEMETRYCONTROLV1GetDeviceGroupCountRequest;
@class KEYAPISTELEMETRYCONTROLV1GetDeviceGroupCountResponse;
@class KEYAPISTELEMETRYCONTROLV1GetDeviceGroupListRequest;
@class KEYAPISTELEMETRYCONTROLV1GetDeviceGroupListResponse;
@class KEYAPISTELEMETRYCONTROLV1GetDeviceIndicatorCountRequest;
@class KEYAPISTELEMETRYCONTROLV1GetDeviceIndicatorCountResponse;
@class KEYAPISTELEMETRYCONTROLV1GetDeviceIndicatorListRequest;
@class KEYAPISTELEMETRYCONTROLV1GetDeviceIndicatorListResponse;
@class KEYAPISTELEMETRYCONTROLV1GetDeviceIndicatorMetricPointCountRequest;
@class KEYAPISTELEMETRYCONTROLV1GetDeviceIndicatorMetricPointCountResponse;
@class KEYAPISTELEMETRYCONTROLV1GetDeviceIndicatorMetricPointListRequest;
@class KEYAPISTELEMETRYCONTROLV1GetDeviceIndicatorMetricPointListResponse;
@class KEYAPISTELEMETRYCONTROLV1GetDeviceIndicatorRequest;
@class KEYAPISTELEMETRYCONTROLV1GetDeviceIndicatorResponse;
@class KEYAPISTELEMETRYCONTROLV1GetDeviceListRequest;
@class KEYAPISTELEMETRYCONTROLV1GetDeviceListResponse;
@class KEYAPISTELEMETRYCONTROLV1GetDeviceRequest;
@class KEYAPISTELEMETRYCONTROLV1GetDeviceResponse;
@class KEYAPISTELEMETRYCONTROLV1PostDeviceFullDuplexRequest;
@class KEYAPISTELEMETRYCONTROLV1PostDeviceFullDuplexResponse;
@class KEYAPISTELEMETRYCONTROLV1PostDeviceIndicatorRequest;
@class KEYAPISTELEMETRYCONTROLV1PostDeviceIndicatorResponse;
@class KEYAPISTELEMETRYCONTROLV1PostDeviceReplaceRequest;
@class KEYAPISTELEMETRYCONTROLV1PostDeviceReplaceResponse;
@class KEYAPISTELEMETRYCONTROLV1PostDeviceRequest;
@class KEYAPISTELEMETRYCONTROLV1PostDeviceResponse;
@class KEYAPISTELEMETRYCONTROLV1PutDeviceGroupAttachRequest;
@class KEYAPISTELEMETRYCONTROLV1PutDeviceGroupAttachResponse;
@class KEYAPISTELEMETRYCONTROLV1PutDeviceGroupDetachRequest;
@class KEYAPISTELEMETRYCONTROLV1PutDeviceGroupDetachResponse;
@class KEYAPISTELEMETRYCONTROLV1PutDeviceIndicatorMetricPointAttachRequest;
@class KEYAPISTELEMETRYCONTROLV1PutDeviceIndicatorMetricPointAttachResponse;
@class KEYAPISTELEMETRYCONTROLV1PutDeviceIndicatorMetricPointDetachRequest;
@class KEYAPISTELEMETRYCONTROLV1PutDeviceIndicatorMetricPointDetachResponse;

#if !defined(GPB_GRPC_FORWARD_DECLARE_MESSAGE_PROTO) || !GPB_GRPC_FORWARD_DECLARE_MESSAGE_PROTO
  #import "google/api/Annotations.pbobjc.h"
  #import "google/api/FieldBehavior.pbobjc.h"
#if defined(GPB_USE_PROTOBUF_FRAMEWORK_IMPORTS) && GPB_USE_PROTOBUF_FRAMEWORK_IMPORTS
  #import <Protobuf/GPBWrappers.pbobjc.h>
#else
  #import "GPBWrappers.pbobjc.h"
#endif
#if defined(GPB_USE_PROTOBUF_FRAMEWORK_IMPORTS) && GPB_USE_PROTOBUF_FRAMEWORK_IMPORTS
  #import <Protobuf/GPBTimestamp.pbobjc.h>
#else
  #import "GPBTimestamp.pbobjc.h"
#endif
  #import "google/api/Visibility.pbobjc.h"
#endif

@class GRPCUnaryProtoCall;
@class GRPCStreamingProtoCall;
@class GRPCCallOptions;
@protocol GRPCProtoResponseHandler;
@class GRPCProtoCall;


NS_ASSUME_NONNULL_BEGIN

@protocol KEYAPISTELEMETRYCONTROLV1DeviceService2 <NSObject>

#pragma mark PostDeviceFullDuplex(stream PostDeviceFullDuplexRequest) returns (stream PostDeviceFullDuplexResponse)

/**
 * Полнодуплексный метод отправки команд на сервер и получения изменения со стороны сервера.
 * Разрешения: telemetry_control:device:list, telemetry_control:device:list:own.
 * Метод доступен для: Token: admin, service, bti, seller, application, owner, employee. При наличии разрешений.
 * Метод доступен для: ApiKey: Без учета разрешений
 */
- (GRPCStreamingProtoCall *)postDeviceFullDuplexWithResponseHandler:(id<GRPCProtoResponseHandler>)handler callOptions:(GRPCCallOptions *_Nullable)callOptions;

#pragma mark GetDevice(GetDeviceRequest) returns (GetDeviceResponse)

/**
 * Метод получения ПУ.
 * Разрешения: telemetry_control:device:card, telemetry_control:device:card:own.
 * Метод доступен для: Token: admin, service, bti, seller, application, owner, employee, master. При наличии разрешений.
 * Метод доступен для: ApiKey: При наличии разрешений
 */
- (GRPCUnaryProtoCall *)getDeviceWithMessage:(KEYAPISTELEMETRYCONTROLV1GetDeviceRequest *)message responseHandler:(id<GRPCProtoResponseHandler>)handler callOptions:(GRPCCallOptions *_Nullable)callOptions;

#pragma mark GetDeviceList(GetDeviceListRequest) returns (stream GetDeviceListResponse)

/**
 * Метод получения списка приборов учета.
 * Разрешения: telemetry_control:device:list, telemetry_control:device:list:own.
 * Метод доступен для: Token: admin, service, bti, seller, application, owner, employee, master. При наличии разрешений.
 * Метод доступен для: ApiKey: При наличии разрешений
 */
- (GRPCUnaryProtoCall *)getDeviceListWithMessage:(KEYAPISTELEMETRYCONTROLV1GetDeviceListRequest *)message responseHandler:(id<GRPCProtoResponseHandler>)handler callOptions:(GRPCCallOptions *_Nullable)callOptions;

#pragma mark GetDeviceCount(GetDeviceCountRequest) returns (GetDeviceCountResponse)

/**
 * Метод получения количества приборов учета.
 * Разрешения: telemetry_control:device:list, telemetry_control:device:list:own.
 * Метод доступен для: Token: admin, service, bti, seller, application, owner, employee, master. При наличии разрешений.
 * Метод доступен для: ApiKey: При наличии разрешений
 */
- (GRPCUnaryProtoCall *)getDeviceCountWithMessage:(KEYAPISTELEMETRYCONTROLV1GetDeviceCountRequest *)message responseHandler:(id<GRPCProtoResponseHandler>)handler callOptions:(GRPCCallOptions *_Nullable)callOptions;

#pragma mark PostDeviceReplace(PostDeviceReplaceRequest) returns (PostDeviceReplaceResponse)

/**
 * Метод замены прибора учета.
 * Создает ПУ и привязывает его индикаторы к ТУ исходного ПУ.
 * Разрешения: telemetry_control:device:save, telemetry_control:device:save:own.
 * Метод доступен для: Token: admin, service, bti, seller, application, owner, employee. При наличии разрешений
 */
- (GRPCUnaryProtoCall *)postDeviceReplaceWithMessage:(KEYAPISTELEMETRYCONTROLV1PostDeviceReplaceRequest *)message responseHandler:(id<GRPCProtoResponseHandler>)handler callOptions:(GRPCCallOptions *_Nullable)callOptions;

#pragma mark PostDevice(PostDeviceRequest) returns (PostDeviceResponse)

/**
 * Метод сохранения прибора учета.
 * Поддерживает создание и обновление.
 * Разрешения: telemetry_control:device:save, telemetry_control:device:save:own.
 * Метод доступен для: Token: admin, service, bti, seller, application, owner, employee. При наличии разрешений
 */
- (GRPCUnaryProtoCall *)postDeviceWithMessage:(KEYAPISTELEMETRYCONTROLV1PostDeviceRequest *)message responseHandler:(id<GRPCProtoResponseHandler>)handler callOptions:(GRPCCallOptions *_Nullable)callOptions;

#pragma mark DeleteDevice(DeleteDeviceRequest) returns (DeleteDeviceResponse)

/**
 * Метод удаления прибора учета.
 * Разрешения: telemetry_control:device:remove, telemetry_control:device:remove:own.
 * Метод доступен для: Token: admin, service, bti, seller, application, owner, employee. При наличии разрешений
 */
- (GRPCUnaryProtoCall *)deleteDeviceWithMessage:(KEYAPISTELEMETRYCONTROLV1DeleteDeviceRequest *)message responseHandler:(id<GRPCProtoResponseHandler>)handler callOptions:(GRPCCallOptions *_Nullable)callOptions;

#pragma mark PostDeviceIndicator(PostDeviceIndicatorRequest) returns (PostDeviceIndicatorResponse)

/**
 * Метод сохранения индикатора.
 * Поддерживает создание и обновление.
 * Метод доступен для: Token: admin, service, bti, seller, application, owner, employee. Без учета разрешений
 */
- (GRPCUnaryProtoCall *)postDeviceIndicatorWithMessage:(KEYAPISTELEMETRYCONTROLV1PostDeviceIndicatorRequest *)message responseHandler:(id<GRPCProtoResponseHandler>)handler callOptions:(GRPCCallOptions *_Nullable)callOptions;

#pragma mark GetDeviceIndicator(GetDeviceIndicatorRequest) returns (GetDeviceIndicatorResponse)

/**
 * Метод получения индикатора.
 * Метод доступен для: Token: admin, service, bti, seller, application, owner, employee. Без учета разрешений.
 * Метод доступен для: ApiKey: При наличии разрешений
 */
- (GRPCUnaryProtoCall *)getDeviceIndicatorWithMessage:(KEYAPISTELEMETRYCONTROLV1GetDeviceIndicatorRequest *)message responseHandler:(id<GRPCProtoResponseHandler>)handler callOptions:(GRPCCallOptions *_Nullable)callOptions;

#pragma mark GetDeviceIndicatorList(GetDeviceIndicatorListRequest) returns (stream GetDeviceIndicatorListResponse)

/**
 * Метод получения списка индикаторов.
 * Метод доступен для: Token: admin, service, bti, seller, application, owner, employee. Без учета разрешений.
 * Метод доступен для: ApiKey: При наличии разрешений
 */
- (GRPCUnaryProtoCall *)getDeviceIndicatorListWithMessage:(KEYAPISTELEMETRYCONTROLV1GetDeviceIndicatorListRequest *)message responseHandler:(id<GRPCProtoResponseHandler>)handler callOptions:(GRPCCallOptions *_Nullable)callOptions;

#pragma mark GetDeviceIndicatorCount(GetDeviceIndicatorCountRequest) returns (GetDeviceIndicatorCountResponse)

/**
 * Метод получения количества индикаторов.
 * Метод доступен для: Token: admin, service, bti, seller, application, owner, employee. Без учета разрешений.
 * Метод доступен для: ApiKey: При наличии разрешений
 */
- (GRPCUnaryProtoCall *)getDeviceIndicatorCountWithMessage:(KEYAPISTELEMETRYCONTROLV1GetDeviceIndicatorCountRequest *)message responseHandler:(id<GRPCProtoResponseHandler>)handler callOptions:(GRPCCallOptions *_Nullable)callOptions;

#pragma mark DeleteDeviceIndicator(DeleteDeviceIndicatorRequest) returns (DeleteDeviceIndicatorResponse)

/**
 * Метод удаления индикаторa.
 * Метод доступен для: Token: admin, service, bti, seller, application, owner, employee. Без учета разрешений
 */
- (GRPCUnaryProtoCall *)deleteDeviceIndicatorWithMessage:(KEYAPISTELEMETRYCONTROLV1DeleteDeviceIndicatorRequest *)message responseHandler:(id<GRPCProtoResponseHandler>)handler callOptions:(GRPCCallOptions *_Nullable)callOptions;

#pragma mark GetDeviceIndicatorMetricPointList(GetDeviceIndicatorMetricPointListRequest) returns (stream GetDeviceIndicatorMetricPointListResponse)

/**
 * Метод получения списка связей индикаторов и ТУ.
 * Метод доступен для: Token: admin, service, bti, seller, application, owner, employee. Без учета разрешений.
 * Метод доступен для: ApiKey: При наличии разрешений
 */
- (GRPCUnaryProtoCall *)getDeviceIndicatorMetricPointListWithMessage:(KEYAPISTELEMETRYCONTROLV1GetDeviceIndicatorMetricPointListRequest *)message responseHandler:(id<GRPCProtoResponseHandler>)handler callOptions:(GRPCCallOptions *_Nullable)callOptions;

#pragma mark GetDeviceIndicatorMetricPointCount(GetDeviceIndicatorMetricPointCountRequest) returns (GetDeviceIndicatorMetricPointCountResponse)

/**
 * Метод получения количества связей индикаторов и ТУ.
 * Метод доступен для: Token: admin, service, bti, seller, application, owner, employee. Без учета разрешений.
 * Метод доступен для: ApiKey: При наличии разрешений
 */
- (GRPCUnaryProtoCall *)getDeviceIndicatorMetricPointCountWithMessage:(KEYAPISTELEMETRYCONTROLV1GetDeviceIndicatorMetricPointCountRequest *)message responseHandler:(id<GRPCProtoResponseHandler>)handler callOptions:(GRPCCallOptions *_Nullable)callOptions;

#pragma mark PutDeviceIndicatorMetricPointAttach(PutDeviceIndicatorMetricPointAttachRequest) returns (PutDeviceIndicatorMetricPointAttachResponse)

/**
 * Метод сохранения связи индикаторов и ТУ.
 * Поддерживает только создание связи.
 * Метод доступен для: Token: admin, service, bti, seller, application, owner, employee. Без учета разрешений
 */
- (GRPCUnaryProtoCall *)putDeviceIndicatorMetricPointAttachWithMessage:(KEYAPISTELEMETRYCONTROLV1PutDeviceIndicatorMetricPointAttachRequest *)message responseHandler:(id<GRPCProtoResponseHandler>)handler callOptions:(GRPCCallOptions *_Nullable)callOptions;

#pragma mark PutDeviceIndicatorMetricPointDetach(PutDeviceIndicatorMetricPointDetachRequest) returns (PutDeviceIndicatorMetricPointDetachResponse)

/**
 * Метод удаления связи индикаторов и ТУ.
 * Метод доступен для: Token: admin, service, bti, seller, application, owner, employee. Без учета разрешений
 */
- (GRPCUnaryProtoCall *)putDeviceIndicatorMetricPointDetachWithMessage:(KEYAPISTELEMETRYCONTROLV1PutDeviceIndicatorMetricPointDetachRequest *)message responseHandler:(id<GRPCProtoResponseHandler>)handler callOptions:(GRPCCallOptions *_Nullable)callOptions;

#pragma mark GetDeviceGroupList(GetDeviceGroupListRequest) returns (stream GetDeviceGroupListResponse)

/**
 * Метод получения списка связей ПУ и группы пользователя.
 * Метод доступен для: Token: admin, service, bti, seller. Без учета разрешений
 */
- (GRPCUnaryProtoCall *)getDeviceGroupListWithMessage:(KEYAPISTELEMETRYCONTROLV1GetDeviceGroupListRequest *)message responseHandler:(id<GRPCProtoResponseHandler>)handler callOptions:(GRPCCallOptions *_Nullable)callOptions;

#pragma mark GetDeviceGroupCount(GetDeviceGroupCountRequest) returns (GetDeviceGroupCountResponse)

/**
 * Метод получения количества связей ПУ и группы пользователя.
 * Метод доступен для: Token: admin, service, bti, seller. Без учета разрешений
 */
- (GRPCUnaryProtoCall *)getDeviceGroupCountWithMessage:(KEYAPISTELEMETRYCONTROLV1GetDeviceGroupCountRequest *)message responseHandler:(id<GRPCProtoResponseHandler>)handler callOptions:(GRPCCallOptions *_Nullable)callOptions;

#pragma mark PutDeviceGroupAttach(PutDeviceGroupAttachRequest) returns (PutDeviceGroupAttachResponse)

/**
 * Метод сохранения связей ПУ и группы пользователя.
 * Поддерживает только создание.
 * Метод доступен для: Token: admin, service, bti, seller. Без учета разрешений
 */
- (GRPCUnaryProtoCall *)putDeviceGroupAttachWithMessage:(KEYAPISTELEMETRYCONTROLV1PutDeviceGroupAttachRequest *)message responseHandler:(id<GRPCProtoResponseHandler>)handler callOptions:(GRPCCallOptions *_Nullable)callOptions;

#pragma mark PutDeviceGroupDetach(PutDeviceGroupDetachRequest) returns (PutDeviceGroupDetachResponse)

/**
 * Метод удаления связей ПУ и группы пользователя.
 * Метод доступен для: Token: admin, service, bti, seller. Без учета разрешений
 */
- (GRPCUnaryProtoCall *)putDeviceGroupDetachWithMessage:(KEYAPISTELEMETRYCONTROLV1PutDeviceGroupDetachRequest *)message responseHandler:(id<GRPCProtoResponseHandler>)handler callOptions:(GRPCCallOptions *_Nullable)callOptions;

@end

/**
 * The methods in this protocol belong to a set of old APIs that have been deprecated. They do not
 * recognize call options provided in the initializer. Using the v2 protocol is recommended.
 */
@protocol KEYAPISTELEMETRYCONTROLV1DeviceService <NSObject>

#pragma mark PostDeviceFullDuplex(stream PostDeviceFullDuplexRequest) returns (stream PostDeviceFullDuplexResponse)

/**
 * Полнодуплексный метод отправки команд на сервер и получения изменения со стороны сервера.
 * Разрешения: telemetry_control:device:list, telemetry_control:device:list:own.
 * Метод доступен для: Token: admin, service, bti, seller, application, owner, employee. При наличии разрешений.
 * Метод доступен для: ApiKey: Без учета разрешений
 *
 * This method belongs to a set of APIs that have been deprecated. Using the v2 API is recommended.
 */
- (void)postDeviceFullDuplexWithRequestsWriter:(GRXWriter *)requestWriter eventHandler:(void(^)(BOOL done, KEYAPISTELEMETRYCONTROLV1PostDeviceFullDuplexResponse *_Nullable response, NSError *_Nullable error))eventHandler;

/**
 * Полнодуплексный метод отправки команд на сервер и получения изменения со стороны сервера.
 * Разрешения: telemetry_control:device:list, telemetry_control:device:list:own.
 * Метод доступен для: Token: admin, service, bti, seller, application, owner, employee. При наличии разрешений.
 * Метод доступен для: ApiKey: Без учета разрешений
 *
 * This method belongs to a set of APIs that have been deprecated. Using the v2 API is recommended.
 */
- (GRPCProtoCall *)RPCToPostDeviceFullDuplexWithRequestsWriter:(GRXWriter *)requestWriter eventHandler:(void(^)(BOOL done, KEYAPISTELEMETRYCONTROLV1PostDeviceFullDuplexResponse *_Nullable response, NSError *_Nullable error))eventHandler;


#pragma mark GetDevice(GetDeviceRequest) returns (GetDeviceResponse)

/**
 * Метод получения ПУ.
 * Разрешения: telemetry_control:device:card, telemetry_control:device:card:own.
 * Метод доступен для: Token: admin, service, bti, seller, application, owner, employee, master. При наличии разрешений.
 * Метод доступен для: ApiKey: При наличии разрешений
 *
 * This method belongs to a set of APIs that have been deprecated. Using the v2 API is recommended.
 */
- (void)getDeviceWithRequest:(KEYAPISTELEMETRYCONTROLV1GetDeviceRequest *)request handler:(void(^)(KEYAPISTELEMETRYCONTROLV1GetDeviceResponse *_Nullable response, NSError *_Nullable error))handler;

/**
 * Метод получения ПУ.
 * Разрешения: telemetry_control:device:card, telemetry_control:device:card:own.
 * Метод доступен для: Token: admin, service, bti, seller, application, owner, employee, master. При наличии разрешений.
 * Метод доступен для: ApiKey: При наличии разрешений
 *
 * This method belongs to a set of APIs that have been deprecated. Using the v2 API is recommended.
 */
- (GRPCProtoCall *)RPCToGetDeviceWithRequest:(KEYAPISTELEMETRYCONTROLV1GetDeviceRequest *)request handler:(void(^)(KEYAPISTELEMETRYCONTROLV1GetDeviceResponse *_Nullable response, NSError *_Nullable error))handler;


#pragma mark GetDeviceList(GetDeviceListRequest) returns (stream GetDeviceListResponse)

/**
 * Метод получения списка приборов учета.
 * Разрешения: telemetry_control:device:list, telemetry_control:device:list:own.
 * Метод доступен для: Token: admin, service, bti, seller, application, owner, employee, master. При наличии разрешений.
 * Метод доступен для: ApiKey: При наличии разрешений
 *
 * This method belongs to a set of APIs that have been deprecated. Using the v2 API is recommended.
 */
- (void)getDeviceListWithRequest:(KEYAPISTELEMETRYCONTROLV1GetDeviceListRequest *)request eventHandler:(void(^)(BOOL done, KEYAPISTELEMETRYCONTROLV1GetDeviceListResponse *_Nullable response, NSError *_Nullable error))eventHandler;

/**
 * Метод получения списка приборов учета.
 * Разрешения: telemetry_control:device:list, telemetry_control:device:list:own.
 * Метод доступен для: Token: admin, service, bti, seller, application, owner, employee, master. При наличии разрешений.
 * Метод доступен для: ApiKey: При наличии разрешений
 *
 * This method belongs to a set of APIs that have been deprecated. Using the v2 API is recommended.
 */
- (GRPCProtoCall *)RPCToGetDeviceListWithRequest:(KEYAPISTELEMETRYCONTROLV1GetDeviceListRequest *)request eventHandler:(void(^)(BOOL done, KEYAPISTELEMETRYCONTROLV1GetDeviceListResponse *_Nullable response, NSError *_Nullable error))eventHandler;


#pragma mark GetDeviceCount(GetDeviceCountRequest) returns (GetDeviceCountResponse)

/**
 * Метод получения количества приборов учета.
 * Разрешения: telemetry_control:device:list, telemetry_control:device:list:own.
 * Метод доступен для: Token: admin, service, bti, seller, application, owner, employee, master. При наличии разрешений.
 * Метод доступен для: ApiKey: При наличии разрешений
 *
 * This method belongs to a set of APIs that have been deprecated. Using the v2 API is recommended.
 */
- (void)getDeviceCountWithRequest:(KEYAPISTELEMETRYCONTROLV1GetDeviceCountRequest *)request handler:(void(^)(KEYAPISTELEMETRYCONTROLV1GetDeviceCountResponse *_Nullable response, NSError *_Nullable error))handler;

/**
 * Метод получения количества приборов учета.
 * Разрешения: telemetry_control:device:list, telemetry_control:device:list:own.
 * Метод доступен для: Token: admin, service, bti, seller, application, owner, employee, master. При наличии разрешений.
 * Метод доступен для: ApiKey: При наличии разрешений
 *
 * This method belongs to a set of APIs that have been deprecated. Using the v2 API is recommended.
 */
- (GRPCProtoCall *)RPCToGetDeviceCountWithRequest:(KEYAPISTELEMETRYCONTROLV1GetDeviceCountRequest *)request handler:(void(^)(KEYAPISTELEMETRYCONTROLV1GetDeviceCountResponse *_Nullable response, NSError *_Nullable error))handler;


#pragma mark PostDeviceReplace(PostDeviceReplaceRequest) returns (PostDeviceReplaceResponse)

/**
 * Метод замены прибора учета.
 * Создает ПУ и привязывает его индикаторы к ТУ исходного ПУ.
 * Разрешения: telemetry_control:device:save, telemetry_control:device:save:own.
 * Метод доступен для: Token: admin, service, bti, seller, application, owner, employee. При наличии разрешений
 *
 * This method belongs to a set of APIs that have been deprecated. Using the v2 API is recommended.
 */
- (void)postDeviceReplaceWithRequest:(KEYAPISTELEMETRYCONTROLV1PostDeviceReplaceRequest *)request handler:(void(^)(KEYAPISTELEMETRYCONTROLV1PostDeviceReplaceResponse *_Nullable response, NSError *_Nullable error))handler;

/**
 * Метод замены прибора учета.
 * Создает ПУ и привязывает его индикаторы к ТУ исходного ПУ.
 * Разрешения: telemetry_control:device:save, telemetry_control:device:save:own.
 * Метод доступен для: Token: admin, service, bti, seller, application, owner, employee. При наличии разрешений
 *
 * This method belongs to a set of APIs that have been deprecated. Using the v2 API is recommended.
 */
- (GRPCProtoCall *)RPCToPostDeviceReplaceWithRequest:(KEYAPISTELEMETRYCONTROLV1PostDeviceReplaceRequest *)request handler:(void(^)(KEYAPISTELEMETRYCONTROLV1PostDeviceReplaceResponse *_Nullable response, NSError *_Nullable error))handler;


#pragma mark PostDevice(PostDeviceRequest) returns (PostDeviceResponse)

/**
 * Метод сохранения прибора учета.
 * Поддерживает создание и обновление.
 * Разрешения: telemetry_control:device:save, telemetry_control:device:save:own.
 * Метод доступен для: Token: admin, service, bti, seller, application, owner, employee. При наличии разрешений
 *
 * This method belongs to a set of APIs that have been deprecated. Using the v2 API is recommended.
 */
- (void)postDeviceWithRequest:(KEYAPISTELEMETRYCONTROLV1PostDeviceRequest *)request handler:(void(^)(KEYAPISTELEMETRYCONTROLV1PostDeviceResponse *_Nullable response, NSError *_Nullable error))handler;

/**
 * Метод сохранения прибора учета.
 * Поддерживает создание и обновление.
 * Разрешения: telemetry_control:device:save, telemetry_control:device:save:own.
 * Метод доступен для: Token: admin, service, bti, seller, application, owner, employee. При наличии разрешений
 *
 * This method belongs to a set of APIs that have been deprecated. Using the v2 API is recommended.
 */
- (GRPCProtoCall *)RPCToPostDeviceWithRequest:(KEYAPISTELEMETRYCONTROLV1PostDeviceRequest *)request handler:(void(^)(KEYAPISTELEMETRYCONTROLV1PostDeviceResponse *_Nullable response, NSError *_Nullable error))handler;


#pragma mark DeleteDevice(DeleteDeviceRequest) returns (DeleteDeviceResponse)

/**
 * Метод удаления прибора учета.
 * Разрешения: telemetry_control:device:remove, telemetry_control:device:remove:own.
 * Метод доступен для: Token: admin, service, bti, seller, application, owner, employee. При наличии разрешений
 *
 * This method belongs to a set of APIs that have been deprecated. Using the v2 API is recommended.
 */
- (void)deleteDeviceWithRequest:(KEYAPISTELEMETRYCONTROLV1DeleteDeviceRequest *)request handler:(void(^)(KEYAPISTELEMETRYCONTROLV1DeleteDeviceResponse *_Nullable response, NSError *_Nullable error))handler;

/**
 * Метод удаления прибора учета.
 * Разрешения: telemetry_control:device:remove, telemetry_control:device:remove:own.
 * Метод доступен для: Token: admin, service, bti, seller, application, owner, employee. При наличии разрешений
 *
 * This method belongs to a set of APIs that have been deprecated. Using the v2 API is recommended.
 */
- (GRPCProtoCall *)RPCToDeleteDeviceWithRequest:(KEYAPISTELEMETRYCONTROLV1DeleteDeviceRequest *)request handler:(void(^)(KEYAPISTELEMETRYCONTROLV1DeleteDeviceResponse *_Nullable response, NSError *_Nullable error))handler;


#pragma mark PostDeviceIndicator(PostDeviceIndicatorRequest) returns (PostDeviceIndicatorResponse)

/**
 * Метод сохранения индикатора.
 * Поддерживает создание и обновление.
 * Метод доступен для: Token: admin, service, bti, seller, application, owner, employee. Без учета разрешений
 *
 * This method belongs to a set of APIs that have been deprecated. Using the v2 API is recommended.
 */
- (void)postDeviceIndicatorWithRequest:(KEYAPISTELEMETRYCONTROLV1PostDeviceIndicatorRequest *)request handler:(void(^)(KEYAPISTELEMETRYCONTROLV1PostDeviceIndicatorResponse *_Nullable response, NSError *_Nullable error))handler;

/**
 * Метод сохранения индикатора.
 * Поддерживает создание и обновление.
 * Метод доступен для: Token: admin, service, bti, seller, application, owner, employee. Без учета разрешений
 *
 * This method belongs to a set of APIs that have been deprecated. Using the v2 API is recommended.
 */
- (GRPCProtoCall *)RPCToPostDeviceIndicatorWithRequest:(KEYAPISTELEMETRYCONTROLV1PostDeviceIndicatorRequest *)request handler:(void(^)(KEYAPISTELEMETRYCONTROLV1PostDeviceIndicatorResponse *_Nullable response, NSError *_Nullable error))handler;


#pragma mark GetDeviceIndicator(GetDeviceIndicatorRequest) returns (GetDeviceIndicatorResponse)

/**
 * Метод получения индикатора.
 * Метод доступен для: Token: admin, service, bti, seller, application, owner, employee. Без учета разрешений.
 * Метод доступен для: ApiKey: При наличии разрешений
 *
 * This method belongs to a set of APIs that have been deprecated. Using the v2 API is recommended.
 */
- (void)getDeviceIndicatorWithRequest:(KEYAPISTELEMETRYCONTROLV1GetDeviceIndicatorRequest *)request handler:(void(^)(KEYAPISTELEMETRYCONTROLV1GetDeviceIndicatorResponse *_Nullable response, NSError *_Nullable error))handler;

/**
 * Метод получения индикатора.
 * Метод доступен для: Token: admin, service, bti, seller, application, owner, employee. Без учета разрешений.
 * Метод доступен для: ApiKey: При наличии разрешений
 *
 * This method belongs to a set of APIs that have been deprecated. Using the v2 API is recommended.
 */
- (GRPCProtoCall *)RPCToGetDeviceIndicatorWithRequest:(KEYAPISTELEMETRYCONTROLV1GetDeviceIndicatorRequest *)request handler:(void(^)(KEYAPISTELEMETRYCONTROLV1GetDeviceIndicatorResponse *_Nullable response, NSError *_Nullable error))handler;


#pragma mark GetDeviceIndicatorList(GetDeviceIndicatorListRequest) returns (stream GetDeviceIndicatorListResponse)

/**
 * Метод получения списка индикаторов.
 * Метод доступен для: Token: admin, service, bti, seller, application, owner, employee. Без учета разрешений.
 * Метод доступен для: ApiKey: При наличии разрешений
 *
 * This method belongs to a set of APIs that have been deprecated. Using the v2 API is recommended.
 */
- (void)getDeviceIndicatorListWithRequest:(KEYAPISTELEMETRYCONTROLV1GetDeviceIndicatorListRequest *)request eventHandler:(void(^)(BOOL done, KEYAPISTELEMETRYCONTROLV1GetDeviceIndicatorListResponse *_Nullable response, NSError *_Nullable error))eventHandler;

/**
 * Метод получения списка индикаторов.
 * Метод доступен для: Token: admin, service, bti, seller, application, owner, employee. Без учета разрешений.
 * Метод доступен для: ApiKey: При наличии разрешений
 *
 * This method belongs to a set of APIs that have been deprecated. Using the v2 API is recommended.
 */
- (GRPCProtoCall *)RPCToGetDeviceIndicatorListWithRequest:(KEYAPISTELEMETRYCONTROLV1GetDeviceIndicatorListRequest *)request eventHandler:(void(^)(BOOL done, KEYAPISTELEMETRYCONTROLV1GetDeviceIndicatorListResponse *_Nullable response, NSError *_Nullable error))eventHandler;


#pragma mark GetDeviceIndicatorCount(GetDeviceIndicatorCountRequest) returns (GetDeviceIndicatorCountResponse)

/**
 * Метод получения количества индикаторов.
 * Метод доступен для: Token: admin, service, bti, seller, application, owner, employee. Без учета разрешений.
 * Метод доступен для: ApiKey: При наличии разрешений
 *
 * This method belongs to a set of APIs that have been deprecated. Using the v2 API is recommended.
 */
- (void)getDeviceIndicatorCountWithRequest:(KEYAPISTELEMETRYCONTROLV1GetDeviceIndicatorCountRequest *)request handler:(void(^)(KEYAPISTELEMETRYCONTROLV1GetDeviceIndicatorCountResponse *_Nullable response, NSError *_Nullable error))handler;

/**
 * Метод получения количества индикаторов.
 * Метод доступен для: Token: admin, service, bti, seller, application, owner, employee. Без учета разрешений.
 * Метод доступен для: ApiKey: При наличии разрешений
 *
 * This method belongs to a set of APIs that have been deprecated. Using the v2 API is recommended.
 */
- (GRPCProtoCall *)RPCToGetDeviceIndicatorCountWithRequest:(KEYAPISTELEMETRYCONTROLV1GetDeviceIndicatorCountRequest *)request handler:(void(^)(KEYAPISTELEMETRYCONTROLV1GetDeviceIndicatorCountResponse *_Nullable response, NSError *_Nullable error))handler;


#pragma mark DeleteDeviceIndicator(DeleteDeviceIndicatorRequest) returns (DeleteDeviceIndicatorResponse)

/**
 * Метод удаления индикаторa.
 * Метод доступен для: Token: admin, service, bti, seller, application, owner, employee. Без учета разрешений
 *
 * This method belongs to a set of APIs that have been deprecated. Using the v2 API is recommended.
 */
- (void)deleteDeviceIndicatorWithRequest:(KEYAPISTELEMETRYCONTROLV1DeleteDeviceIndicatorRequest *)request handler:(void(^)(KEYAPISTELEMETRYCONTROLV1DeleteDeviceIndicatorResponse *_Nullable response, NSError *_Nullable error))handler;

/**
 * Метод удаления индикаторa.
 * Метод доступен для: Token: admin, service, bti, seller, application, owner, employee. Без учета разрешений
 *
 * This method belongs to a set of APIs that have been deprecated. Using the v2 API is recommended.
 */
- (GRPCProtoCall *)RPCToDeleteDeviceIndicatorWithRequest:(KEYAPISTELEMETRYCONTROLV1DeleteDeviceIndicatorRequest *)request handler:(void(^)(KEYAPISTELEMETRYCONTROLV1DeleteDeviceIndicatorResponse *_Nullable response, NSError *_Nullable error))handler;


#pragma mark GetDeviceIndicatorMetricPointList(GetDeviceIndicatorMetricPointListRequest) returns (stream GetDeviceIndicatorMetricPointListResponse)

/**
 * Метод получения списка связей индикаторов и ТУ.
 * Метод доступен для: Token: admin, service, bti, seller, application, owner, employee. Без учета разрешений.
 * Метод доступен для: ApiKey: При наличии разрешений
 *
 * This method belongs to a set of APIs that have been deprecated. Using the v2 API is recommended.
 */
- (void)getDeviceIndicatorMetricPointListWithRequest:(KEYAPISTELEMETRYCONTROLV1GetDeviceIndicatorMetricPointListRequest *)request eventHandler:(void(^)(BOOL done, KEYAPISTELEMETRYCONTROLV1GetDeviceIndicatorMetricPointListResponse *_Nullable response, NSError *_Nullable error))eventHandler;

/**
 * Метод получения списка связей индикаторов и ТУ.
 * Метод доступен для: Token: admin, service, bti, seller, application, owner, employee. Без учета разрешений.
 * Метод доступен для: ApiKey: При наличии разрешений
 *
 * This method belongs to a set of APIs that have been deprecated. Using the v2 API is recommended.
 */
- (GRPCProtoCall *)RPCToGetDeviceIndicatorMetricPointListWithRequest:(KEYAPISTELEMETRYCONTROLV1GetDeviceIndicatorMetricPointListRequest *)request eventHandler:(void(^)(BOOL done, KEYAPISTELEMETRYCONTROLV1GetDeviceIndicatorMetricPointListResponse *_Nullable response, NSError *_Nullable error))eventHandler;


#pragma mark GetDeviceIndicatorMetricPointCount(GetDeviceIndicatorMetricPointCountRequest) returns (GetDeviceIndicatorMetricPointCountResponse)

/**
 * Метод получения количества связей индикаторов и ТУ.
 * Метод доступен для: Token: admin, service, bti, seller, application, owner, employee. Без учета разрешений.
 * Метод доступен для: ApiKey: При наличии разрешений
 *
 * This method belongs to a set of APIs that have been deprecated. Using the v2 API is recommended.
 */
- (void)getDeviceIndicatorMetricPointCountWithRequest:(KEYAPISTELEMETRYCONTROLV1GetDeviceIndicatorMetricPointCountRequest *)request handler:(void(^)(KEYAPISTELEMETRYCONTROLV1GetDeviceIndicatorMetricPointCountResponse *_Nullable response, NSError *_Nullable error))handler;

/**
 * Метод получения количества связей индикаторов и ТУ.
 * Метод доступен для: Token: admin, service, bti, seller, application, owner, employee. Без учета разрешений.
 * Метод доступен для: ApiKey: При наличии разрешений
 *
 * This method belongs to a set of APIs that have been deprecated. Using the v2 API is recommended.
 */
- (GRPCProtoCall *)RPCToGetDeviceIndicatorMetricPointCountWithRequest:(KEYAPISTELEMETRYCONTROLV1GetDeviceIndicatorMetricPointCountRequest *)request handler:(void(^)(KEYAPISTELEMETRYCONTROLV1GetDeviceIndicatorMetricPointCountResponse *_Nullable response, NSError *_Nullable error))handler;


#pragma mark PutDeviceIndicatorMetricPointAttach(PutDeviceIndicatorMetricPointAttachRequest) returns (PutDeviceIndicatorMetricPointAttachResponse)

/**
 * Метод сохранения связи индикаторов и ТУ.
 * Поддерживает только создание связи.
 * Метод доступен для: Token: admin, service, bti, seller, application, owner, employee. Без учета разрешений
 *
 * This method belongs to a set of APIs that have been deprecated. Using the v2 API is recommended.
 */
- (void)putDeviceIndicatorMetricPointAttachWithRequest:(KEYAPISTELEMETRYCONTROLV1PutDeviceIndicatorMetricPointAttachRequest *)request handler:(void(^)(KEYAPISTELEMETRYCONTROLV1PutDeviceIndicatorMetricPointAttachResponse *_Nullable response, NSError *_Nullable error))handler;

/**
 * Метод сохранения связи индикаторов и ТУ.
 * Поддерживает только создание связи.
 * Метод доступен для: Token: admin, service, bti, seller, application, owner, employee. Без учета разрешений
 *
 * This method belongs to a set of APIs that have been deprecated. Using the v2 API is recommended.
 */
- (GRPCProtoCall *)RPCToPutDeviceIndicatorMetricPointAttachWithRequest:(KEYAPISTELEMETRYCONTROLV1PutDeviceIndicatorMetricPointAttachRequest *)request handler:(void(^)(KEYAPISTELEMETRYCONTROLV1PutDeviceIndicatorMetricPointAttachResponse *_Nullable response, NSError *_Nullable error))handler;


#pragma mark PutDeviceIndicatorMetricPointDetach(PutDeviceIndicatorMetricPointDetachRequest) returns (PutDeviceIndicatorMetricPointDetachResponse)

/**
 * Метод удаления связи индикаторов и ТУ.
 * Метод доступен для: Token: admin, service, bti, seller, application, owner, employee. Без учета разрешений
 *
 * This method belongs to a set of APIs that have been deprecated. Using the v2 API is recommended.
 */
- (void)putDeviceIndicatorMetricPointDetachWithRequest:(KEYAPISTELEMETRYCONTROLV1PutDeviceIndicatorMetricPointDetachRequest *)request handler:(void(^)(KEYAPISTELEMETRYCONTROLV1PutDeviceIndicatorMetricPointDetachResponse *_Nullable response, NSError *_Nullable error))handler;

/**
 * Метод удаления связи индикаторов и ТУ.
 * Метод доступен для: Token: admin, service, bti, seller, application, owner, employee. Без учета разрешений
 *
 * This method belongs to a set of APIs that have been deprecated. Using the v2 API is recommended.
 */
- (GRPCProtoCall *)RPCToPutDeviceIndicatorMetricPointDetachWithRequest:(KEYAPISTELEMETRYCONTROLV1PutDeviceIndicatorMetricPointDetachRequest *)request handler:(void(^)(KEYAPISTELEMETRYCONTROLV1PutDeviceIndicatorMetricPointDetachResponse *_Nullable response, NSError *_Nullable error))handler;


#pragma mark GetDeviceGroupList(GetDeviceGroupListRequest) returns (stream GetDeviceGroupListResponse)

/**
 * Метод получения списка связей ПУ и группы пользователя.
 * Метод доступен для: Token: admin, service, bti, seller. Без учета разрешений
 *
 * This method belongs to a set of APIs that have been deprecated. Using the v2 API is recommended.
 */
- (void)getDeviceGroupListWithRequest:(KEYAPISTELEMETRYCONTROLV1GetDeviceGroupListRequest *)request eventHandler:(void(^)(BOOL done, KEYAPISTELEMETRYCONTROLV1GetDeviceGroupListResponse *_Nullable response, NSError *_Nullable error))eventHandler;

/**
 * Метод получения списка связей ПУ и группы пользователя.
 * Метод доступен для: Token: admin, service, bti, seller. Без учета разрешений
 *
 * This method belongs to a set of APIs that have been deprecated. Using the v2 API is recommended.
 */
- (GRPCProtoCall *)RPCToGetDeviceGroupListWithRequest:(KEYAPISTELEMETRYCONTROLV1GetDeviceGroupListRequest *)request eventHandler:(void(^)(BOOL done, KEYAPISTELEMETRYCONTROLV1GetDeviceGroupListResponse *_Nullable response, NSError *_Nullable error))eventHandler;


#pragma mark GetDeviceGroupCount(GetDeviceGroupCountRequest) returns (GetDeviceGroupCountResponse)

/**
 * Метод получения количества связей ПУ и группы пользователя.
 * Метод доступен для: Token: admin, service, bti, seller. Без учета разрешений
 *
 * This method belongs to a set of APIs that have been deprecated. Using the v2 API is recommended.
 */
- (void)getDeviceGroupCountWithRequest:(KEYAPISTELEMETRYCONTROLV1GetDeviceGroupCountRequest *)request handler:(void(^)(KEYAPISTELEMETRYCONTROLV1GetDeviceGroupCountResponse *_Nullable response, NSError *_Nullable error))handler;

/**
 * Метод получения количества связей ПУ и группы пользователя.
 * Метод доступен для: Token: admin, service, bti, seller. Без учета разрешений
 *
 * This method belongs to a set of APIs that have been deprecated. Using the v2 API is recommended.
 */
- (GRPCProtoCall *)RPCToGetDeviceGroupCountWithRequest:(KEYAPISTELEMETRYCONTROLV1GetDeviceGroupCountRequest *)request handler:(void(^)(KEYAPISTELEMETRYCONTROLV1GetDeviceGroupCountResponse *_Nullable response, NSError *_Nullable error))handler;


#pragma mark PutDeviceGroupAttach(PutDeviceGroupAttachRequest) returns (PutDeviceGroupAttachResponse)

/**
 * Метод сохранения связей ПУ и группы пользователя.
 * Поддерживает только создание.
 * Метод доступен для: Token: admin, service, bti, seller. Без учета разрешений
 *
 * This method belongs to a set of APIs that have been deprecated. Using the v2 API is recommended.
 */
- (void)putDeviceGroupAttachWithRequest:(KEYAPISTELEMETRYCONTROLV1PutDeviceGroupAttachRequest *)request handler:(void(^)(KEYAPISTELEMETRYCONTROLV1PutDeviceGroupAttachResponse *_Nullable response, NSError *_Nullable error))handler;

/**
 * Метод сохранения связей ПУ и группы пользователя.
 * Поддерживает только создание.
 * Метод доступен для: Token: admin, service, bti, seller. Без учета разрешений
 *
 * This method belongs to a set of APIs that have been deprecated. Using the v2 API is recommended.
 */
- (GRPCProtoCall *)RPCToPutDeviceGroupAttachWithRequest:(KEYAPISTELEMETRYCONTROLV1PutDeviceGroupAttachRequest *)request handler:(void(^)(KEYAPISTELEMETRYCONTROLV1PutDeviceGroupAttachResponse *_Nullable response, NSError *_Nullable error))handler;


#pragma mark PutDeviceGroupDetach(PutDeviceGroupDetachRequest) returns (PutDeviceGroupDetachResponse)

/**
 * Метод удаления связей ПУ и группы пользователя.
 * Метод доступен для: Token: admin, service, bti, seller. Без учета разрешений
 *
 * This method belongs to a set of APIs that have been deprecated. Using the v2 API is recommended.
 */
- (void)putDeviceGroupDetachWithRequest:(KEYAPISTELEMETRYCONTROLV1PutDeviceGroupDetachRequest *)request handler:(void(^)(KEYAPISTELEMETRYCONTROLV1PutDeviceGroupDetachResponse *_Nullable response, NSError *_Nullable error))handler;

/**
 * Метод удаления связей ПУ и группы пользователя.
 * Метод доступен для: Token: admin, service, bti, seller. Без учета разрешений
 *
 * This method belongs to a set of APIs that have been deprecated. Using the v2 API is recommended.
 */
- (GRPCProtoCall *)RPCToPutDeviceGroupDetachWithRequest:(KEYAPISTELEMETRYCONTROLV1PutDeviceGroupDetachRequest *)request handler:(void(^)(KEYAPISTELEMETRYCONTROLV1PutDeviceGroupDetachResponse *_Nullable response, NSError *_Nullable error))handler;


@end


#if !defined(GPB_GRPC_PROTOCOL_ONLY) || !GPB_GRPC_PROTOCOL_ONLY
/**
 * Basic service implementation, over gRPC, that only does
 * marshalling and parsing.
 */
@interface KEYAPISTELEMETRYCONTROLV1DeviceService : GRPCProtoService<KEYAPISTELEMETRYCONTROLV1DeviceService2, KEYAPISTELEMETRYCONTROLV1DeviceService>
- (instancetype)initWithHost:(NSString *)host callOptions:(GRPCCallOptions *_Nullable)callOptions NS_DESIGNATED_INITIALIZER;
+ (instancetype)serviceWithHost:(NSString *)host callOptions:(GRPCCallOptions *_Nullable)callOptions;
// The following methods belong to a set of old APIs that have been deprecated.
- (instancetype)initWithHost:(NSString *)host;
+ (instancetype)serviceWithHost:(NSString *)host;
@end
#endif

NS_ASSUME_NONNULL_END

