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

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

/**
 * Сервис зон доступа
 */
class AccessZoneServiceClient 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);
    }

    /**
     * Метод сохранения зоны доступа.
     * Поддерживает создание и обновление.
     * Для пользователей типов owner, employee можно создать и редактировать зону доступа только в квартирограмме, относящейся к компании пользователя.
     * Метод доступен для: admin, service, bti, ltp_first, device_admin, manager, owner, employee
     * @param \Keyapis\AccessControl\V1\PostAccessZoneRequest $argument input argument
     * @param array $metadata metadata
     * @param array $options call options
     * @return \Grpc\UnaryCall
     */
    public function PostAccessZone(\Keyapis\AccessControl\V1\PostAccessZoneRequest $argument,
      $metadata = [], $options = []) {
        return $this->_simpleRequest('/keyapis.access_control.v1.AccessZoneService/PostAccessZone',
        $argument,
        ['\Keyapis\AccessControl\V1\PostAccessZoneResponse', 'decode'],
        $metadata, $options);
    }

    /**
     * Метод получения зоны доступа по идентификатору.
     * Для пользователей типов owner, employee возвращаются только зоны доступа, относящиеся к компании пользователя.
     * Метод доступен для: admin, service, bti, ltp_first, device_admin, manager, owner, employee
     * @param \Keyapis\AccessControl\V1\GetAccessZoneRequest $argument input argument
     * @param array $metadata metadata
     * @param array $options call options
     * @return \Grpc\UnaryCall
     */
    public function GetAccessZone(\Keyapis\AccessControl\V1\GetAccessZoneRequest $argument,
      $metadata = [], $options = []) {
        return $this->_simpleRequest('/keyapis.access_control.v1.AccessZoneService/GetAccessZone',
        $argument,
        ['\Keyapis\AccessControl\V1\GetAccessZoneResponse', 'decode'],
        $metadata, $options);
    }

    /**
     * Метод получения списка зон доступа.
     * Для пользователей типов owner, employee возвращаются только зоны доступа, относящиеся к компании пользователя.
     * Метод доступен для: admin, service, bti, ltp_first, device_admin, manager, owner, employee
     * @param \Keyapis\AccessControl\V1\GetAccessZoneListRequest $argument input argument
     * @param array $metadata metadata
     * @param array $options call options
     * @return \Grpc\ServerStreamingCall
     */
    public function GetAccessZoneList(\Keyapis\AccessControl\V1\GetAccessZoneListRequest $argument,
      $metadata = [], $options = []) {
        return $this->_serverStreamRequest('/keyapis.access_control.v1.AccessZoneService/GetAccessZoneList',
        $argument,
        ['\Keyapis\AccessControl\V1\GetAccessZoneListResponse', 'decode'],
        $metadata, $options);
    }

    /**
     * Метод получения количества зон доступа.
     * Для пользователей типов owner, employee возвращаются только зоны доступа, относящиеся к компании пользователя.
     * Метод доступен для: admin, service, bti, ltp_first, device_admin, manager, owner, employee
     * @param \Keyapis\AccessControl\V1\GetAccessZoneCountRequest $argument input argument
     * @param array $metadata metadata
     * @param array $options call options
     * @return \Grpc\UnaryCall
     */
    public function GetAccessZoneCount(\Keyapis\AccessControl\V1\GetAccessZoneCountRequest $argument,
      $metadata = [], $options = []) {
        return $this->_simpleRequest('/keyapis.access_control.v1.AccessZoneService/GetAccessZoneCount',
        $argument,
        ['\Keyapis\AccessControl\V1\GetAccessZoneCountResponse', 'decode'],
        $metadata, $options);
    }

    /**
     * Метод архивации зоны доступа.
     * Для пользователей типов owner, employee доступны к архивации только зоны доступа, относящиеся к компании пользователя.
     * Метод доступен для: admin, service, bti, ltp_first, device_admin, manager, owner, employee
     * @param \Keyapis\AccessControl\V1\DeleteAccessZoneRequest $argument input argument
     * @param array $metadata metadata
     * @param array $options call options
     * @return \Grpc\UnaryCall
     */
    public function DeleteAccessZone(\Keyapis\AccessControl\V1\DeleteAccessZoneRequest $argument,
      $metadata = [], $options = []) {
        return $this->_simpleRequest('/keyapis.access_control.v1.AccessZoneService/DeleteAccessZone',
        $argument,
        ['\Keyapis\AccessControl\V1\DeleteAccessZoneResponse', 'decode'],
        $metadata, $options);
    }

    /**
     * Метод разархивации зоны доступа по идентификатору.
     * Для пользователей типов owner, employee доступны к разархивации только зоны доступа, относящиеся к компании пользователя.
     * Метод доступен для: admin, service, bti, ltp_first, device_admin, manager, owner, employee
     * @param \Keyapis\AccessControl\V1\PostAccessZoneRestoreRequest $argument input argument
     * @param array $metadata metadata
     * @param array $options call options
     * @return \Grpc\UnaryCall
     */
    public function PostAccessZoneRestore(\Keyapis\AccessControl\V1\PostAccessZoneRestoreRequest $argument,
      $metadata = [], $options = []) {
        return $this->_simpleRequest('/keyapis.access_control.v1.AccessZoneService/PostAccessZoneRestore',
        $argument,
        ['\Keyapis\AccessControl\V1\PostAccessZoneRestoreResponse', 'decode'],
        $metadata, $options);
    }

}
