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

// Original file comments:
//
// Сервис реализует функционал управления Шаблонами КВ.
// Шаблон КВ описывает набор технологических планов и правила их применимости для массового создания КВ
namespace Keyapis\Subscription\V1;

/**
 * Сервис Шаблонов КВ
 */
class OfferTemplateServiceClient 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);
    }

    /**
     * Метод получения шаблона КВ.
     * Разрешения: subscription:offer_template:card.
     * Метод доступен для: Token: service, device_admin, ltp_first, admin, mrf, bti, manager. При наличии разрешений
     * @param \Keyapis\Subscription\V1\GetOfferTemplateRequest $argument input argument
     * @param array $metadata metadata
     * @param array $options call options
     * @return \Grpc\UnaryCall
     */
    public function GetOfferTemplate(\Keyapis\Subscription\V1\GetOfferTemplateRequest $argument,
      $metadata = [], $options = []) {
        return $this->_simpleRequest('/keyapis.subscription.v1.OfferTemplateService/GetOfferTemplate',
        $argument,
        ['\Keyapis\Subscription\V1\GetOfferTemplateResponse', 'decode'],
        $metadata, $options);
    }

    /**
     * Метод получения списка шаблонов КВ.
     * Разрешения: subscription:offer_template:list.
     * Метод доступен для: Token: service, device_admin, ltp_first, admin, mrf, bti, manager. При наличии разрешений
     * @param \Keyapis\Subscription\V1\GetOfferTemplateListRequest $argument input argument
     * @param array $metadata metadata
     * @param array $options call options
     * @return \Grpc\ServerStreamingCall
     */
    public function GetOfferTemplateList(\Keyapis\Subscription\V1\GetOfferTemplateListRequest $argument,
      $metadata = [], $options = []) {
        return $this->_serverStreamRequest('/keyapis.subscription.v1.OfferTemplateService/GetOfferTemplateList',
        $argument,
        ['\Keyapis\Subscription\V1\GetOfferTemplateListResponse', 'decode'],
        $metadata, $options);
    }

    /**
     * Метод получения списка Шаблонов КВ, соответствующих коммерческим возможностям дома.
     * По ОРПОН дома определяет фактически настроенные КВ и возвращает соответствующие им Шаблоны КВ.
     * Разрешения: subscription:offer_template:list.
     * Метод доступен для: Token: service, device_admin, ltp_first, admin, mrf, bti, manager. При наличии разрешений
     * @param \Keyapis\Subscription\V1\GetOfferTemplateByOrponListRequest $argument input argument
     * @param array $metadata metadata
     * @param array $options call options
     * @return \Grpc\ServerStreamingCall
     */
    public function GetOfferTemplateByOrponList(\Keyapis\Subscription\V1\GetOfferTemplateByOrponListRequest $argument,
      $metadata = [], $options = []) {
        return $this->_serverStreamRequest('/keyapis.subscription.v1.OfferTemplateService/GetOfferTemplateByOrponList',
        $argument,
        ['\Keyapis\Subscription\V1\GetOfferTemplateByOrponListResponse', 'decode'],
        $metadata, $options);
    }

    /**
     * Метод получения количества шаблонов КВ.
     * Разрешения: subscription:offer_template:list.
     * Метод доступен для: Token: service, device_admin, ltp_first, admin, mrf, bti, manager. При наличии разрешений
     * @param \Keyapis\Subscription\V1\GetOfferTemplateCountRequest $argument input argument
     * @param array $metadata metadata
     * @param array $options call options
     * @return \Grpc\UnaryCall
     */
    public function GetOfferTemplateCount(\Keyapis\Subscription\V1\GetOfferTemplateCountRequest $argument,
      $metadata = [], $options = []) {
        return $this->_simpleRequest('/keyapis.subscription.v1.OfferTemplateService/GetOfferTemplateCount',
        $argument,
        ['\Keyapis\Subscription\V1\GetOfferTemplateCountResponse', 'decode'],
        $metadata, $options);
    }

    /**
     * Метод получения количества Шаблонов КВ, соответствующих коммерческим возможностям дома.
     * По ОРПОН дома определяет фактически настроенные КВ и возвращает количество соответствующих им Шаблонов КВ.
     * Разрешения: subscription:offer_template:list.
     * Метод доступен для: Token: service, device_admin, ltp_first, admin, mrf, bti, manager. При наличии разрешений
     * @param \Keyapis\Subscription\V1\GetOfferTemplateByOrponCountRequest $argument input argument
     * @param array $metadata metadata
     * @param array $options call options
     * @return \Grpc\UnaryCall
     */
    public function GetOfferTemplateByOrponCount(\Keyapis\Subscription\V1\GetOfferTemplateByOrponCountRequest $argument,
      $metadata = [], $options = []) {
        return $this->_simpleRequest('/keyapis.subscription.v1.OfferTemplateService/GetOfferTemplateByOrponCount',
        $argument,
        ['\Keyapis\Subscription\V1\GetOfferTemplateByOrponCountResponse', 'decode'],
        $metadata, $options);
    }

    /**
     * Метод создания/редактирования шаблона КВ.
     * При отсутствии идентификатора создаёт новый шаблон, при наличии — редактирует существующий.
     * Разрешения: subscription:offer_template:save.
     * Метод доступен для: Token: service, device_admin, ltp_first, admin, mrf, bti, manager. При наличии разрешений
     * @param \Keyapis\Subscription\V1\PostOfferTemplateRequest $argument input argument
     * @param array $metadata metadata
     * @param array $options call options
     * @return \Grpc\UnaryCall
     */
    public function PostOfferTemplate(\Keyapis\Subscription\V1\PostOfferTemplateRequest $argument,
      $metadata = [], $options = []) {
        return $this->_simpleRequest('/keyapis.subscription.v1.OfferTemplateService/PostOfferTemplate',
        $argument,
        ['\Keyapis\Subscription\V1\PostOfferTemplateResponse', 'decode'],
        $metadata, $options);
    }

    /**
     * Метод архивации шаблона КВ.
     * Переводит шаблон в статус ARCHIVED.
     * Разрешения: subscription:offer_template:remove.
     * Метод доступен для: Token: service, device_admin, ltp_first, admin, mrf, bti, manager. При наличии разрешений
     * @param \Keyapis\Subscription\V1\DeleteOfferTemplateRequest $argument input argument
     * @param array $metadata metadata
     * @param array $options call options
     * @return \Grpc\UnaryCall
     */
    public function DeleteOfferTemplate(\Keyapis\Subscription\V1\DeleteOfferTemplateRequest $argument,
      $metadata = [], $options = []) {
        return $this->_simpleRequest('/keyapis.subscription.v1.OfferTemplateService/DeleteOfferTemplate',
        $argument,
        ['\Keyapis\Subscription\V1\DeleteOfferTemplateResponse', 'decode'],
        $metadata, $options);
    }

    /**
     * Метод восстановления шаблона КВ из архива.
     * Переводит шаблон в статус ACTIVE.
     * Разрешения: subscription:offer_template:restore:save.
     * Метод доступен для: Token: service, device_admin, ltp_first, admin, mrf, bti, manager. При наличии разрешений
     * @param \Keyapis\Subscription\V1\PostOfferTemplateRestoreRequest $argument input argument
     * @param array $metadata metadata
     * @param array $options call options
     * @return \Grpc\UnaryCall
     */
    public function PostOfferTemplateRestore(\Keyapis\Subscription\V1\PostOfferTemplateRestoreRequest $argument,
      $metadata = [], $options = []) {
        return $this->_simpleRequest('/keyapis.subscription.v1.OfferTemplateService/PostOfferTemplateRestore',
        $argument,
        ['\Keyapis\Subscription\V1\PostOfferTemplateRestoreResponse', 'decode'],
        $metadata, $options);
    }

}
