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

// Original file comments:
//
// Сервис реализует функционал хранения пресетов устройств
namespace Keyapis\Preset\V1;

/**
 * Сервис пресетов
 */
class PresetServiceClient 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);
    }

    /**
     * Метод сохранения пресетов.
     * Поддерживает создание и обновление.
     * При обновлении пресета посылается задача PresetInstallTask в очередь key.preset.install.
     * Данное сообщение должно отправляться только если изменению подверглось одно из следующих полей:
     * - Sip;
     * - Ntp;
     * - Syslog;
     * - Room;
     * - VideoConfig;
     * - Dtmf.
     * Метод доступен для: admin, service
     * @param \Keyapis\Preset\V1\PostPresetRequest $argument input argument
     * @param array $metadata metadata
     * @param array $options call options
     * @return \Grpc\UnaryCall
     */
    public function PostPreset(\Keyapis\Preset\V1\PostPresetRequest $argument,
      $metadata = [], $options = []) {
        return $this->_simpleRequest('/keyapis.preset.v1.PresetService/PostPreset',
        $argument,
        ['\Keyapis\Preset\V1\PostPresetResponse', 'decode'],
        $metadata, $options);
    }

    /**
     * Метод получения пресета по идентификатору.
     * Метод доступен для: admin, service, bti, ltp_first, owner, employee
     * @param \Keyapis\Preset\V1\GetPresetRequest $argument input argument
     * @param array $metadata metadata
     * @param array $options call options
     * @return \Grpc\UnaryCall
     */
    public function GetPreset(\Keyapis\Preset\V1\GetPresetRequest $argument,
      $metadata = [], $options = []) {
        return $this->_simpleRequest('/keyapis.preset.v1.PresetService/GetPreset',
        $argument,
        ['\Keyapis\Preset\V1\GetPresetResponse', 'decode'],
        $metadata, $options);
    }

    /**
     * Метод получения дефолтного пресета.
     * Метод доступен для: admin, service, bti, ltp_first, owner, employee
     * @param \Keyapis\Preset\V1\GetPresetDefaultRequest $argument input argument
     * @param array $metadata metadata
     * @param array $options call options
     * @return \Grpc\UnaryCall
     */
    public function GetPresetDefault(\Keyapis\Preset\V1\GetPresetDefaultRequest $argument,
      $metadata = [], $options = []) {
        return $this->_simpleRequest('/keyapis.preset.v1.PresetService/GetPresetDefault',
        $argument,
        ['\Keyapis\Preset\V1\GetPresetDefaultResponse', 'decode'],
        $metadata, $options);
    }

    /**
     * Метод получения пресетов.
     * Метод доступен для: admin, service, bti, ltp_first, owner, employee
     * @param \Keyapis\Preset\V1\GetPresetListRequest $argument input argument
     * @param array $metadata metadata
     * @param array $options call options
     * @return \Grpc\ServerStreamingCall
     */
    public function GetPresetList(\Keyapis\Preset\V1\GetPresetListRequest $argument,
      $metadata = [], $options = []) {
        return $this->_serverStreamRequest('/keyapis.preset.v1.PresetService/GetPresetList',
        $argument,
        ['\Keyapis\Preset\V1\GetPresetListResponse', 'decode'],
        $metadata, $options);
    }

    /**
     * Метод получения количества пресетов.
     * Метод доступен для: admin, service, bti, ltp_first, owner, employee
     * @param \Keyapis\Preset\V1\GetPresetCountRequest $argument input argument
     * @param array $metadata metadata
     * @param array $options call options
     * @return \Grpc\UnaryCall
     */
    public function GetPresetCount(\Keyapis\Preset\V1\GetPresetCountRequest $argument,
      $metadata = [], $options = []) {
        return $this->_simpleRequest('/keyapis.preset.v1.PresetService/GetPresetCount',
        $argument,
        ['\Keyapis\Preset\V1\GetPresetCountResponse', 'decode'],
        $metadata, $options);
    }

    /**
     * Метод удаления пресета.
     * Нельзя удалить пресет, если он используется на устройстве.
     * Нельзя удалить дефолтный пресет.
     * Метод доступен для: admin, service
     * @param \Keyapis\Preset\V1\DeletePresetRequest $argument input argument
     * @param array $metadata metadata
     * @param array $options call options
     * @return \Grpc\UnaryCall
     */
    public function DeletePreset(\Keyapis\Preset\V1\DeletePresetRequest $argument,
      $metadata = [], $options = []) {
        return $this->_simpleRequest('/keyapis.preset.v1.PresetService/DeletePreset',
        $argument,
        ['\Keyapis\Preset\V1\DeletePresetResponse', 'decode'],
        $metadata, $options);
    }

}
