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

// Original file comments:
//
// Сервис реализует функционал управления оповещениями о проблемах сбора показаний телеметрии (алертинга)
namespace Keyapis\TelemetryAlerting\V1;

/**
 * Сервис алертинга
 */
class TriggerServiceClient 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);
    }

    /**
     * Метод сохранения триггера.
     * Поддерживает создание и обновление.
     * Метод доступен для: service, application(telemetry:edit)
     * @param \Keyapis\TelemetryAlerting\V1\PostTriggerRequest $argument input argument
     * @param array $metadata metadata
     * @param array $options call options
     * @return \Grpc\UnaryCall
     */
    public function PostTrigger(\Keyapis\TelemetryAlerting\V1\PostTriggerRequest $argument,
      $metadata = [], $options = []) {
        return $this->_simpleRequest('/keyapis.telemetry_alerting.v1.TriggerService/PostTrigger',
        $argument,
        ['\Keyapis\TelemetryAlerting\V1\PostTriggerResponse', 'decode'],
        $metadata, $options);
    }

    /**
     * Чтение одного триггера.
     * Метод доступен для: service, application(telemetry:read или telemetry:edit)
     * @param \Keyapis\TelemetryAlerting\V1\GetTriggerRequest $argument input argument
     * @param array $metadata metadata
     * @param array $options call options
     * @return \Grpc\UnaryCall
     */
    public function GetTrigger(\Keyapis\TelemetryAlerting\V1\GetTriggerRequest $argument,
      $metadata = [], $options = []) {
        return $this->_simpleRequest('/keyapis.telemetry_alerting.v1.TriggerService/GetTrigger',
        $argument,
        ['\Keyapis\TelemetryAlerting\V1\GetTriggerResponse', 'decode'],
        $metadata, $options);
    }

    /**
     * Метод получения списка триггеров.
     * Метод доступен для: service, application(telemetry:read или telemetry:edit)
     * @param \Keyapis\TelemetryAlerting\V1\GetTriggerListRequest $argument input argument
     * @param array $metadata metadata
     * @param array $options call options
     * @return \Grpc\ServerStreamingCall
     */
    public function GetTriggerList(\Keyapis\TelemetryAlerting\V1\GetTriggerListRequest $argument,
      $metadata = [], $options = []) {
        return $this->_serverStreamRequest('/keyapis.telemetry_alerting.v1.TriggerService/GetTriggerList',
        $argument,
        ['\Keyapis\TelemetryAlerting\V1\GetTriggerListResponse', 'decode'],
        $metadata, $options);
    }

    /**
     * Метод получения количества триггеров.
     * Метод доступен для: service, application(telemetry:read или telemetry:edit)
     * @param \Keyapis\TelemetryAlerting\V1\GetTriggerCountRequest $argument input argument
     * @param array $metadata metadata
     * @param array $options call options
     * @return \Grpc\UnaryCall
     */
    public function GetTriggerCount(\Keyapis\TelemetryAlerting\V1\GetTriggerCountRequest $argument,
      $metadata = [], $options = []) {
        return $this->_simpleRequest('/keyapis.telemetry_alerting.v1.TriggerService/GetTriggerCount',
        $argument,
        ['\Keyapis\TelemetryAlerting\V1\GetTriggerCountResponse', 'decode'],
        $metadata, $options);
    }

    /**
     * Удаление триггера.
     * Метод удаляет только отключенный триггер (is_disabled=true).
     * Удаление неотключенного вызовет ошибку.
     * При удалении триггера удаляются и все его алерты.
     * Метод доступен для: service, application(telemetry:edit)
     * @param \Keyapis\TelemetryAlerting\V1\DeleteTriggerRequest $argument input argument
     * @param array $metadata metadata
     * @param array $options call options
     * @return \Grpc\UnaryCall
     */
    public function DeleteTrigger(\Keyapis\TelemetryAlerting\V1\DeleteTriggerRequest $argument,
      $metadata = [], $options = []) {
        return $this->_simpleRequest('/keyapis.telemetry_alerting.v1.TriggerService/DeleteTrigger',
        $argument,
        ['\Keyapis\TelemetryAlerting\V1\DeleteTriggerResponse', 'decode'],
        $metadata, $options);
    }

    /**
     * Метод получения списка алертов.
     * Метод доступен для: service, application(telemetry:read или telemetry:edit)
     * @param \Keyapis\TelemetryAlerting\V1\GetTriggerAlertListRequest $argument input argument
     * @param array $metadata metadata
     * @param array $options call options
     * @return \Grpc\ServerStreamingCall
     */
    public function GetTriggerAlertList(\Keyapis\TelemetryAlerting\V1\GetTriggerAlertListRequest $argument,
      $metadata = [], $options = []) {
        return $this->_serverStreamRequest('/keyapis.telemetry_alerting.v1.TriggerService/GetTriggerAlertList',
        $argument,
        ['\Keyapis\TelemetryAlerting\V1\GetTriggerAlertListResponse', 'decode'],
        $metadata, $options);
    }

    /**
     * Метод получения количества алертов.
     * Метод доступен для: service, application(telemetry:read или telemetry:edit)
     * @param \Keyapis\TelemetryAlerting\V1\GetTriggerAlertCountRequest $argument input argument
     * @param array $metadata metadata
     * @param array $options call options
     * @return \Grpc\UnaryCall
     */
    public function GetTriggerAlertCount(\Keyapis\TelemetryAlerting\V1\GetTriggerAlertCountRequest $argument,
      $metadata = [], $options = []) {
        return $this->_simpleRequest('/keyapis.telemetry_alerting.v1.TriggerService/GetTriggerAlertCount',
        $argument,
        ['\Keyapis\TelemetryAlerting\V1\GetTriggerAlertCountResponse', 'decode'],
        $metadata, $options);
    }

    /**
     * Удаление алерта.
     * Метод удаляет только погашенный алерт (is_disabled=true).
     * Удаление непогашенного вызовет ошибку.
     * Метод доступен для: service, application(telemetry:edit)
     * @param \Keyapis\TelemetryAlerting\V1\DeleteTriggerAlertRequest $argument input argument
     * @param array $metadata metadata
     * @param array $options call options
     * @return \Grpc\UnaryCall
     */
    public function DeleteTriggerAlert(\Keyapis\TelemetryAlerting\V1\DeleteTriggerAlertRequest $argument,
      $metadata = [], $options = []) {
        return $this->_simpleRequest('/keyapis.telemetry_alerting.v1.TriggerService/DeleteTriggerAlert',
        $argument,
        ['\Keyapis\TelemetryAlerting\V1\DeleteTriggerAlertResponse', 'decode'],
        $metadata, $options);
    }

    /**
     * Принудительное выключение алерта.
     * Дата closed_at проставляется текущим временем.
     * Флаг is_disabled проставляется true.
     * Флаг is_manually_closed проставляется true.
     * Можно принудительно выключать только алерты созданные по триггерам с атрибутом manually_unclosable=false.
     * Метод доступен для: service, application(telemetry:edit)
     * @param \Keyapis\TelemetryAlerting\V1\PostTriggerAlertDisableRequest $argument input argument
     * @param array $metadata metadata
     * @param array $options call options
     * @return \Grpc\UnaryCall
     */
    public function PostTriggerAlertDisable(\Keyapis\TelemetryAlerting\V1\PostTriggerAlertDisableRequest $argument,
      $metadata = [], $options = []) {
        return $this->_simpleRequest('/keyapis.telemetry_alerting.v1.TriggerService/PostTriggerAlertDisable',
        $argument,
        ['\Keyapis\TelemetryAlerting\V1\PostTriggerAlertDisableResponse', 'decode'],
        $metadata, $options);
    }

    /**
     * Список устройств, вызвавших появление алерта.
     * Метод доступен для: service, application(telemetry:read или telemetry:edit)
     * @param \Keyapis\TelemetryAlerting\V1\GetTriggerAlertDeviceListRequest $argument input argument
     * @param array $metadata metadata
     * @param array $options call options
     * @return \Grpc\ServerStreamingCall
     */
    public function GetTriggerAlertDeviceList(\Keyapis\TelemetryAlerting\V1\GetTriggerAlertDeviceListRequest $argument,
      $metadata = [], $options = []) {
        return $this->_serverStreamRequest('/keyapis.telemetry_alerting.v1.TriggerService/GetTriggerAlertDeviceList',
        $argument,
        ['\Keyapis\TelemetryAlerting\V1\GetTriggerAlertDeviceListResponse', 'decode'],
        $metadata, $options);
    }

}
