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

// Original file comments:
//
// Сервис работы с камерами
namespace Keyapis\Vc\V1;

/**
 * Сервис работы с камерами
 */
class CameraServiceClient 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, owner, employee
     * @param \Keyapis\Vc\V1\GetCameraRoomCountRequest $argument input argument
     * @param array $metadata metadata
     * @param array $options call options
     * @return \Grpc\UnaryCall
     */
    public function GetCameraRoomCount(\Keyapis\Vc\V1\GetCameraRoomCountRequest $argument,
      $metadata = [], $options = []) {
        return $this->_simpleRequest('/keyapis.vc.v1.CameraService/GetCameraRoomCount',
        $argument,
        ['\Keyapis\Vc\V1\GetCameraRoomCountResponse', 'decode'],
        $metadata, $options);
    }

    /**
     * Метод получения списка связей камеры и квартиры.
     * Метод доступен для: admin, service, bti, owner, employee
     * @param \Keyapis\Vc\V1\GetCameraRoomListRequest $argument input argument
     * @param array $metadata metadata
     * @param array $options call options
     * @return \Grpc\ServerStreamingCall
     */
    public function GetCameraRoomList(\Keyapis\Vc\V1\GetCameraRoomListRequest $argument,
      $metadata = [], $options = []) {
        return $this->_serverStreamRequest('/keyapis.vc.v1.CameraService/GetCameraRoomList',
        $argument,
        ['\Keyapis\Vc\V1\GetCameraRoomListResponse', 'decode'],
        $metadata, $options);
    }

    /**
     * Метод получения камеры.
     * Для owner, employee параметр scope.vc_company_id подставляется из токена.
     * Метод доступен для: admin, service, bti, ltp_first, owner, employee
     * @param \Keyapis\Vc\V1\GetCameraRequest $argument input argument
     * @param array $metadata metadata
     * @param array $options call options
     * @return \Grpc\UnaryCall
     */
    public function GetCamera(\Keyapis\Vc\V1\GetCameraRequest $argument,
      $metadata = [], $options = []) {
        return $this->_simpleRequest('/keyapis.vc.v1.CameraService/GetCamera',
        $argument,
        ['\Keyapis\Vc\V1\GetCameraResponse', 'decode'],
        $metadata, $options);
    }

    /**
     * Метод получения списка камер.
     * Для owner, employee параметр scope.vc_company_id подставляется из токена.
     * Метод доступен для: admin, service, bti, ltp_first, owner, employee
     * @param \Keyapis\Vc\V1\GetCameraListRequest $argument input argument
     * @param array $metadata metadata
     * @param array $options call options
     * @return \Grpc\UnaryCall
     */
    public function GetCameraList(\Keyapis\Vc\V1\GetCameraListRequest $argument,
      $metadata = [], $options = []) {
        return $this->_simpleRequest('/keyapis.vc.v1.CameraService/GetCameraList',
        $argument,
        ['\Keyapis\Vc\V1\GetCameraListResponse', 'decode'],
        $metadata, $options);
    }

    /**
     * Метод получения RTSP-ссылки по идентификатору камеры в vcfront.
     * Метод доступен для: admin, service.
     * Метод доступен для: ApiKey
     * @param \Keyapis\Vc\V1\GetCameraRtspUrlExternalIdRequest $argument input argument
     * @param array $metadata metadata
     * @param array $options call options
     * @return \Grpc\UnaryCall
     */
    public function GetCameraRtspUrlExternalId(\Keyapis\Vc\V1\GetCameraRtspUrlExternalIdRequest $argument,
      $metadata = [], $options = []) {
        return $this->_simpleRequest('/keyapis.vc.v1.CameraService/GetCameraRtspUrlExternalId',
        $argument,
        ['\Keyapis\Vc\V1\GetCameraRtspUrlExternalIdResponse', 'decode'],
        $metadata, $options);
    }

    /**
     * Метод привязки камеры и квартиры.
     * Метод доступен для: admin, service, bti, owner, employee
     * @param \Keyapis\Vc\V1\PutCameraRoomAttachRequest $argument input argument
     * @param array $metadata metadata
     * @param array $options call options
     * @return \Grpc\UnaryCall
     */
    public function PutCameraRoomAttach(\Keyapis\Vc\V1\PutCameraRoomAttachRequest $argument,
      $metadata = [], $options = []) {
        return $this->_simpleRequest('/keyapis.vc.v1.CameraService/PutCameraRoomAttach',
        $argument,
        ['\Keyapis\Vc\V1\PutCameraRoomAttachResponse', 'decode'],
        $metadata, $options);
    }

    /**
     * Метод отвязки камеры и квартиры.
     * Метод доступен для: admin, service, bti, owner, employee
     * @param \Keyapis\Vc\V1\PutCameraRoomDetachRequest $argument input argument
     * @param array $metadata metadata
     * @param array $options call options
     * @return \Grpc\UnaryCall
     */
    public function PutCameraRoomDetach(\Keyapis\Vc\V1\PutCameraRoomDetachRequest $argument,
      $metadata = [], $options = []) {
        return $this->_simpleRequest('/keyapis.vc.v1.CameraService/PutCameraRoomDetach',
        $argument,
        ['\Keyapis\Vc\V1\PutCameraRoomDetachResponse', 'decode'],
        $metadata, $options);
    }

    /**
     * Метод пакетной привязки камер и квартир.
     * Метод доступен для: admin, service, bti, owner, employee
     * @param \Keyapis\Vc\V1\PutCameraRoomAttachListRequest $argument input argument
     * @param array $metadata metadata
     * @param array $options call options
     * @return \Grpc\UnaryCall
     */
    public function PutCameraRoomAttachList(\Keyapis\Vc\V1\PutCameraRoomAttachListRequest $argument,
      $metadata = [], $options = []) {
        return $this->_simpleRequest('/keyapis.vc.v1.CameraService/PutCameraRoomAttachList',
        $argument,
        ['\Keyapis\Vc\V1\PutCameraRoomAttachListResponse', 'decode'],
        $metadata, $options);
    }

    /**
     * Метод пакетной отвязки камер и квартир.
     * Метод доступен для: admin, service, bti, owner, employee
     * @param \Keyapis\Vc\V1\PutCameraRoomDetachListRequest $argument input argument
     * @param array $metadata metadata
     * @param array $options call options
     * @return \Grpc\UnaryCall
     */
    public function PutCameraRoomDetachList(\Keyapis\Vc\V1\PutCameraRoomDetachListRequest $argument,
      $metadata = [], $options = []) {
        return $this->_simpleRequest('/keyapis.vc.v1.CameraService/PutCameraRoomDetachList',
        $argument,
        ['\Keyapis\Vc\V1\PutCameraRoomDetachListResponse', 'decode'],
        $metadata, $options);
    }

    /**
     * Метод удаления камеры.
     * Метод доступен для: admin, service, bti
     * @param \Keyapis\Vc\V1\DeleteCameraRequest $argument input argument
     * @param array $metadata metadata
     * @param array $options call options
     * @return \Grpc\UnaryCall
     */
    public function DeleteCamera(\Keyapis\Vc\V1\DeleteCameraRequest $argument,
      $metadata = [], $options = []) {
        return $this->_simpleRequest('/keyapis.vc.v1.CameraService/DeleteCamera',
        $argument,
        ['\Keyapis\Vc\V1\DeleteCameraResponse', 'decode'],
        $metadata, $options);
    }

    /**
     * Метод создания камеры.
     * Метод доступен для: admin, service, bti
     * @param \Keyapis\Vc\V1\PostCameraRequest $argument input argument
     * @param array $metadata metadata
     * @param array $options call options
     * @return \Grpc\UnaryCall
     */
    public function PostCamera(\Keyapis\Vc\V1\PostCameraRequest $argument,
      $metadata = [], $options = []) {
        return $this->_simpleRequest('/keyapis.vc.v1.CameraService/PostCamera',
        $argument,
        ['\Keyapis\Vc\V1\PostCameraResponse', 'decode'],
        $metadata, $options);
    }

    /**
     * Метод получения дней, когда доступны записи.
     * Метод доступен для: admin, service, owner, company, master.
     * Для ролей типа owner, company, master необходимо сделать проверку на доступность камеры этому пользователю
     * @param \Keyapis\Vc\V1\GetCameraCalendarRequest $argument input argument
     * @param array $metadata metadata
     * @param array $options call options
     * @return \Grpc\UnaryCall
     */
    public function GetCameraCalendar(\Keyapis\Vc\V1\GetCameraCalendarRequest $argument,
      $metadata = [], $options = []) {
        return $this->_simpleRequest('/keyapis.vc.v1.CameraService/GetCameraCalendar',
        $argument,
        ['\Keyapis\Vc\V1\GetCameraCalendarResponse', 'decode'],
        $metadata, $options);
    }

    /**
     * Метод получения интервалов, когда доступны записи.
     * Метод доступен для: admin, service, owner, company, master.
     * Для ролей типа owner, company, master необходимо сделать проверку на доступность камеры этому пользователю
     * @param \Keyapis\Vc\V1\GetCameraIntervalsRequest $argument input argument
     * @param array $metadata metadata
     * @param array $options call options
     * @return \Grpc\UnaryCall
     */
    public function GetCameraIntervals(\Keyapis\Vc\V1\GetCameraIntervalsRequest $argument,
      $metadata = [], $options = []) {
        return $this->_simpleRequest('/keyapis.vc.v1.CameraService/GetCameraIntervals',
        $argument,
        ['\Keyapis\Vc\V1\GetCameraIntervalsResponse', 'decode'],
        $metadata, $options);
    }

}
