<?php
// GENERATED CODE -- DO NOT EDIT!

// Original file comments:
//
// Сервис предоставляет возможность управлять шаблонами приборов телеметрии
namespace Keyapis\TelemetryControl\V1;

/**
 * Сервис управления шаблонами приборов телеметрии.
 * Авторизация:
 *   - Authorization: Bearer token
 */
class TemplateServiceClient extends \Grpc\BaseStub {

    /**
     * @param string $hostname hostname
     * @param array $opts channel options
     * @param \Grpc\Channel $channel (optional) re-use channel object
     */
    public function __construct($hostname, $opts, $channel = null) {
        parent::__construct($hostname, $opts, $channel);
    }

    /**
     * Метод получения шаблона ПУ.
     * Метод доступен для: Token: service, application, admin, owner, employee, bti, seller. Без учета разрешений
     * @param \Keyapis\TelemetryControl\V1\GetTemplateDeviceRequest $argument input argument
     * @param array $metadata metadata
     * @param array $options call options
     * @return \Grpc\UnaryCall
     */
    public function GetTemplateDevice(\Keyapis\TelemetryControl\V1\GetTemplateDeviceRequest $argument,
      $metadata = [], $options = []) {
        return $this->_simpleRequest('/keyapis.telemetry_control.v1.TemplateService/GetTemplateDevice',
        $argument,
        ['\Keyapis\TelemetryControl\V1\GetTemplateDeviceResponse', 'decode'],
        $metadata, $options);
    }

    /**
     * Метод получения списка шаблонов ПУ.
     * Метод доступен для: Token: service, application, admin, owner, employee, bti, seller. Без учета разрешений
     * @param \Keyapis\TelemetryControl\V1\GetTemplateDeviceListRequest $argument input argument
     * @param array $metadata metadata
     * @param array $options call options
     * @return \Grpc\ServerStreamingCall
     */
    public function GetTemplateDeviceList(\Keyapis\TelemetryControl\V1\GetTemplateDeviceListRequest $argument,
      $metadata = [], $options = []) {
        return $this->_serverStreamRequest('/keyapis.telemetry_control.v1.TemplateService/GetTemplateDeviceList',
        $argument,
        ['\Keyapis\TelemetryControl\V1\GetTemplateDeviceListResponse', 'decode'],
        $metadata, $options);
    }

    /**
     * Метод получения количества шаблонов ПУ.
     * Метод доступен для: Token: service, application, admin, owner, employee, bti, seller. Без учета разрешений
     * @param \Keyapis\TelemetryControl\V1\GetTemplateDeviceCountRequest $argument input argument
     * @param array $metadata metadata
     * @param array $options call options
     * @return \Grpc\UnaryCall
     */
    public function GetTemplateDeviceCount(\Keyapis\TelemetryControl\V1\GetTemplateDeviceCountRequest $argument,
      $metadata = [], $options = []) {
        return $this->_simpleRequest('/keyapis.telemetry_control.v1.TemplateService/GetTemplateDeviceCount',
        $argument,
        ['\Keyapis\TelemetryControl\V1\GetTemplateDeviceCountResponse', 'decode'],
        $metadata, $options);
    }

    /**
     * Метод сохранения шаблона ПУ.
     * Поддерживает создание и обновление.
     * Метод доступен для: Token: admin, service, application. Без учета разрешений
     * @param \Keyapis\TelemetryControl\V1\PostTemplateDeviceRequest $argument input argument
     * @param array $metadata metadata
     * @param array $options call options
     * @return \Grpc\UnaryCall
     */
    public function PostTemplateDevice(\Keyapis\TelemetryControl\V1\PostTemplateDeviceRequest $argument,
      $metadata = [], $options = []) {
        return $this->_simpleRequest('/keyapis.telemetry_control.v1.TemplateService/PostTemplateDevice',
        $argument,
        ['\Keyapis\TelemetryControl\V1\PostTemplateDeviceResponse', 'decode'],
        $metadata, $options);
    }

    /**
     * Метод удаления шаблона ПУ.
     * Метод доступен для: Token: admin, service, application. Без учета разрешений
     * @param \Keyapis\TelemetryControl\V1\DeleteTemplateDeviceRequest $argument input argument
     * @param array $metadata metadata
     * @param array $options call options
     * @return \Grpc\UnaryCall
     */
    public function DeleteTemplateDevice(\Keyapis\TelemetryControl\V1\DeleteTemplateDeviceRequest $argument,
      $metadata = [], $options = []) {
        return $this->_simpleRequest('/keyapis.telemetry_control.v1.TemplateService/DeleteTemplateDevice',
        $argument,
        ['\Keyapis\TelemetryControl\V1\DeleteTemplateDeviceResponse', 'decode'],
        $metadata, $options);
    }

    /**
     * Метод получения шаблона индикатора.
     * Метод доступен для: Token: service, application, admin, owner, employee, bti, seller. Без учета разрешений
     * @param \Keyapis\TelemetryControl\V1\GetTemplateIndicatorRequest $argument input argument
     * @param array $metadata metadata
     * @param array $options call options
     * @return \Grpc\UnaryCall
     */
    public function GetTemplateIndicator(\Keyapis\TelemetryControl\V1\GetTemplateIndicatorRequest $argument,
      $metadata = [], $options = []) {
        return $this->_simpleRequest('/keyapis.telemetry_control.v1.TemplateService/GetTemplateIndicator',
        $argument,
        ['\Keyapis\TelemetryControl\V1\GetTemplateIndicatorResponse', 'decode'],
        $metadata, $options);
    }

    /**
     * Метод получения списка шаблонов индикаторов.
     * Метод доступен для: Token: service, application, admin, owner, employee, bti, seller. Без учета разрешений
     * @param \Keyapis\TelemetryControl\V1\GetTemplateIndicatorListRequest $argument input argument
     * @param array $metadata metadata
     * @param array $options call options
     * @return \Grpc\ServerStreamingCall
     */
    public function GetTemplateIndicatorList(\Keyapis\TelemetryControl\V1\GetTemplateIndicatorListRequest $argument,
      $metadata = [], $options = []) {
        return $this->_serverStreamRequest('/keyapis.telemetry_control.v1.TemplateService/GetTemplateIndicatorList',
        $argument,
        ['\Keyapis\TelemetryControl\V1\GetTemplateIndicatorListResponse', 'decode'],
        $metadata, $options);
    }

    /**
     * Метод получения количества шаблонов индикаторов.
     * Метод доступен для: Token: service, application, admin, owner, employee, bti, seller. Без учета разрешений
     * @param \Keyapis\TelemetryControl\V1\GetTemplateIndicatorCountRequest $argument input argument
     * @param array $metadata metadata
     * @param array $options call options
     * @return \Grpc\UnaryCall
     */
    public function GetTemplateIndicatorCount(\Keyapis\TelemetryControl\V1\GetTemplateIndicatorCountRequest $argument,
      $metadata = [], $options = []) {
        return $this->_simpleRequest('/keyapis.telemetry_control.v1.TemplateService/GetTemplateIndicatorCount',
        $argument,
        ['\Keyapis\TelemetryControl\V1\GetTemplateIndicatorCountResponse', 'decode'],
        $metadata, $options);
    }

    /**
     * Метод сохранения шаблонов индикатора.
     * Поддерживает создание и обновление.
     * Метод доступен для: Token: admin, service, application. Без учета разрешений
     * @param \Keyapis\TelemetryControl\V1\PostTemplateIndicatorRequest $argument input argument
     * @param array $metadata metadata
     * @param array $options call options
     * @return \Grpc\UnaryCall
     */
    public function PostTemplateIndicator(\Keyapis\TelemetryControl\V1\PostTemplateIndicatorRequest $argument,
      $metadata = [], $options = []) {
        return $this->_simpleRequest('/keyapis.telemetry_control.v1.TemplateService/PostTemplateIndicator',
        $argument,
        ['\Keyapis\TelemetryControl\V1\PostTemplateIndicatorResponse', 'decode'],
        $metadata, $options);
    }

    /**
     * Метод удаления шаблона шаблона индикатора.
     * Метод доступен для: Token: admin, service, application. Без учета разрешений
     * @param \Keyapis\TelemetryControl\V1\DeleteTemplateIndicatorRequest $argument input argument
     * @param array $metadata metadata
     * @param array $options call options
     * @return \Grpc\UnaryCall
     */
    public function DeleteTemplateIndicator(\Keyapis\TelemetryControl\V1\DeleteTemplateIndicatorRequest $argument,
      $metadata = [], $options = []) {
        return $this->_simpleRequest('/keyapis.telemetry_control.v1.TemplateService/DeleteTemplateIndicator',
        $argument,
        ['\Keyapis\TelemetryControl\V1\DeleteTemplateIndicatorResponse', 'decode'],
        $metadata, $options);
    }

}
