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

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

/**
 * Сервис профилей шифрования
 */
class EncryptionProfileServiceClient 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);
    }

    /**
     * Метод сохранения шифрования по идентификатору.
     * Поддерживает создание и обновление.
     * Метод доступен для: device_admin
     * @param \Keyapis\EncryptionProfile\V1\PostEncryptionProfileRequest $argument input argument
     * @param array $metadata metadata
     * @param array $options call options
     * @return \Grpc\UnaryCall
     */
    public function PostEncryptionProfile(\Keyapis\EncryptionProfile\V1\PostEncryptionProfileRequest $argument,
      $metadata = [], $options = []) {
        return $this->_simpleRequest('/keyapis.encryption_profile.v1.EncryptionProfileService/PostEncryptionProfile',
        $argument,
        ['\Keyapis\EncryptionProfile\V1\PostEncryptionProfileResponse', 'decode'],
        $metadata, $options);
    }

    /**
     * Метод получения профиля шифрования по идентификатору.
     * Метод доступен для: admin, service, bti, device_admin
     * @param \Keyapis\EncryptionProfile\V1\GetEncryptionProfileRequest $argument input argument
     * @param array $metadata metadata
     * @param array $options call options
     * @return \Grpc\UnaryCall
     */
    public function GetEncryptionProfile(\Keyapis\EncryptionProfile\V1\GetEncryptionProfileRequest $argument,
      $metadata = [], $options = []) {
        return $this->_simpleRequest('/keyapis.encryption_profile.v1.EncryptionProfileService/GetEncryptionProfile',
        $argument,
        ['\Keyapis\EncryptionProfile\V1\GetEncryptionProfileResponse', 'decode'],
        $metadata, $options);
    }

    /**
     * Метод получения списка профилей шифрования.
     * Метод доступен для: admin, service, bti, device_admin
     * @param \Keyapis\EncryptionProfile\V1\GetEncryptionProfileListRequest $argument input argument
     * @param array $metadata metadata
     * @param array $options call options
     * @return \Grpc\ServerStreamingCall
     */
    public function GetEncryptionProfileList(\Keyapis\EncryptionProfile\V1\GetEncryptionProfileListRequest $argument,
      $metadata = [], $options = []) {
        return $this->_serverStreamRequest('/keyapis.encryption_profile.v1.EncryptionProfileService/GetEncryptionProfileList',
        $argument,
        ['\Keyapis\EncryptionProfile\V1\GetEncryptionProfileListResponse', 'decode'],
        $metadata, $options);
    }

    /**
     * Метод получения количества профилей шифрования.
     * Метод доступен для: admin, service, bti, device_admin
     * @param \Keyapis\EncryptionProfile\V1\GetEncryptionProfileCountRequest $argument input argument
     * @param array $metadata metadata
     * @param array $options call options
     * @return \Grpc\UnaryCall
     */
    public function GetEncryptionProfileCount(\Keyapis\EncryptionProfile\V1\GetEncryptionProfileCountRequest $argument,
      $metadata = [], $options = []) {
        return $this->_simpleRequest('/keyapis.encryption_profile.v1.EncryptionProfileService/GetEncryptionProfileCount',
        $argument,
        ['\Keyapis\EncryptionProfile\V1\GetEncryptionProfileCountResponse', 'decode'],
        $metadata, $options);
    }

    /**
     * Метод удаления профиля шифрования.
     * Метод доступен для: admin, service, device_admin
     * @param \Keyapis\EncryptionProfile\V1\DeleteEncryptionProfileRequest $argument input argument
     * @param array $metadata metadata
     * @param array $options call options
     * @return \Grpc\UnaryCall
     */
    public function DeleteEncryptionProfile(\Keyapis\EncryptionProfile\V1\DeleteEncryptionProfileRequest $argument,
      $metadata = [], $options = []) {
        return $this->_simpleRequest('/keyapis.encryption_profile.v1.EncryptionProfileService/DeleteEncryptionProfile',
        $argument,
        ['\Keyapis\EncryptionProfile\V1\DeleteEncryptionProfileResponse', 'decode'],
        $metadata, $options);
    }

    /**
     * Метод разархивации шифрования по идентификатору.
     * Метод доступен для: admin, service, device_admin
     * @param \Keyapis\EncryptionProfile\V1\PostEncryptionProfileRestoreRequest $argument input argument
     * @param array $metadata metadata
     * @param array $options call options
     * @return \Grpc\UnaryCall
     */
    public function PostEncryptionProfileRestore(\Keyapis\EncryptionProfile\V1\PostEncryptionProfileRestoreRequest $argument,
      $metadata = [], $options = []) {
        return $this->_simpleRequest('/keyapis.encryption_profile.v1.EncryptionProfileService/PostEncryptionProfileRestore',
        $argument,
        ['\Keyapis\EncryptionProfile\V1\PostEncryptionProfileRestoreResponse', 'decode'],
        $metadata, $options);
    }

}
