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

#if !defined(GPB_GRPC_PROTOCOL_ONLY) || !GPB_GRPC_PROTOCOL_ONLY
#import "keyapis/telemetry_control/v1/KeyapisTelemetryControlDeviceV1.pbrpc.h"
#import "keyapis/telemetry_control/v1/KeyapisTelemetryControlDeviceV1.pbobjc.h"
#import <ProtoRPC/ProtoRPCLegacy.h>
#import <RxLibrary/GRXWriter+Immediate.h>

#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"

@implementation KEYAPISTELEMETRYCONTROLV1DeviceService

#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wobjc-designated-initializers"

// Designated initializer
- (instancetype)initWithHost:(NSString *)host callOptions:(GRPCCallOptions *_Nullable)callOptions {
  return [super initWithHost:host
                 packageName:@"keyapis.telemetry_control.v1"
                 serviceName:@"DeviceService"
                 callOptions:callOptions];
}

- (instancetype)initWithHost:(NSString *)host {
  return [super initWithHost:host
                 packageName:@"keyapis.telemetry_control.v1"
                 serviceName:@"DeviceService"];
}

#pragma clang diagnostic pop

// Override superclass initializer to disallow different package and service names.
- (instancetype)initWithHost:(NSString *)host
                 packageName:(NSString *)packageName
                 serviceName:(NSString *)serviceName {
  return [self initWithHost:host];
}

- (instancetype)initWithHost:(NSString *)host
                 packageName:(NSString *)packageName
                 serviceName:(NSString *)serviceName
                 callOptions:(GRPCCallOptions *)callOptions {
  return [self initWithHost:host callOptions:callOptions];
}

#pragma mark - Class Methods

+ (instancetype)serviceWithHost:(NSString *)host {
  return [[self alloc] initWithHost:host];
}

+ (instancetype)serviceWithHost:(NSString *)host callOptions:(GRPCCallOptions *_Nullable)callOptions {
  return [[self alloc] initWithHost:host callOptions:callOptions];
}

#pragma mark - Method Implementations

#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{
  [[self RPCToPostDeviceFullDuplexWithRequestsWriter:requestWriter eventHandler:eventHandler] start];
}
// Returns a not-yet-started RPC object.
/**
 * Полнодуплексный метод отправки команд на сервер и получения изменения со стороны сервера.
 * Разрешения: 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{
  return [self RPCToMethod:@"PostDeviceFullDuplex"
            requestsWriter:requestWriter
             responseClass:[KEYAPISTELEMETRYCONTROLV1PostDeviceFullDuplexResponse class]
        responsesWriteable:[GRXWriteable writeableWithEventHandler:eventHandler]];
}
/**
 * Полнодуплексный метод отправки команд на сервер и получения изменения со стороны сервера.
 * Разрешения: 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 {
  return [self RPCToMethod:@"PostDeviceFullDuplex"
           responseHandler:handler
               callOptions:callOptions
             responseClass:[KEYAPISTELEMETRYCONTROLV1PostDeviceFullDuplexResponse class]];
}

#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{
  [[self RPCToGetDeviceWithRequest:request handler:handler] start];
}
// Returns a not-yet-started RPC object.
/**
 * Метод получения ПУ.
 * Разрешения: 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{
  return [self RPCToMethod:@"GetDevice"
            requestsWriter:[GRXWriter writerWithValue:request]
             responseClass:[KEYAPISTELEMETRYCONTROLV1GetDeviceResponse class]
        responsesWriteable:[GRXWriteable writeableWithSingleHandler:handler]];
}
/**
 * Метод получения ПУ.
 * Разрешения: 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 {
  return [self RPCToMethod:@"GetDevice"
                   message:message
           responseHandler:handler
               callOptions:callOptions
             responseClass:[KEYAPISTELEMETRYCONTROLV1GetDeviceResponse class]];
}

#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{
  [[self RPCToGetDeviceListWithRequest:request eventHandler:eventHandler] start];
}
// Returns a not-yet-started RPC object.
/**
 * Метод получения списка приборов учета.
 * Разрешения: 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{
  return [self RPCToMethod:@"GetDeviceList"
            requestsWriter:[GRXWriter writerWithValue:request]
             responseClass:[KEYAPISTELEMETRYCONTROLV1GetDeviceListResponse class]
        responsesWriteable:[GRXWriteable writeableWithEventHandler:eventHandler]];
}
/**
 * Метод получения списка приборов учета.
 * Разрешения: 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 {
  return [self RPCToMethod:@"GetDeviceList"
                   message:message
           responseHandler:handler
               callOptions:callOptions
             responseClass:[KEYAPISTELEMETRYCONTROLV1GetDeviceListResponse class]];
}

#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{
  [[self RPCToGetDeviceCountWithRequest:request handler:handler] start];
}
// Returns a not-yet-started RPC object.
/**
 * Метод получения количества приборов учета.
 * Разрешения: 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{
  return [self RPCToMethod:@"GetDeviceCount"
            requestsWriter:[GRXWriter writerWithValue:request]
             responseClass:[KEYAPISTELEMETRYCONTROLV1GetDeviceCountResponse class]
        responsesWriteable:[GRXWriteable writeableWithSingleHandler:handler]];
}
/**
 * Метод получения количества приборов учета.
 * Разрешения: 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 {
  return [self RPCToMethod:@"GetDeviceCount"
                   message:message
           responseHandler:handler
               callOptions:callOptions
             responseClass:[KEYAPISTELEMETRYCONTROLV1GetDeviceCountResponse class]];
}

#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{
  [[self RPCToPostDeviceReplaceWithRequest:request handler:handler] start];
}
// Returns a not-yet-started RPC object.
/**
 * Метод замены прибора учета.
 * Создает ПУ и привязывает его индикаторы к ТУ исходного ПУ.
 * Разрешения: 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{
  return [self RPCToMethod:@"PostDeviceReplace"
            requestsWriter:[GRXWriter writerWithValue:request]
             responseClass:[KEYAPISTELEMETRYCONTROLV1PostDeviceReplaceResponse class]
        responsesWriteable:[GRXWriteable writeableWithSingleHandler:handler]];
}
/**
 * Метод замены прибора учета.
 * Создает ПУ и привязывает его индикаторы к ТУ исходного ПУ.
 * Разрешения: 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 {
  return [self RPCToMethod:@"PostDeviceReplace"
                   message:message
           responseHandler:handler
               callOptions:callOptions
             responseClass:[KEYAPISTELEMETRYCONTROLV1PostDeviceReplaceResponse class]];
}

#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{
  [[self RPCToPostDeviceWithRequest:request handler:handler] start];
}
// Returns a not-yet-started RPC object.
/**
 * Метод сохранения прибора учета.
 * Поддерживает создание и обновление.
 * Разрешения: 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{
  return [self RPCToMethod:@"PostDevice"
            requestsWriter:[GRXWriter writerWithValue:request]
             responseClass:[KEYAPISTELEMETRYCONTROLV1PostDeviceResponse class]
        responsesWriteable:[GRXWriteable writeableWithSingleHandler:handler]];
}
/**
 * Метод сохранения прибора учета.
 * Поддерживает создание и обновление.
 * Разрешения: 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 {
  return [self RPCToMethod:@"PostDevice"
                   message:message
           responseHandler:handler
               callOptions:callOptions
             responseClass:[KEYAPISTELEMETRYCONTROLV1PostDeviceResponse class]];
}

#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{
  [[self RPCToDeleteDeviceWithRequest:request handler:handler] start];
}
// Returns a not-yet-started RPC object.
/**
 * Метод удаления прибора учета.
 * Разрешения: 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{
  return [self RPCToMethod:@"DeleteDevice"
            requestsWriter:[GRXWriter writerWithValue:request]
             responseClass:[KEYAPISTELEMETRYCONTROLV1DeleteDeviceResponse class]
        responsesWriteable:[GRXWriteable writeableWithSingleHandler:handler]];
}
/**
 * Метод удаления прибора учета.
 * Разрешения: 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 {
  return [self RPCToMethod:@"DeleteDevice"
                   message:message
           responseHandler:handler
               callOptions:callOptions
             responseClass:[KEYAPISTELEMETRYCONTROLV1DeleteDeviceResponse class]];
}

#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{
  [[self RPCToPostDeviceIndicatorWithRequest:request handler:handler] start];
}
// Returns a not-yet-started RPC object.
/**
 * Метод сохранения индикатора.
 * Поддерживает создание и обновление.
 * Метод доступен для: 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{
  return [self RPCToMethod:@"PostDeviceIndicator"
            requestsWriter:[GRXWriter writerWithValue:request]
             responseClass:[KEYAPISTELEMETRYCONTROLV1PostDeviceIndicatorResponse class]
        responsesWriteable:[GRXWriteable writeableWithSingleHandler:handler]];
}
/**
 * Метод сохранения индикатора.
 * Поддерживает создание и обновление.
 * Метод доступен для: Token: admin, service, bti, seller, application, owner, employee. Без учета разрешений
 */
- (GRPCUnaryProtoCall *)postDeviceIndicatorWithMessage:(KEYAPISTELEMETRYCONTROLV1PostDeviceIndicatorRequest *)message responseHandler:(id<GRPCProtoResponseHandler>)handler callOptions:(GRPCCallOptions *_Nullable)callOptions {
  return [self RPCToMethod:@"PostDeviceIndicator"
                   message:message
           responseHandler:handler
               callOptions:callOptions
             responseClass:[KEYAPISTELEMETRYCONTROLV1PostDeviceIndicatorResponse class]];
}

#pragma mark GetDeviceIndicator(GetDeviceIndicatorRequest) returns (GetDeviceIndicatorResponse)

/**
 * Метод получения индикатора.
 * Метод доступен для: 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)getDeviceIndicatorWithRequest:(KEYAPISTELEMETRYCONTROLV1GetDeviceIndicatorRequest *)request handler:(void(^)(KEYAPISTELEMETRYCONTROLV1GetDeviceIndicatorResponse *_Nullable response, NSError *_Nullable error))handler{
  [[self RPCToGetDeviceIndicatorWithRequest:request handler:handler] start];
}
// Returns a not-yet-started RPC object.
/**
 * Метод получения индикатора.
 * Метод доступен для: 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 *)RPCToGetDeviceIndicatorWithRequest:(KEYAPISTELEMETRYCONTROLV1GetDeviceIndicatorRequest *)request handler:(void(^)(KEYAPISTELEMETRYCONTROLV1GetDeviceIndicatorResponse *_Nullable response, NSError *_Nullable error))handler{
  return [self RPCToMethod:@"GetDeviceIndicator"
            requestsWriter:[GRXWriter writerWithValue:request]
             responseClass:[KEYAPISTELEMETRYCONTROLV1GetDeviceIndicatorResponse class]
        responsesWriteable:[GRXWriteable writeableWithSingleHandler:handler]];
}
/**
 * Метод получения индикатора.
 * Метод доступен для: Token: admin, service, bti, seller, application, owner, employee. Без учета разрешений
 */
- (GRPCUnaryProtoCall *)getDeviceIndicatorWithMessage:(KEYAPISTELEMETRYCONTROLV1GetDeviceIndicatorRequest *)message responseHandler:(id<GRPCProtoResponseHandler>)handler callOptions:(GRPCCallOptions *_Nullable)callOptions {
  return [self RPCToMethod:@"GetDeviceIndicator"
                   message:message
           responseHandler:handler
               callOptions:callOptions
             responseClass:[KEYAPISTELEMETRYCONTROLV1GetDeviceIndicatorResponse class]];
}

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

/**
 * Метод получения списка индикаторов.
 * Метод доступен для: 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)getDeviceIndicatorListWithRequest:(KEYAPISTELEMETRYCONTROLV1GetDeviceIndicatorListRequest *)request eventHandler:(void(^)(BOOL done, KEYAPISTELEMETRYCONTROLV1GetDeviceIndicatorListResponse *_Nullable response, NSError *_Nullable error))eventHandler{
  [[self RPCToGetDeviceIndicatorListWithRequest:request eventHandler:eventHandler] start];
}
// Returns a not-yet-started RPC object.
/**
 * Метод получения списка индикаторов.
 * Метод доступен для: 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 *)RPCToGetDeviceIndicatorListWithRequest:(KEYAPISTELEMETRYCONTROLV1GetDeviceIndicatorListRequest *)request eventHandler:(void(^)(BOOL done, KEYAPISTELEMETRYCONTROLV1GetDeviceIndicatorListResponse *_Nullable response, NSError *_Nullable error))eventHandler{
  return [self RPCToMethod:@"GetDeviceIndicatorList"
            requestsWriter:[GRXWriter writerWithValue:request]
             responseClass:[KEYAPISTELEMETRYCONTROLV1GetDeviceIndicatorListResponse class]
        responsesWriteable:[GRXWriteable writeableWithEventHandler:eventHandler]];
}
/**
 * Метод получения списка индикаторов.
 * Метод доступен для: Token: admin, service, bti, seller, application, owner, employee. Без учета разрешений
 */
- (GRPCUnaryProtoCall *)getDeviceIndicatorListWithMessage:(KEYAPISTELEMETRYCONTROLV1GetDeviceIndicatorListRequest *)message responseHandler:(id<GRPCProtoResponseHandler>)handler callOptions:(GRPCCallOptions *_Nullable)callOptions {
  return [self RPCToMethod:@"GetDeviceIndicatorList"
                   message:message
           responseHandler:handler
               callOptions:callOptions
             responseClass:[KEYAPISTELEMETRYCONTROLV1GetDeviceIndicatorListResponse class]];
}

#pragma mark GetDeviceIndicatorCount(GetDeviceIndicatorCountRequest) returns (GetDeviceIndicatorCountResponse)

/**
 * Метод получения количества индикаторов.
 * Метод доступен для: 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)getDeviceIndicatorCountWithRequest:(KEYAPISTELEMETRYCONTROLV1GetDeviceIndicatorCountRequest *)request handler:(void(^)(KEYAPISTELEMETRYCONTROLV1GetDeviceIndicatorCountResponse *_Nullable response, NSError *_Nullable error))handler{
  [[self RPCToGetDeviceIndicatorCountWithRequest:request handler:handler] start];
}
// Returns a not-yet-started RPC object.
/**
 * Метод получения количества индикаторов.
 * Метод доступен для: 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 *)RPCToGetDeviceIndicatorCountWithRequest:(KEYAPISTELEMETRYCONTROLV1GetDeviceIndicatorCountRequest *)request handler:(void(^)(KEYAPISTELEMETRYCONTROLV1GetDeviceIndicatorCountResponse *_Nullable response, NSError *_Nullable error))handler{
  return [self RPCToMethod:@"GetDeviceIndicatorCount"
            requestsWriter:[GRXWriter writerWithValue:request]
             responseClass:[KEYAPISTELEMETRYCONTROLV1GetDeviceIndicatorCountResponse class]
        responsesWriteable:[GRXWriteable writeableWithSingleHandler:handler]];
}
/**
 * Метод получения количества индикаторов.
 * Метод доступен для: Token: admin, service, bti, seller, application, owner, employee. Без учета разрешений
 */
- (GRPCUnaryProtoCall *)getDeviceIndicatorCountWithMessage:(KEYAPISTELEMETRYCONTROLV1GetDeviceIndicatorCountRequest *)message responseHandler:(id<GRPCProtoResponseHandler>)handler callOptions:(GRPCCallOptions *_Nullable)callOptions {
  return [self RPCToMethod:@"GetDeviceIndicatorCount"
                   message:message
           responseHandler:handler
               callOptions:callOptions
             responseClass:[KEYAPISTELEMETRYCONTROLV1GetDeviceIndicatorCountResponse class]];
}

#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{
  [[self RPCToDeleteDeviceIndicatorWithRequest:request handler:handler] start];
}
// Returns a not-yet-started RPC object.
/**
 * Метод удаления индикатор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{
  return [self RPCToMethod:@"DeleteDeviceIndicator"
            requestsWriter:[GRXWriter writerWithValue:request]
             responseClass:[KEYAPISTELEMETRYCONTROLV1DeleteDeviceIndicatorResponse class]
        responsesWriteable:[GRXWriteable writeableWithSingleHandler:handler]];
}
/**
 * Метод удаления индикаторa.
 * Метод доступен для: Token: admin, service, bti, seller, application, owner, employee. Без учета разрешений
 */
- (GRPCUnaryProtoCall *)deleteDeviceIndicatorWithMessage:(KEYAPISTELEMETRYCONTROLV1DeleteDeviceIndicatorRequest *)message responseHandler:(id<GRPCProtoResponseHandler>)handler callOptions:(GRPCCallOptions *_Nullable)callOptions {
  return [self RPCToMethod:@"DeleteDeviceIndicator"
                   message:message
           responseHandler:handler
               callOptions:callOptions
             responseClass:[KEYAPISTELEMETRYCONTROLV1DeleteDeviceIndicatorResponse class]];
}

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

/**
 * Метод получения списка связей индикаторов и ТУ.
 * Метод доступен для: 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)getDeviceIndicatorMetricPointListWithRequest:(KEYAPISTELEMETRYCONTROLV1GetDeviceIndicatorMetricPointListRequest *)request eventHandler:(void(^)(BOOL done, KEYAPISTELEMETRYCONTROLV1GetDeviceIndicatorMetricPointListResponse *_Nullable response, NSError *_Nullable error))eventHandler{
  [[self RPCToGetDeviceIndicatorMetricPointListWithRequest:request eventHandler:eventHandler] start];
}
// Returns a not-yet-started RPC object.
/**
 * Метод получения списка связей индикаторов и ТУ.
 * Метод доступен для: 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 *)RPCToGetDeviceIndicatorMetricPointListWithRequest:(KEYAPISTELEMETRYCONTROLV1GetDeviceIndicatorMetricPointListRequest *)request eventHandler:(void(^)(BOOL done, KEYAPISTELEMETRYCONTROLV1GetDeviceIndicatorMetricPointListResponse *_Nullable response, NSError *_Nullable error))eventHandler{
  return [self RPCToMethod:@"GetDeviceIndicatorMetricPointList"
            requestsWriter:[GRXWriter writerWithValue:request]
             responseClass:[KEYAPISTELEMETRYCONTROLV1GetDeviceIndicatorMetricPointListResponse class]
        responsesWriteable:[GRXWriteable writeableWithEventHandler:eventHandler]];
}
/**
 * Метод получения списка связей индикаторов и ТУ.
 * Метод доступен для: Token: admin, service, bti, seller, application, owner, employee. Без учета разрешений
 */
- (GRPCUnaryProtoCall *)getDeviceIndicatorMetricPointListWithMessage:(KEYAPISTELEMETRYCONTROLV1GetDeviceIndicatorMetricPointListRequest *)message responseHandler:(id<GRPCProtoResponseHandler>)handler callOptions:(GRPCCallOptions *_Nullable)callOptions {
  return [self RPCToMethod:@"GetDeviceIndicatorMetricPointList"
                   message:message
           responseHandler:handler
               callOptions:callOptions
             responseClass:[KEYAPISTELEMETRYCONTROLV1GetDeviceIndicatorMetricPointListResponse class]];
}

#pragma mark GetDeviceIndicatorMetricPointCount(GetDeviceIndicatorMetricPointCountRequest) returns (GetDeviceIndicatorMetricPointCountResponse)

/**
 * Метод получения количества связей индикаторов и ТУ.
 * Метод доступен для: 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)getDeviceIndicatorMetricPointCountWithRequest:(KEYAPISTELEMETRYCONTROLV1GetDeviceIndicatorMetricPointCountRequest *)request handler:(void(^)(KEYAPISTELEMETRYCONTROLV1GetDeviceIndicatorMetricPointCountResponse *_Nullable response, NSError *_Nullable error))handler{
  [[self RPCToGetDeviceIndicatorMetricPointCountWithRequest:request handler:handler] start];
}
// Returns a not-yet-started RPC object.
/**
 * Метод получения количества связей индикаторов и ТУ.
 * Метод доступен для: 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 *)RPCToGetDeviceIndicatorMetricPointCountWithRequest:(KEYAPISTELEMETRYCONTROLV1GetDeviceIndicatorMetricPointCountRequest *)request handler:(void(^)(KEYAPISTELEMETRYCONTROLV1GetDeviceIndicatorMetricPointCountResponse *_Nullable response, NSError *_Nullable error))handler{
  return [self RPCToMethod:@"GetDeviceIndicatorMetricPointCount"
            requestsWriter:[GRXWriter writerWithValue:request]
             responseClass:[KEYAPISTELEMETRYCONTROLV1GetDeviceIndicatorMetricPointCountResponse class]
        responsesWriteable:[GRXWriteable writeableWithSingleHandler:handler]];
}
/**
 * Метод получения количества связей индикаторов и ТУ.
 * Метод доступен для: Token: admin, service, bti, seller, application, owner, employee. Без учета разрешений
 */
- (GRPCUnaryProtoCall *)getDeviceIndicatorMetricPointCountWithMessage:(KEYAPISTELEMETRYCONTROLV1GetDeviceIndicatorMetricPointCountRequest *)message responseHandler:(id<GRPCProtoResponseHandler>)handler callOptions:(GRPCCallOptions *_Nullable)callOptions {
  return [self RPCToMethod:@"GetDeviceIndicatorMetricPointCount"
                   message:message
           responseHandler:handler
               callOptions:callOptions
             responseClass:[KEYAPISTELEMETRYCONTROLV1GetDeviceIndicatorMetricPointCountResponse class]];
}

#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{
  [[self RPCToPutDeviceIndicatorMetricPointAttachWithRequest:request handler:handler] start];
}
// Returns a not-yet-started RPC object.
/**
 * Метод сохранения связи индикаторов и ТУ.
 * Поддерживает только создание связи.
 * Метод доступен для: 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{
  return [self RPCToMethod:@"PutDeviceIndicatorMetricPointAttach"
            requestsWriter:[GRXWriter writerWithValue:request]
             responseClass:[KEYAPISTELEMETRYCONTROLV1PutDeviceIndicatorMetricPointAttachResponse class]
        responsesWriteable:[GRXWriteable writeableWithSingleHandler:handler]];
}
/**
 * Метод сохранения связи индикаторов и ТУ.
 * Поддерживает только создание связи.
 * Метод доступен для: Token: admin, service, bti, seller, application, owner, employee. Без учета разрешений
 */
- (GRPCUnaryProtoCall *)putDeviceIndicatorMetricPointAttachWithMessage:(KEYAPISTELEMETRYCONTROLV1PutDeviceIndicatorMetricPointAttachRequest *)message responseHandler:(id<GRPCProtoResponseHandler>)handler callOptions:(GRPCCallOptions *_Nullable)callOptions {
  return [self RPCToMethod:@"PutDeviceIndicatorMetricPointAttach"
                   message:message
           responseHandler:handler
               callOptions:callOptions
             responseClass:[KEYAPISTELEMETRYCONTROLV1PutDeviceIndicatorMetricPointAttachResponse class]];
}

#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{
  [[self RPCToPutDeviceIndicatorMetricPointDetachWithRequest:request handler:handler] start];
}
// Returns a not-yet-started RPC object.
/**
 * Метод удаления связи индикаторов и ТУ.
 * Метод доступен для: 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{
  return [self RPCToMethod:@"PutDeviceIndicatorMetricPointDetach"
            requestsWriter:[GRXWriter writerWithValue:request]
             responseClass:[KEYAPISTELEMETRYCONTROLV1PutDeviceIndicatorMetricPointDetachResponse class]
        responsesWriteable:[GRXWriteable writeableWithSingleHandler:handler]];
}
/**
 * Метод удаления связи индикаторов и ТУ.
 * Метод доступен для: Token: admin, service, bti, seller, application, owner, employee. Без учета разрешений
 */
- (GRPCUnaryProtoCall *)putDeviceIndicatorMetricPointDetachWithMessage:(KEYAPISTELEMETRYCONTROLV1PutDeviceIndicatorMetricPointDetachRequest *)message responseHandler:(id<GRPCProtoResponseHandler>)handler callOptions:(GRPCCallOptions *_Nullable)callOptions {
  return [self RPCToMethod:@"PutDeviceIndicatorMetricPointDetach"
                   message:message
           responseHandler:handler
               callOptions:callOptions
             responseClass:[KEYAPISTELEMETRYCONTROLV1PutDeviceIndicatorMetricPointDetachResponse class]];
}

#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{
  [[self RPCToGetDeviceGroupListWithRequest:request eventHandler:eventHandler] start];
}
// Returns a not-yet-started RPC object.
/**
 * Метод получения списка связей ПУ и группы пользователя.
 * Метод доступен для: 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{
  return [self RPCToMethod:@"GetDeviceGroupList"
            requestsWriter:[GRXWriter writerWithValue:request]
             responseClass:[KEYAPISTELEMETRYCONTROLV1GetDeviceGroupListResponse class]
        responsesWriteable:[GRXWriteable writeableWithEventHandler:eventHandler]];
}
/**
 * Метод получения списка связей ПУ и группы пользователя.
 * Метод доступен для: Token: admin, service, bti, seller. Без учета разрешений
 */
- (GRPCUnaryProtoCall *)getDeviceGroupListWithMessage:(KEYAPISTELEMETRYCONTROLV1GetDeviceGroupListRequest *)message responseHandler:(id<GRPCProtoResponseHandler>)handler callOptions:(GRPCCallOptions *_Nullable)callOptions {
  return [self RPCToMethod:@"GetDeviceGroupList"
                   message:message
           responseHandler:handler
               callOptions:callOptions
             responseClass:[KEYAPISTELEMETRYCONTROLV1GetDeviceGroupListResponse class]];
}

#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{
  [[self RPCToGetDeviceGroupCountWithRequest:request handler:handler] start];
}
// Returns a not-yet-started RPC object.
/**
 * Метод получения количества связей ПУ и группы пользователя.
 * Метод доступен для: 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{
  return [self RPCToMethod:@"GetDeviceGroupCount"
            requestsWriter:[GRXWriter writerWithValue:request]
             responseClass:[KEYAPISTELEMETRYCONTROLV1GetDeviceGroupCountResponse class]
        responsesWriteable:[GRXWriteable writeableWithSingleHandler:handler]];
}
/**
 * Метод получения количества связей ПУ и группы пользователя.
 * Метод доступен для: Token: admin, service, bti, seller. Без учета разрешений
 */
- (GRPCUnaryProtoCall *)getDeviceGroupCountWithMessage:(KEYAPISTELEMETRYCONTROLV1GetDeviceGroupCountRequest *)message responseHandler:(id<GRPCProtoResponseHandler>)handler callOptions:(GRPCCallOptions *_Nullable)callOptions {
  return [self RPCToMethod:@"GetDeviceGroupCount"
                   message:message
           responseHandler:handler
               callOptions:callOptions
             responseClass:[KEYAPISTELEMETRYCONTROLV1GetDeviceGroupCountResponse class]];
}

#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{
  [[self RPCToPutDeviceGroupAttachWithRequest:request handler:handler] start];
}
// Returns a not-yet-started RPC object.
/**
 * Метод сохранения связей ПУ и группы пользователя.
 * Поддерживает только создание.
 * Метод доступен для: 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{
  return [self RPCToMethod:@"PutDeviceGroupAttach"
            requestsWriter:[GRXWriter writerWithValue:request]
             responseClass:[KEYAPISTELEMETRYCONTROLV1PutDeviceGroupAttachResponse class]
        responsesWriteable:[GRXWriteable writeableWithSingleHandler:handler]];
}
/**
 * Метод сохранения связей ПУ и группы пользователя.
 * Поддерживает только создание.
 * Метод доступен для: Token: admin, service, bti, seller. Без учета разрешений
 */
- (GRPCUnaryProtoCall *)putDeviceGroupAttachWithMessage:(KEYAPISTELEMETRYCONTROLV1PutDeviceGroupAttachRequest *)message responseHandler:(id<GRPCProtoResponseHandler>)handler callOptions:(GRPCCallOptions *_Nullable)callOptions {
  return [self RPCToMethod:@"PutDeviceGroupAttach"
                   message:message
           responseHandler:handler
               callOptions:callOptions
             responseClass:[KEYAPISTELEMETRYCONTROLV1PutDeviceGroupAttachResponse class]];
}

#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{
  [[self RPCToPutDeviceGroupDetachWithRequest:request handler:handler] start];
}
// Returns a not-yet-started RPC object.
/**
 * Метод удаления связей ПУ и группы пользователя.
 * Метод доступен для: 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{
  return [self RPCToMethod:@"PutDeviceGroupDetach"
            requestsWriter:[GRXWriter writerWithValue:request]
             responseClass:[KEYAPISTELEMETRYCONTROLV1PutDeviceGroupDetachResponse class]
        responsesWriteable:[GRXWriteable writeableWithSingleHandler:handler]];
}
/**
 * Метод удаления связей ПУ и группы пользователя.
 * Метод доступен для: Token: admin, service, bti, seller. Без учета разрешений
 */
- (GRPCUnaryProtoCall *)putDeviceGroupDetachWithMessage:(KEYAPISTELEMETRYCONTROLV1PutDeviceGroupDetachRequest *)message responseHandler:(id<GRPCProtoResponseHandler>)handler callOptions:(GRPCCallOptions *_Nullable)callOptions {
  return [self RPCToMethod:@"PutDeviceGroupDetach"
                   message:message
           responseHandler:handler
               callOptions:callOptions
             responseClass:[KEYAPISTELEMETRYCONTROLV1PutDeviceGroupDetachResponse class]];
}

@end
#endif
