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

// Original file comments:
//
// Сервис реализует функционал управления Точками учёта(ТУ)
namespace Keyapis\TelemetryControl\V1;

/**
 * Сервис Точек учёта (ТУ).
 * Авторизация:
 *   - Authorization: Bearer.
 *   - X-Api-Key: apiKey
 */
class MetricPointServiceClient 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);
    }

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

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

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

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

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

}
