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

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

/**
 * Сервис шаблонов уведомлений
 */
class NotificationTemplateServiceClient 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);
    }

    /**
     * Метод сохранения шаблона уведомления.
     * Поддерживает создание и обновление.
     * Поддерживает mustache теги в переменных template_header и template_text.
     * Сценарий использования метода: https://confluence.rt.ru/pages/viewpage.action?pageId=774989444.
     * Метод доступен для: admin, manager, service
     * @param \Keyapis\Multiapp\V1\PostNotificationTemplateRequest $argument input argument
     * @param array $metadata metadata
     * @param array $options call options
     * @return \Grpc\UnaryCall
     */
    public function PostNotificationTemplate(\Keyapis\Multiapp\V1\PostNotificationTemplateRequest $argument,
      $metadata = [], $options = []) {
        return $this->_simpleRequest('/keyapis.multiapp.v1.NotificationTemplateService/PostNotificationTemplate',
        $argument,
        ['\Keyapis\Multiapp\V1\PostNotificationTemplateResponse', 'decode'],
        $metadata, $options);
    }

    /**
     * Метод получения шаблона уведомления.
     * Метод доступен для: admin, manager, service, partner.
     * Роль partner определяется по наличию заголовка X-API-KEY вместо Authorization.
     * Роли partner доступны только связанные с ней шаблоны
     * @param \Keyapis\Multiapp\V1\GetNotificationTemplateRequest $argument input argument
     * @param array $metadata metadata
     * @param array $options call options
     * @return \Grpc\UnaryCall
     */
    public function GetNotificationTemplate(\Keyapis\Multiapp\V1\GetNotificationTemplateRequest $argument,
      $metadata = [], $options = []) {
        return $this->_simpleRequest('/keyapis.multiapp.v1.NotificationTemplateService/GetNotificationTemplate',
        $argument,
        ['\Keyapis\Multiapp\V1\GetNotificationTemplateResponse', 'decode'],
        $metadata, $options);
    }

    /**
     * Метод удаления шаблона уведомления.
     * Устанавливает текущую дату и время в параметр deleted_at.
     * Метод доступен для: admin, manager, service
     * @param \Keyapis\Multiapp\V1\DeleteNotificationTemplateRequest $argument input argument
     * @param array $metadata metadata
     * @param array $options call options
     * @return \Grpc\UnaryCall
     */
    public function DeleteNotificationTemplate(\Keyapis\Multiapp\V1\DeleteNotificationTemplateRequest $argument,
      $metadata = [], $options = []) {
        return $this->_simpleRequest('/keyapis.multiapp.v1.NotificationTemplateService/DeleteNotificationTemplate',
        $argument,
        ['\Keyapis\Multiapp\V1\DeleteNotificationTemplateResponse', 'decode'],
        $metadata, $options);
    }

    /**
     * Метод получения списка шаблонов уведомлений.
     * Метод доступен для: admin, manager, service, partner.
     * Роль partner определяется по наличию заголовка X-API-KEY вместо Authorization.
     * Если метод вызван ролью partner в фильтре поле partner_ids принудительно замещается его идентификатором
     * @param \Keyapis\Multiapp\V1\GetNotificationTemplateListRequest $argument input argument
     * @param array $metadata metadata
     * @param array $options call options
     * @return \Grpc\ServerStreamingCall
     */
    public function GetNotificationTemplateList(\Keyapis\Multiapp\V1\GetNotificationTemplateListRequest $argument,
      $metadata = [], $options = []) {
        return $this->_serverStreamRequest('/keyapis.multiapp.v1.NotificationTemplateService/GetNotificationTemplateList',
        $argument,
        ['\Keyapis\Multiapp\V1\GetNotificationTemplateListResponse', 'decode'],
        $metadata, $options);
    }

    /**
     * Метод получения количества шаблонов уведомлений.
     * Метод доступен для: admin, manager, service, partner.
     * Роль partner определяется по наличию заголовка X-API-KEY вместо Authorization.
     * Если метод вызван ролью partner в фильтре поле partner_ids принудительно замещается его идентификатором
     * @param \Keyapis\Multiapp\V1\GetNotificationTemplateCountRequest $argument input argument
     * @param array $metadata metadata
     * @param array $options call options
     * @return \Grpc\UnaryCall
     */
    public function GetNotificationTemplateCount(\Keyapis\Multiapp\V1\GetNotificationTemplateCountRequest $argument,
      $metadata = [], $options = []) {
        return $this->_simpleRequest('/keyapis.multiapp.v1.NotificationTemplateService/GetNotificationTemplateCount',
        $argument,
        ['\Keyapis\Multiapp\V1\GetNotificationTemplateCountResponse', 'decode'],
        $metadata, $options);
    }

    /**
     * Метод создания связи шаблона уведомления и партнера.
     * Метод доступен для: admin, manager, service
     * @param \Keyapis\Multiapp\V1\PutNotificationTemplatePartnerAttachRequest $argument input argument
     * @param array $metadata metadata
     * @param array $options call options
     * @return \Grpc\UnaryCall
     */
    public function PutNotificationTemplatePartnerAttach(\Keyapis\Multiapp\V1\PutNotificationTemplatePartnerAttachRequest $argument,
      $metadata = [], $options = []) {
        return $this->_simpleRequest('/keyapis.multiapp.v1.NotificationTemplateService/PutNotificationTemplatePartnerAttach',
        $argument,
        ['\Keyapis\Multiapp\V1\PutNotificationTemplatePartnerAttachResponse', 'decode'],
        $metadata, $options);
    }

    /**
     * Метод удаления связи шаблона уведомления и партнера.
     * Метод доступен для: admin, manager, service
     * @param \Keyapis\Multiapp\V1\PutNotificationTemplatePartnerDetachRequest $argument input argument
     * @param array $metadata metadata
     * @param array $options call options
     * @return \Grpc\UnaryCall
     */
    public function PutNotificationTemplatePartnerDetach(\Keyapis\Multiapp\V1\PutNotificationTemplatePartnerDetachRequest $argument,
      $metadata = [], $options = []) {
        return $this->_simpleRequest('/keyapis.multiapp.v1.NotificationTemplateService/PutNotificationTemplatePartnerDetach',
        $argument,
        ['\Keyapis\Multiapp\V1\PutNotificationTemplatePartnerDetachResponse', 'decode'],
        $metadata, $options);
    }

}
