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

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

/**
 * Сервис управления коллекциями камер
 */
class CameraCollectionServiceClient 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 возвращаются только коллекции камер c COMPANY_ID из токена.
     * Метод доступен для: admin, service, bti, owner, employee
     * @param \Keyapis\Vc\V1\GetCameraCollectionRequest $argument input argument
     * @param array $metadata metadata
     * @param array $options call options
     * @return \Grpc\UnaryCall
     */
    public function GetCameraCollection(\Keyapis\Vc\V1\GetCameraCollectionRequest $argument,
      $metadata = [], $options = []) {
        return $this->_simpleRequest('/keyapis.vc.v1.CameraCollectionService/GetCameraCollection',
        $argument,
        ['\Keyapis\Vc\V1\GetCameraCollectionResponse', 'decode'],
        $metadata, $options);
    }

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

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

    /**
     * Метод создания и изменения коллекции камер.
     * При изменении коллекции массив external_camera_ids заменяется полностью.
     * Для owner, employee сравнивается COMPANY_ID из токена и company_id коллекции, при несовпадении ошибка доступа.
     * Метод доступен для: admin, service, bti, owner, employee
     * @param \Keyapis\Vc\V1\SaveCameraCollectionRequest $argument input argument
     * @param array $metadata metadata
     * @param array $options call options
     * @return \Grpc\UnaryCall
     */
    public function SaveCameraCollection(\Keyapis\Vc\V1\SaveCameraCollectionRequest $argument,
      $metadata = [], $options = []) {
        return $this->_simpleRequest('/keyapis.vc.v1.CameraCollectionService/SaveCameraCollection',
        $argument,
        ['\Keyapis\Vc\V1\SaveCameraCollectionResponse', 'decode'],
        $metadata, $options);
    }

    /**
     * Метод удаления коллекции камер.
     * Проставляет в поле deleted_at текущую дату.
     * Для owner, employee сравнивается COMPANY_ID из токена и company_id коллекции, при несовпадении ошибка доступа.
     * Метод доступен для: admin, service, bti, owner, employee
     * @param \Keyapis\Vc\V1\DeleteCameraCollectionRequest $argument input argument
     * @param array $metadata metadata
     * @param array $options call options
     * @return \Grpc\UnaryCall
     */
    public function DeleteCameraCollection(\Keyapis\Vc\V1\DeleteCameraCollectionRequest $argument,
      $metadata = [], $options = []) {
        return $this->_simpleRequest('/keyapis.vc.v1.CameraCollectionService/DeleteCameraCollection',
        $argument,
        ['\Keyapis\Vc\V1\DeleteCameraCollectionResponse', 'decode'],
        $metadata, $options);
    }

    /**
     * Метод восстановления удаленной коллекции камер.
     * Проставляет null в поле deleted_at.
     * Для owner, employee сравнивается COMPANY_ID из токена и company_id коллекции, при несовпадении ошибка доступа.
     * Метод доступен для: admin, service, bti, owner, employee
     * @param \Keyapis\Vc\V1\PostCameraCollectionRestoreRequest $argument input argument
     * @param array $metadata metadata
     * @param array $options call options
     * @return \Grpc\UnaryCall
     */
    public function PostCameraCollectionRestore(\Keyapis\Vc\V1\PostCameraCollectionRestoreRequest $argument,
      $metadata = [], $options = []) {
        return $this->_simpleRequest('/keyapis.vc.v1.CameraCollectionService/PostCameraCollectionRestore',
        $argument,
        ['\Keyapis\Vc\V1\PostCameraCollectionRestoreResponse', 'decode'],
        $metadata, $options);
    }

}
