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

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

/**
 * Сервис точек доступа
 */
class AccessPointServiceClient 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, service, bti
     * @param \Keyapis\AccessControl\V1\PostAccessPointRequest $argument input argument
     * @param array $metadata metadata
     * @param array $options call options
     * @return \Grpc\UnaryCall
     */
    public function PostAccessPoint(\Keyapis\AccessControl\V1\PostAccessPointRequest $argument,
      $metadata = [], $options = []) {
        return $this->_simpleRequest('/keyapis.access_control.v1.AccessPointService/PostAccessPoint',
        $argument,
        ['\Keyapis\AccessControl\V1\PostAccessPointResponse', 'decode'],
        $metadata, $options);
    }

    /**
     * Метод получения точки доступа по идентификатору.
     * Метод доступен для: admin, service, bti.
     * Метод доступен для: ApiKey
     * @param \Keyapis\AccessControl\V1\GetAccessPointRequest $argument input argument
     * @param array $metadata metadata
     * @param array $options call options
     * @return \Grpc\UnaryCall
     */
    public function GetAccessPoint(\Keyapis\AccessControl\V1\GetAccessPointRequest $argument,
      $metadata = [], $options = []) {
        return $this->_simpleRequest('/keyapis.access_control.v1.AccessPointService/GetAccessPoint',
        $argument,
        ['\Keyapis\AccessControl\V1\GetAccessPointResponse', 'decode'],
        $metadata, $options);
    }

    /**
     * Метод получения списка точек доступа.
     * Метод доступен для: admin, service, bti.
     * Метод доступен для: ApiKey
     * @param \Keyapis\AccessControl\V1\GetAccessPointListRequest $argument input argument
     * @param array $metadata metadata
     * @param array $options call options
     * @return \Grpc\ServerStreamingCall
     */
    public function GetAccessPointList(\Keyapis\AccessControl\V1\GetAccessPointListRequest $argument,
      $metadata = [], $options = []) {
        return $this->_serverStreamRequest('/keyapis.access_control.v1.AccessPointService/GetAccessPointList',
        $argument,
        ['\Keyapis\AccessControl\V1\GetAccessPointListResponse', 'decode'],
        $metadata, $options);
    }

    /**
     * Метод получения количества точек доступа.
     * Метод доступен для: admin, service, bti.
     * Метод доступен для: ApiKey
     * @param \Keyapis\AccessControl\V1\GetAccessPointCountRequest $argument input argument
     * @param array $metadata metadata
     * @param array $options call options
     * @return \Grpc\UnaryCall
     */
    public function GetAccessPointCount(\Keyapis\AccessControl\V1\GetAccessPointCountRequest $argument,
      $metadata = [], $options = []) {
        return $this->_simpleRequest('/keyapis.access_control.v1.AccessPointService/GetAccessPointCount',
        $argument,
        ['\Keyapis\AccessControl\V1\GetAccessPointCountResponse', 'decode'],
        $metadata, $options);
    }

    /**
     * Метод удаления точки доступа.
     * Метод доступен для: admin, service, bti
     * @param \Keyapis\AccessControl\V1\DeleteAccessPointRequest $argument input argument
     * @param array $metadata metadata
     * @param array $options call options
     * @return \Grpc\UnaryCall
     */
    public function DeleteAccessPoint(\Keyapis\AccessControl\V1\DeleteAccessPointRequest $argument,
      $metadata = [], $options = []) {
        return $this->_simpleRequest('/keyapis.access_control.v1.AccessPointService/DeleteAccessPoint',
        $argument,
        ['\Keyapis\AccessControl\V1\DeleteAccessPointResponse', 'decode'],
        $metadata, $options);
    }

    /**
     * Метод открытия точки доступа.
     * Метод доступен для: admin, service, bti.
     * Метод доступен для: ApiKey
     * @param \Keyapis\AccessControl\V1\PostAccessPointOpenRequest $argument input argument
     * @param array $metadata metadata
     * @param array $options call options
     * @return \Grpc\UnaryCall
     */
    public function PostAccessPointOpen(\Keyapis\AccessControl\V1\PostAccessPointOpenRequest $argument,
      $metadata = [], $options = []) {
        return $this->_simpleRequest('/keyapis.access_control.v1.AccessPointService/PostAccessPointOpen',
        $argument,
        ['\Keyapis\AccessControl\V1\PostAccessPointOpenResponse', 'decode'],
        $metadata, $options);
    }

}
