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

// Original file comments:
//
// Сервис реализует функционал управления пуш-токенами устройств.
// Используется как отдельное хранилихе пуш токенов, на первом этапе будет хранить только PWA токены
namespace Keyapis\Notification\V1;

/**
 * Сервис пуш-токенов устройств
 */
class PushTokenServiceClient 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);
    }

    /**
     * Метод сохранения пуш-токенов.
     * Поддерживает создание и обновление.
     * Метод доступен для: admin, master, employee, owner, service, application(notification:edit).
     * Для ролей master, employee, owner можно сохранять только собственные пуш-токены.
     * Для ролей admin, service доступны все пуш-токены
     * @param \Keyapis\Notification\V1\PostPushTokenRequest $argument input argument
     * @param array $metadata metadata
     * @param array $options call options
     * @return \Grpc\UnaryCall
     */
    public function PostPushToken(\Keyapis\Notification\V1\PostPushTokenRequest $argument,
      $metadata = [], $options = []) {
        return $this->_simpleRequest('/keyapis.notification.v1.PushTokenService/PostPushToken',
        $argument,
        ['\Keyapis\Notification\V1\PostPushTokenResponse', 'decode'],
        $metadata, $options);
    }

    /**
     * Метод получения пуш-токенов.
     * Метод доступен для: admin, master, employee, owner, service, application(notification:read или notification:edit).
     * Для ролей master, employee, owner можно просматривать только собственные пуш-токены.
     * Для ролей admin, service доступны все пуш-токены
     * @param \Keyapis\Notification\V1\GetPushTokenListRequest $argument input argument
     * @param array $metadata metadata
     * @param array $options call options
     * @return \Grpc\ServerStreamingCall
     */
    public function GetPushTokenList(\Keyapis\Notification\V1\GetPushTokenListRequest $argument,
      $metadata = [], $options = []) {
        return $this->_serverStreamRequest('/keyapis.notification.v1.PushTokenService/GetPushTokenList',
        $argument,
        ['\Keyapis\Notification\V1\GetPushTokenListResponse', 'decode'],
        $metadata, $options);
    }

    /**
     * Метод получения количества пуш-токенов.
     * Метод доступен для: admin, master, employee, owner, service, application(notification:read или notification:edit).
     * Для ролей master, employee, owner можно просматривать только собственные пуш-токены.
     * Для ролей admin, service доступны все пуш-токены
     * @param \Keyapis\Notification\V1\GetPushTokenCountRequest $argument input argument
     * @param array $metadata metadata
     * @param array $options call options
     * @return \Grpc\UnaryCall
     */
    public function GetPushTokenCount(\Keyapis\Notification\V1\GetPushTokenCountRequest $argument,
      $metadata = [], $options = []) {
        return $this->_simpleRequest('/keyapis.notification.v1.PushTokenService/GetPushTokenCount',
        $argument,
        ['\Keyapis\Notification\V1\GetPushTokenCountResponse', 'decode'],
        $metadata, $options);
    }

    /**
     * Метод удаления пуш-токена.
     * Метод доступен для: admin, master, employee, owner, service, application(notification:edit).
     * Для ролей master, employee, owner можно удалять только собственные пуш-токены.
     * Для ролей admin, service можно удалять все пуш-токены
     * @param \Keyapis\Notification\V1\DeletePushTokenRequest $argument input argument
     * @param array $metadata metadata
     * @param array $options call options
     * @return \Grpc\UnaryCall
     */
    public function DeletePushToken(\Keyapis\Notification\V1\DeletePushTokenRequest $argument,
      $metadata = [], $options = []) {
        return $this->_simpleRequest('/keyapis.notification.v1.PushTokenService/DeletePushToken',
        $argument,
        ['\Keyapis\Notification\V1\DeletePushTokenResponse', 'decode'],
        $metadata, $options);
    }

    /**
     * Метод удаления пуш-токена по идентификатору устройства пользователя.
     * Метод доступен для: admin, master, employee, owner, service, application(notification:edit).
     * Для ролей master, employee, owner можно удалять только собственные пуш-токены.
     * Для ролей admin, service можно удалять все пуш-токены
     * @param \Keyapis\Notification\V1\DeletePushTokenUserAppIdRequest $argument input argument
     * @param array $metadata metadata
     * @param array $options call options
     * @return \Grpc\UnaryCall
     */
    public function DeletePushTokenUserAppId(\Keyapis\Notification\V1\DeletePushTokenUserAppIdRequest $argument,
      $metadata = [], $options = []) {
        return $this->_simpleRequest('/keyapis.notification.v1.PushTokenService/DeletePushTokenUserAppId',
        $argument,
        ['\Keyapis\Notification\V1\DeletePushTokenUserAppIdResponse', 'decode'],
        $metadata, $options);
    }

    /**
     * Метод удаления пуш-токенов по идентификатору пользователя.
     * Метод доступен для: admin, master, employee, owner, service, application(notification:edit).
     * Для ролей master, employee, owner можно удалять только собственные пуш-токены.
     * Для ролей admin, service можно удалять все пуш-токены
     * @param \Keyapis\Notification\V1\DeletePushTokenUserIdRequest $argument input argument
     * @param array $metadata metadata
     * @param array $options call options
     * @return \Grpc\UnaryCall
     */
    public function DeletePushTokenUserId(\Keyapis\Notification\V1\DeletePushTokenUserIdRequest $argument,
      $metadata = [], $options = []) {
        return $this->_simpleRequest('/keyapis.notification.v1.PushTokenService/DeletePushTokenUserId',
        $argument,
        ['\Keyapis\Notification\V1\DeletePushTokenUserIdResponse', 'decode'],
        $metadata, $options);
    }

}
