<?php
# Generated by the protocol buffer compiler.  DO NOT EDIT! (protoc-gen-twirp_php 0.15.0)
# source: livekit_egress.proto

declare(strict_types=1);

namespace Livekit;

/**
 *
 *
 * Generated from protobuf service <code>livekit.Egress</code>
 */
interface Egress
{
    /**
     * start recording or streaming a room, participant, or tracks
     *
     * Generated from protobuf method <code>livekit.Egress/StartRoomCompositeEgress</code>
     *
     * @throws \Twirp\Error
     */
    public function StartRoomCompositeEgress(array $ctx, \Livekit\RoomCompositeEgressRequest $req): \Livekit\EgressInfo;

    /**
     *
     *
     * Generated from protobuf method <code>livekit.Egress/StartWebEgress</code>
     *
     * @throws \Twirp\Error
     */
    public function StartWebEgress(array $ctx, \Livekit\WebEgressRequest $req): \Livekit\EgressInfo;

    /**
     *
     *
     * Generated from protobuf method <code>livekit.Egress/StartParticipantEgress</code>
     *
     * @throws \Twirp\Error
     */
    public function StartParticipantEgress(array $ctx, \Livekit\ParticipantEgressRequest $req): \Livekit\EgressInfo;

    /**
     *
     *
     * Generated from protobuf method <code>livekit.Egress/StartTrackCompositeEgress</code>
     *
     * @throws \Twirp\Error
     */
    public function StartTrackCompositeEgress(array $ctx, \Livekit\TrackCompositeEgressRequest $req): \Livekit\EgressInfo;

    /**
     *
     *
     * Generated from protobuf method <code>livekit.Egress/StartTrackEgress</code>
     *
     * @throws \Twirp\Error
     */
    public function StartTrackEgress(array $ctx, \Livekit\TrackEgressRequest $req): \Livekit\EgressInfo;

    /**
     * update web composite layout
     *
     * Generated from protobuf method <code>livekit.Egress/UpdateLayout</code>
     *
     * @throws \Twirp\Error
     */
    public function UpdateLayout(array $ctx, \Livekit\UpdateLayoutRequest $req): \Livekit\EgressInfo;

    /**
     * add or remove stream endpoints
     *
     * Generated from protobuf method <code>livekit.Egress/UpdateStream</code>
     *
     * @throws \Twirp\Error
     */
    public function UpdateStream(array $ctx, \Livekit\UpdateStreamRequest $req): \Livekit\EgressInfo;

    /**
     * list available egress
     *
     * Generated from protobuf method <code>livekit.Egress/ListEgress</code>
     *
     * @throws \Twirp\Error
     */
    public function ListEgress(array $ctx, \Livekit\ListEgressRequest $req): \Livekit\ListEgressResponse;

    /**
     * stop a recording or stream
     *
     * Generated from protobuf method <code>livekit.Egress/StopEgress</code>
     *
     * @throws \Twirp\Error
     */
    public function StopEgress(array $ctx, \Livekit\StopEgressRequest $req): \Livekit\EgressInfo;
}
