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

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

/**
 * Сервис управления партнерами  для суперапа
 */
class PartnerServiceClient 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);
    }

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

    /**
     * Метод получения партнера.
     * Метод доступен для: admin, manager, service, ltp_first
     * @param \Keyapis\Multiapp\V1\GetPartnerRequest $argument input argument
     * @param array $metadata metadata
     * @param array $options call options
     * @return \Grpc\UnaryCall
     */
    public function GetPartner(\Keyapis\Multiapp\V1\GetPartnerRequest $argument,
      $metadata = [], $options = []) {
        return $this->_simpleRequest('/keyapis.multiapp.v1.PartnerService/GetPartner',
        $argument,
        ['\Keyapis\Multiapp\V1\GetPartnerResponse', 'decode'],
        $metadata, $options);
    }

    /**
     * Метод получения списка партнеров.
     * Метод доступен для: admin, manager, service, ltp_first
     * @param \Keyapis\Multiapp\V1\GetPartnerListRequest $argument input argument
     * @param array $metadata metadata
     * @param array $options call options
     * @return \Grpc\ServerStreamingCall
     */
    public function GetPartnerList(\Keyapis\Multiapp\V1\GetPartnerListRequest $argument,
      $metadata = [], $options = []) {
        return $this->_serverStreamRequest('/keyapis.multiapp.v1.PartnerService/GetPartnerList',
        $argument,
        ['\Keyapis\Multiapp\V1\GetPartnerListResponse', 'decode'],
        $metadata, $options);
    }

    /**
     * Метод получения количества партнеров.
     * Метод доступен для: admin, manager, service, ltp_first
     * @param \Keyapis\Multiapp\V1\GetPartnerCountRequest $argument input argument
     * @param array $metadata metadata
     * @param array $options call options
     * @return \Grpc\UnaryCall
     */
    public function GetPartnerCount(\Keyapis\Multiapp\V1\GetPartnerCountRequest $argument,
      $metadata = [], $options = []) {
        return $this->_simpleRequest('/keyapis.multiapp.v1.PartnerService/GetPartnerCount',
        $argument,
        ['\Keyapis\Multiapp\V1\GetPartnerCountResponse', 'decode'],
        $metadata, $options);
    }

    /**
     * Метод получения токена.
     * Access токен возможно получить только для пользователей с типом master в статусе active, demo и new.
     * Логика работы метода: https://confluence.rt.ru/pages/viewpage.action?pageId=664695865.
     * Не требует авторизации
     * @param \Keyapis\Multiapp\V1\GetPartnerTokenRequest $argument input argument
     * @param array $metadata metadata
     * @param array $options call options
     * @return \Grpc\UnaryCall
     */
    public function GetPartnerToken(\Keyapis\Multiapp\V1\GetPartnerTokenRequest $argument,
      $metadata = [], $options = []) {
        return $this->_simpleRequest('/keyapis.multiapp.v1.PartnerService/GetPartnerToken',
        $argument,
        ['\Keyapis\Multiapp\V1\GetPartnerTokenResponse', 'decode'],
        $metadata, $options);
    }

    /**
     * Метод обновления публичного ключа партнёра.
     * Поддерживает создание и обновление.
     * Метод доступен для: partner.
     * Требует передачи аутентификационного ключа в заголовке X-API-KEY.
     * Сценарий использования метода: https://confluence.rt.ru/pages/viewpage.action?pageId=664695525
     * @param \Keyapis\Multiapp\V1\PostPartnerPublicKeyRequest $argument input argument
     * @param array $metadata metadata
     * @param array $options call options
     * @return \Grpc\UnaryCall
     */
    public function PostPartnerPublicKey(\Keyapis\Multiapp\V1\PostPartnerPublicKeyRequest $argument,
      $metadata = [], $options = []) {
        return $this->_simpleRequest('/keyapis.multiapp.v1.PartnerService/PostPartnerPublicKey',
        $argument,
        ['\Keyapis\Multiapp\V1\PostPartnerPublicKeyResponse', 'decode'],
        $metadata, $options);
    }

    /**
     * Метод удаления партнёра.
     * Сценарий использования метода: https://confluence.rt.ru/pages/viewpage.action?pageId=804302306.
     * Метод доступен для: admin, manager, service
     * @param \Keyapis\Multiapp\V1\DeletePartnerRequest $argument input argument
     * @param array $metadata metadata
     * @param array $options call options
     * @return \Grpc\UnaryCall
     */
    public function DeletePartner(\Keyapis\Multiapp\V1\DeletePartnerRequest $argument,
      $metadata = [], $options = []) {
        return $this->_simpleRequest('/keyapis.multiapp.v1.PartnerService/DeletePartner',
        $argument,
        ['\Keyapis\Multiapp\V1\DeletePartnerResponse', 'decode'],
        $metadata, $options);
    }

    /**
     * Метод получения адреса дома по ОРПОНу.
     * Адресная строка должны быть в формате "{Регион}, {Город}, {Улица}, {Дом}, {Строение}".
     * Партнер может получить адрес только по доступному ему ОРПОНу.
     * Доступные ОРПОНы для партнера может получить через привязанные app в поле app_tags и user_tags.
     * Метод доступен для: admin, manager, service, partner.
     * Роль partner определяется по наличию заголовка X-API-KEY вместо Authorization
     * @param \Keyapis\Multiapp\V1\GetPartnerAddressOrponRequest $argument input argument
     * @param array $metadata metadata
     * @param array $options call options
     * @return \Grpc\UnaryCall
     */
    public function GetPartnerAddressOrpon(\Keyapis\Multiapp\V1\GetPartnerAddressOrponRequest $argument,
      $metadata = [], $options = []) {
        return $this->_simpleRequest('/keyapis.multiapp.v1.PartnerService/GetPartnerAddressOrpon',
        $argument,
        ['\Keyapis\Multiapp\V1\GetPartnerAddressOrponResponse', 'decode'],
        $metadata, $options);
    }

}
