import { MessageType } from '@protobuf-ts/runtime';
import { Struct } from '../../../google/protobuf/struct';
import { Timestamp } from '../../../google/protobuf/timestamp';
/**
 * CallState is the current state of the call
 * as seen by an SFU.
 *
 * @generated from protobuf message stream.video.sfu.models.CallState
 */
export interface CallState {
    /**
     * participants is the list of participants in the call.
     * In large calls, the list could be truncated in which
     * case, the list of participants contains fewer participants
     * than the counts returned in participant_count. Anonymous
     * participants are **NOT** included in the list.
     *
     * @generated from protobuf field: repeated stream.video.sfu.models.Participant participants = 1;
     */
    participants: Participant[];
    /**
     * started_at is the time the call session actually started.
     *
     * @generated from protobuf field: google.protobuf.Timestamp started_at = 2;
     */
    startedAt?: Timestamp;
    /**
     * participant_count contains the summary of the counts.
     *
     * @generated from protobuf field: stream.video.sfu.models.ParticipantCount participant_count = 3;
     */
    participantCount?: ParticipantCount;
    /**
     * the list of pins in the call.
     * Pins are ordered in descending order (most important first).
     *
     * @generated from protobuf field: repeated stream.video.sfu.models.Pin pins = 4;
     */
    pins: Pin[];
}
/**
 * @generated from protobuf message stream.video.sfu.models.ParticipantCount
 */
export interface ParticipantCount {
    /**
     * Total number of participants in the call including
     * the anonymous participants.
     *
     * @generated from protobuf field: uint32 total = 1;
     */
    total: number;
    /**
     * Total number of anonymous participants in the call.
     *
     * @generated from protobuf field: uint32 anonymous = 2;
     */
    anonymous: number;
}
/**
 * @generated from protobuf message stream.video.sfu.models.Pin
 */
export interface Pin {
    /**
     * the user to pin
     *
     * @generated from protobuf field: string user_id = 1;
     */
    userId: string;
    /**
     * the user sesion_id to pin, if not provided, applies to all sessions
     *
     * @generated from protobuf field: string session_id = 2;
     */
    sessionId: string;
}
/**
 * those who are online in the call
 *
 * @generated from protobuf message stream.video.sfu.models.Participant
 */
export interface Participant {
    /**
     * @generated from protobuf field: string user_id = 1;
     */
    userId: string;
    /**
     * @generated from protobuf field: string session_id = 2;
     */
    sessionId: string;
    /**
     * map of track id to track type
     *
     * @generated from protobuf field: repeated stream.video.sfu.models.TrackType published_tracks = 3;
     */
    publishedTracks: TrackType[];
    /**
     * @generated from protobuf field: google.protobuf.Timestamp joined_at = 4;
     */
    joinedAt?: Timestamp;
    /**
     * @generated from protobuf field: string track_lookup_prefix = 5;
     */
    trackLookupPrefix: string;
    /**
     * @generated from protobuf field: stream.video.sfu.models.ConnectionQuality connection_quality = 6;
     */
    connectionQuality: ConnectionQuality;
    /**
     * @generated from protobuf field: bool is_speaking = 7;
     */
    isSpeaking: boolean;
    /**
     * @generated from protobuf field: bool is_dominant_speaker = 8;
     */
    isDominantSpeaker: boolean;
    /**
     * @generated from protobuf field: float audio_level = 9;
     */
    audioLevel: number;
    /**
     * @generated from protobuf field: string name = 10;
     */
    name: string;
    /**
     * @generated from protobuf field: string image = 11;
     */
    image: string;
    /**
     * @generated from protobuf field: google.protobuf.Struct custom = 12;
     */
    custom?: Struct;
    /**
     * @generated from protobuf field: repeated string roles = 13;
     */
    roles: string[];
    /**
     * @generated from protobuf field: stream.video.sfu.models.ParticipantSource source = 14;
     */
    source: ParticipantSource;
}
/**
 * @generated from protobuf message stream.video.sfu.models.StreamQuality
 */
export interface StreamQuality {
    /**
     * @generated from protobuf field: stream.video.sfu.models.VideoQuality video_quality = 1;
     */
    videoQuality: VideoQuality;
    /**
     * @generated from protobuf field: string user_id = 2;
     */
    userId: string;
}
/**
 * @generated from protobuf message stream.video.sfu.models.VideoDimension
 */
export interface VideoDimension {
    /**
     * @generated from protobuf field: uint32 width = 1;
     */
    width: number;
    /**
     * @generated from protobuf field: uint32 height = 2;
     */
    height: number;
}
/**
 * @generated from protobuf message stream.video.sfu.models.VideoLayer
 */
export interface VideoLayer {
    /**
     * for tracks with a single layer, this should be HIGH
     *
     * @generated from protobuf field: string rid = 1;
     */
    rid: string;
    /**
     * @generated from protobuf field: stream.video.sfu.models.VideoDimension video_dimension = 2;
     */
    videoDimension?: VideoDimension;
    /**
     * target bitrate, server will measure actual
     *
     * @generated from protobuf field: uint32 bitrate = 4;
     */
    bitrate: number;
    /**
     * @generated from protobuf field: uint32 fps = 5;
     */
    fps: number;
    /**
     * @generated from protobuf field: stream.video.sfu.models.VideoQuality quality = 6;
     */
    quality: VideoQuality;
}
/**
 * SubscribeOption represents the configuration options for subscribing to a track.
 *
 * @generated from protobuf message stream.video.sfu.models.SubscribeOption
 */
export interface SubscribeOption {
    /**
     * The type of the track being subscribed (e.g., video, screenshare).
     *
     * @generated from protobuf field: stream.video.sfu.models.TrackType track_type = 1;
     */
    trackType: TrackType;
    /**
     * The codecs supported by the subscriber for decoding tracks.
     *
     * @generated from protobuf field: repeated stream.video.sfu.models.Codec codecs = 2;
     */
    codecs: Codec[];
}
/**
 * PublishOption represents the configuration options for publishing a track.
 *
 * @generated from protobuf message stream.video.sfu.models.PublishOption
 */
export interface PublishOption {
    /**
     * The type of the track being published (e.g., video, screenshare).
     *
     * @generated from protobuf field: stream.video.sfu.models.TrackType track_type = 1;
     */
    trackType: TrackType;
    /**
     * The codec to be used for encoding the track (e.g., VP8, VP9, H264).
     *
     * @generated from protobuf field: stream.video.sfu.models.Codec codec = 2;
     */
    codec?: Codec;
    /**
     * The target bitrate for the published track, in bits per second.
     *
     * @generated from protobuf field: int32 bitrate = 3;
     */
    bitrate: number;
    /**
     * The target frames per second (FPS) for video encoding.
     *
     * @generated from protobuf field: int32 fps = 4;
     */
    fps: number;
    /**
     * The maximum number of spatial layers to send.
     * - For SVC (e.g., VP9), spatial layers downscale by a factor of 2:
     *   - 1 layer: full resolution
     *   - 2 layers: full resolution + half resolution
     *   - 3 layers: full resolution + half resolution + quarter resolution
     * - For non-SVC codecs (e.g., VP8/H264), this determines the number of
     *   encoded resolutions (e.g., quarter, half, full) sent for simulcast.
     *
     * @generated from protobuf field: int32 max_spatial_layers = 5;
     */
    maxSpatialLayers: number;
    /**
     * The maximum number of temporal layers for scalable video coding (SVC).
     * Temporal layers allow varying frame rates for different bandwidths.
     *
     * @generated from protobuf field: int32 max_temporal_layers = 6;
     */
    maxTemporalLayers: number;
    /**
     * The dimensions of the video (e.g., width and height in pixels).
     * Spatial layers are based on this base resolution. For example, if the base
     * resolution is 1280x720:
     * - Full resolution (1 layer) = 1280x720
     * - Half resolution (2 layers) = 640x360
     * - Quarter resolution (3 layers) = 320x180
     *
     * @generated from protobuf field: stream.video.sfu.models.VideoDimension video_dimension = 7;
     */
    videoDimension?: VideoDimension;
    /**
     * The unique identifier for the publish request.
     * - This `id` is assigned exclusively by the SFU. Any `id` set by the client
     *   in the `PublishOption` will be ignored and overwritten by the SFU.
     * - The primary purpose of this `id` is to uniquely identify each publish
     *   request, even in scenarios where multiple publish requests for the same
     *   `track_type` and `codec` are active simultaneously.
     *   For example:
     *     - A user may publish two tracks of the same type (e.g., video) and codec
     *       (e.g., VP9) concurrently.
     * - This uniqueness ensures that individual requests can be managed
     *   independently. For instance, an `id` is critical when stopping a specific
     *   publish request without affecting others.
     *
     * @generated from protobuf field: int32 id = 8;
     */
    id: number;
    /**
     * If true, instructs the publisher to send only the highest available simulcast layer,
     * disabling all lower layers. This applies to simulcast encodings.
     * For SVC codecs, prefer using the L1T3 (single spatial, 3 temporal layers) mode instead.
     *
     * @generated from protobuf field: bool use_single_layer = 9;
     */
    useSingleLayer: boolean;
    /**
     * Audio bitrate profiles for different audio quality profiles.
     *
     * @generated from protobuf field: repeated stream.video.sfu.models.AudioBitrate audio_bitrate_profiles = 10;
     */
    audioBitrateProfiles: AudioBitrate[];
    /**
     * The degradation preference for video encoding.
     *
     * @generated from protobuf field: stream.video.sfu.models.DegradationPreference degradation_preference = 11;
     */
    degradationPreference: DegradationPreference;
}
/**
 * @generated from protobuf message stream.video.sfu.models.Codec
 */
export interface Codec {
    /**
     * @generated from protobuf field: uint32 payload_type = 16;
     */
    payloadType: number;
    /**
     * @generated from protobuf field: string name = 10;
     */
    name: string;
    /**
     * @generated from protobuf field: uint32 clock_rate = 14;
     */
    clockRate: number;
    /**
     * @generated from protobuf field: string encoding_parameters = 15;
     */
    encodingParameters: string;
    /**
     * @generated from protobuf field: string fmtp = 12;
     */
    fmtp: string;
}
/**
 * @generated from protobuf message stream.video.sfu.models.ICETrickle
 */
export interface ICETrickle {
    /**
     * @generated from protobuf field: stream.video.sfu.models.PeerType peer_type = 1;
     */
    peerType: PeerType;
    /**
     * @generated from protobuf field: string ice_candidate = 2;
     */
    iceCandidate: string;
    /**
     * @generated from protobuf field: string session_id = 3;
     */
    sessionId: string;
}
/**
 * @generated from protobuf message stream.video.sfu.models.AudioBitrate
 */
export interface AudioBitrate {
    /**
     * @generated from protobuf field: stream.video.sfu.models.AudioBitrateProfile profile = 1;
     */
    profile: AudioBitrateProfile;
    /**
     * @generated from protobuf field: int32 bitrate = 2;
     */
    bitrate: number;
}
/**
 * @generated from protobuf message stream.video.sfu.models.TrackInfo
 */
export interface TrackInfo {
    /**
     * @generated from protobuf field: string track_id = 1;
     */
    trackId: string;
    /**
     * @generated from protobuf field: stream.video.sfu.models.TrackType track_type = 2;
     */
    trackType: TrackType;
    /**
     * @generated from protobuf field: repeated stream.video.sfu.models.VideoLayer layers = 5;
     */
    layers: VideoLayer[];
    /**
     * @generated from protobuf field: string mid = 6;
     */
    mid: string;
    /**
     * for audio tracks
     *
     * @generated from protobuf field: bool dtx = 7;
     */
    dtx: boolean;
    /**
     * @generated from protobuf field: bool stereo = 8;
     */
    stereo: boolean;
    /**
     * @generated from protobuf field: bool red = 9;
     */
    red: boolean;
    /**
     * @generated from protobuf field: bool muted = 10;
     */
    muted: boolean;
    /**
     * @generated from protobuf field: stream.video.sfu.models.Codec codec = 11;
     */
    codec?: Codec;
    /**
     * @generated from protobuf field: int32 publish_option_id = 12;
     */
    publishOptionId: number;
    /**
     * @generated from protobuf field: bool self_sub_audio_video = 13;
     */
    selfSubAudioVideo: boolean;
}
/**
 * @generated from protobuf message stream.video.sfu.models.Error
 */
export interface Error {
    /**
     * @generated from protobuf field: stream.video.sfu.models.ErrorCode code = 1;
     */
    code: ErrorCode;
    /**
     * @generated from protobuf field: string message = 2;
     */
    message: string;
    /**
     * @generated from protobuf field: bool should_retry = 3;
     */
    shouldRetry: boolean;
}
/**
 * @generated from protobuf message stream.video.sfu.models.ClientDetails
 */
export interface ClientDetails {
    /**
     * @generated from protobuf field: stream.video.sfu.models.Sdk sdk = 1;
     */
    sdk?: Sdk;
    /**
     * @generated from protobuf field: stream.video.sfu.models.OS os = 2;
     */
    os?: OS;
    /**
     * @generated from protobuf field: stream.video.sfu.models.Browser browser = 3;
     */
    browser?: Browser;
    /**
     * @generated from protobuf field: stream.video.sfu.models.Device device = 4;
     */
    device?: Device;
    /**
     * @generated from protobuf field: string webrtc_version = 5;
     */
    webrtcVersion: string;
}
/**
 * @generated from protobuf message stream.video.sfu.models.Sdk
 */
export interface Sdk {
    /**
     * @generated from protobuf field: stream.video.sfu.models.SdkType type = 1;
     */
    type: SdkType;
    /**
     * @generated from protobuf field: string major = 2;
     */
    major: string;
    /**
     * @generated from protobuf field: string minor = 3;
     */
    minor: string;
    /**
     * @generated from protobuf field: string patch = 4;
     */
    patch: string;
}
/**
 * @generated from protobuf message stream.video.sfu.models.OS
 */
export interface OS {
    /**
     * @generated from protobuf field: string name = 1;
     */
    name: string;
    /**
     * @generated from protobuf field: string version = 2;
     */
    version: string;
    /**
     * @generated from protobuf field: string architecture = 3;
     */
    architecture: string;
}
/**
 * @generated from protobuf message stream.video.sfu.models.Browser
 */
export interface Browser {
    /**
     * @generated from protobuf field: string name = 1;
     */
    name: string;
    /**
     * @generated from protobuf field: string version = 2;
     */
    version: string;
}
/**
 * @generated from protobuf message stream.video.sfu.models.RTMPIngress
 */
export interface RTMPIngress {
    /**
     * Video dimensions and frame rate
     *
     * @generated from protobuf field: uint32 width = 1;
     */
    width: number;
    /**
     * @generated from protobuf field: uint32 height = 2;
     */
    height: number;
    /**
     * @generated from protobuf field: double frame_rate = 3;
     */
    frameRate: number;
    /**
     * Client info
     *
     * @generated from protobuf field: string software = 4;
     */
    software: string;
    /**
     * @generated from protobuf field: string version = 5;
     */
    version: string;
    /**
     * @generated from protobuf field: string encoder = 6;
     */
    encoder: string;
    /**
     * Connection info
     *
     * @generated from protobuf field: string remote_addr = 7;
     */
    remoteAddr: string;
}
/**
 * @generated from protobuf message stream.video.sfu.models.Device
 */
export interface Device {
    /**
     * @generated from protobuf field: string name = 1;
     */
    name: string;
    /**
     * @generated from protobuf field: string version = 2;
     */
    version: string;
}
/**
 * @generated from protobuf message stream.video.sfu.models.Call
 */
export interface Call {
    /**
     * the call type
     *
     * @generated from protobuf field: string type = 1;
     */
    type: string;
    /**
     * the call id
     *
     * @generated from protobuf field: string id = 2;
     */
    id: string;
    /**
     * the id of the user that created this call
     *
     * @generated from protobuf field: string created_by_user_id = 3;
     */
    createdByUserId: string;
    /**
     * the id of the current host for this call
     *
     * @generated from protobuf field: string host_user_id = 4;
     */
    hostUserId: string;
    /**
     * @generated from protobuf field: google.protobuf.Struct custom = 5;
     */
    custom?: Struct;
    /**
     * @generated from protobuf field: google.protobuf.Timestamp created_at = 6;
     */
    createdAt?: Timestamp;
    /**
     * @generated from protobuf field: google.protobuf.Timestamp updated_at = 7;
     */
    updatedAt?: Timestamp;
}
/**
 * CallGrants represents the set of permissions given
 * to the user for the current call.
 *
 * @generated from protobuf message stream.video.sfu.models.CallGrants
 */
export interface CallGrants {
    /**
     * @generated from protobuf field: bool can_publish_audio = 1;
     */
    canPublishAudio: boolean;
    /**
     * @generated from protobuf field: bool can_publish_video = 2;
     */
    canPublishVideo: boolean;
    /**
     * @generated from protobuf field: bool can_screenshare = 3;
     */
    canScreenshare: boolean;
}
/**
 * @generated from protobuf message stream.video.sfu.models.InputDevices
 */
export interface InputDevices {
    /**
     * @generated from protobuf field: repeated string available_devices = 1;
     */
    availableDevices: string[];
    /**
     * @generated from protobuf field: string current_device = 2;
     */
    currentDevice: string;
    /**
     * @generated from protobuf field: bool is_permitted = 3;
     */
    isPermitted: boolean;
}
/**
 * @generated from protobuf message stream.video.sfu.models.AndroidState
 */
export interface AndroidState {
    /**
     * @generated from protobuf field: stream.video.sfu.models.AndroidThermalState thermal_state = 1;
     */
    thermalState: AndroidThermalState;
    /**
     * @generated from protobuf field: bool is_power_saver_mode = 2;
     */
    isPowerSaverMode: boolean;
}
/**
 * @generated from protobuf message stream.video.sfu.models.AppleState
 */
export interface AppleState {
    /**
     * @generated from protobuf field: stream.video.sfu.models.AppleThermalState thermal_state = 1;
     */
    thermalState: AppleThermalState;
    /**
     * https://developer.apple.com/documentation/foundation/processinfo/1617047-islowpowermodeenabled
     *
     * @generated from protobuf field: bool is_low_power_mode_enabled = 2;
     */
    isLowPowerModeEnabled: boolean;
}
/**
 * PerformanceStats represents the encoding/decoding statistics for a track.
 *
 * @generated from protobuf message stream.video.sfu.models.PerformanceStats
 */
export interface PerformanceStats {
    /**
     * the type of the track (e.g., video, audio, screen share)
     *
     * @generated from protobuf field: stream.video.sfu.models.TrackType track_type = 1;
     */
    trackType: TrackType;
    /**
     * the codec used for the track
     *
     * @generated from protobuf field: stream.video.sfu.models.Codec codec = 2;
     */
    codec?: Codec;
    /**
     * the average encode/decode time in ms
     *
     * @generated from protobuf field: float avg_frame_time_ms = 3;
     */
    avgFrameTimeMs: number;
    /**
     * the average fps for the track
     *
     * @generated from protobuf field: float avg_fps = 4;
     */
    avgFps: number;
    /**
     * the track dimensions
     *
     * @generated from protobuf field: stream.video.sfu.models.VideoDimension video_dimension = 5;
     */
    videoDimension?: VideoDimension;
    /**
     * the target bitrate for the track, only for published tracks
     *
     * @generated from protobuf field: int32 target_bitrate = 6;
     */
    targetBitrate: number;
}
/**
 * ===================================================================
 * BASE (shared by all RTP directions)
 * ===================================================================
 *
 * @generated from protobuf message stream.video.sfu.models.RtpBase
 */
export interface RtpBase {
    /**
     * @generated from protobuf field: uint32 ssrc = 1;
     */
    ssrc: number;
    /**
     * @generated from protobuf field: string kind = 2;
     */
    kind: string;
    /**
     * @generated from protobuf field: double timestamp_ms = 3;
     */
    timestampMs: number;
}
/**
 * ===================================================================
 * INBOUND (SUBSCRIBER RECEIVING MEDIA)
 * ===================================================================
 *
 * @generated from protobuf message stream.video.sfu.models.InboundRtp
 */
export interface InboundRtp {
    /**
     * @generated from protobuf field: stream.video.sfu.models.RtpBase base = 1;
     */
    base?: RtpBase;
    /**
     * @generated from protobuf field: double jitter_seconds = 2;
     */
    jitterSeconds: number;
    /**
     * @generated from protobuf field: uint64 packets_received = 3;
     */
    packetsReceived: string;
    /**
     * @generated from protobuf field: uint64 packets_lost = 4;
     */
    packetsLost: string;
    /**
     * @generated from protobuf field: double packet_loss_percent = 5;
     */
    packetLossPercent: number;
    /**
     * -------- AUDIO METRICS --------
     *
     * @generated from protobuf field: uint32 concealment_events = 10;
     */
    concealmentEvents: number;
    /**
     * @generated from protobuf field: double concealment_percent = 11;
     */
    concealmentPercent: number;
    /**
     * -------- VIDEO METRICS --------
     *
     * @generated from protobuf field: double fps = 20;
     */
    fps: number;
    /**
     * @generated from protobuf field: double freeze_duration_seconds = 21;
     */
    freezeDurationSeconds: number;
    /**
     * @generated from protobuf field: double avg_decode_time_seconds = 22;
     */
    avgDecodeTimeSeconds: number;
    /**
     * @generated from protobuf field: uint32 min_dimension_px = 23;
     */
    minDimensionPx: number;
}
/**
 * ===================================================================
 * OUTBOUND (PUBLISHER SENDING MEDIA)
 * ===================================================================
 *
 * @generated from protobuf message stream.video.sfu.models.OutboundRtp
 */
export interface OutboundRtp {
    /**
     * @generated from protobuf field: stream.video.sfu.models.RtpBase base = 1;
     */
    base?: RtpBase;
    /**
     * @generated from protobuf field: double fps = 10;
     */
    fps: number;
    /**
     * @generated from protobuf field: double avg_encode_time_seconds = 11;
     */
    avgEncodeTimeSeconds: number;
    /**
     * @generated from protobuf field: double bitrate_bps = 12;
     */
    bitrateBps: number;
    /**
     * @generated from protobuf field: uint32 min_dimension_px = 13;
     */
    minDimensionPx: number;
}
/**
 * ===================================================================
 * SFU FEEDBACK: REMOTE-INBOUND (Publisher receives feedback)
 * ===================================================================
 *
 * @generated from protobuf message stream.video.sfu.models.RemoteInboundRtp
 */
export interface RemoteInboundRtp {
    /**
     * @generated from protobuf field: stream.video.sfu.models.RtpBase base = 1;
     */
    base?: RtpBase;
    /**
     * @generated from protobuf field: double jitter_seconds = 2;
     */
    jitterSeconds: number;
    /**
     * @generated from protobuf field: double round_trip_time_s = 3;
     */
    roundTripTimeS: number;
}
/**
 * ===================================================================
 * SFU FEEDBACK: REMOTE-OUTBOUND (Subscriber receives feedback)
 * ===================================================================
 *
 * @generated from protobuf message stream.video.sfu.models.RemoteOutboundRtp
 */
export interface RemoteOutboundRtp {
    /**
     * @generated from protobuf field: stream.video.sfu.models.RtpBase base = 1;
     */
    base?: RtpBase;
    /**
     * @generated from protobuf field: double jitter_seconds = 2;
     */
    jitterSeconds: number;
    /**
     * @generated from protobuf field: double round_trip_time_s = 3;
     */
    roundTripTimeS: number;
}
/**
 * @generated from protobuf enum stream.video.sfu.models.PeerType
 */
export declare enum PeerType {
    /**
     * todo fix me (marcelo)
     *
     * @generated from protobuf enum value: PEER_TYPE_PUBLISHER_UNSPECIFIED = 0;
     */
    PUBLISHER_UNSPECIFIED = 0,
    /**
     * @generated from protobuf enum value: PEER_TYPE_SUBSCRIBER = 1;
     */
    SUBSCRIBER = 1
}
/**
 * @generated from protobuf enum stream.video.sfu.models.ConnectionQuality
 */
export declare enum ConnectionQuality {
    /**
     * @generated from protobuf enum value: CONNECTION_QUALITY_UNSPECIFIED = 0;
     */
    UNSPECIFIED = 0,
    /**
     * @generated from protobuf enum value: CONNECTION_QUALITY_POOR = 1;
     */
    POOR = 1,
    /**
     * @generated from protobuf enum value: CONNECTION_QUALITY_GOOD = 2;
     */
    GOOD = 2,
    /**
     * @generated from protobuf enum value: CONNECTION_QUALITY_EXCELLENT = 3;
     */
    EXCELLENT = 3
}
/**
 * @generated from protobuf enum stream.video.sfu.models.VideoQuality
 */
export declare enum VideoQuality {
    /**
     * @generated from protobuf enum value: VIDEO_QUALITY_LOW_UNSPECIFIED = 0;
     */
    LOW_UNSPECIFIED = 0,
    /**
     * @generated from protobuf enum value: VIDEO_QUALITY_MID = 1;
     */
    MID = 1,
    /**
     * @generated from protobuf enum value: VIDEO_QUALITY_HIGH = 2;
     */
    HIGH = 2,
    /**
     * @generated from protobuf enum value: VIDEO_QUALITY_OFF = 3;
     */
    OFF = 3
}
/**
 * @generated from protobuf enum stream.video.sfu.models.TrackType
 */
export declare enum TrackType {
    /**
     * @generated from protobuf enum value: TRACK_TYPE_UNSPECIFIED = 0;
     */
    UNSPECIFIED = 0,
    /**
     * @generated from protobuf enum value: TRACK_TYPE_AUDIO = 1;
     */
    AUDIO = 1,
    /**
     * @generated from protobuf enum value: TRACK_TYPE_VIDEO = 2;
     */
    VIDEO = 2,
    /**
     * @generated from protobuf enum value: TRACK_TYPE_SCREEN_SHARE = 3;
     */
    SCREEN_SHARE = 3,
    /**
     * @generated from protobuf enum value: TRACK_TYPE_SCREEN_SHARE_AUDIO = 4;
     */
    SCREEN_SHARE_AUDIO = 4
}
/**
 * must be aligned with kit
 *
 * @generated from protobuf enum stream.video.sfu.models.ParticipantSource
 */
export declare enum ParticipantSource {
    /**
     * @generated from protobuf enum value: PARTICIPANT_SOURCE_WEBRTC_UNSPECIFIED = 0;
     */
    WEBRTC_UNSPECIFIED = 0,
    /**
     * @generated from protobuf enum value: PARTICIPANT_SOURCE_RTMP = 1;
     */
    RTMP = 1,
    /**
     * @generated from protobuf enum value: PARTICIPANT_SOURCE_WHIP = 2;
     */
    WHIP = 2,
    /**
     * @generated from protobuf enum value: PARTICIPANT_SOURCE_SIP = 3;
     */
    SIP = 3,
    /**
     * @generated from protobuf enum value: PARTICIPANT_SOURCE_RTSP = 4;
     */
    RTSP = 4,
    /**
     * @generated from protobuf enum value: PARTICIPANT_SOURCE_SRT = 5;
     */
    SRT = 5
}
/**
 * @generated from protobuf enum stream.video.sfu.models.AudioBitrateProfile
 */
export declare enum AudioBitrateProfile {
    /**
     * @generated from protobuf enum value: AUDIO_BITRATE_PROFILE_VOICE_STANDARD_UNSPECIFIED = 0;
     */
    VOICE_STANDARD_UNSPECIFIED = 0,
    /**
     * @generated from protobuf enum value: AUDIO_BITRATE_PROFILE_VOICE_HIGH_QUALITY = 1;
     */
    VOICE_HIGH_QUALITY = 1,
    /**
     * @generated from protobuf enum value: AUDIO_BITRATE_PROFILE_MUSIC_HIGH_QUALITY = 2;
     */
    MUSIC_HIGH_QUALITY = 2
}
/**
 * @generated from protobuf enum stream.video.sfu.models.ErrorCode
 */
export declare enum ErrorCode {
    /**
     * @generated from protobuf enum value: ERROR_CODE_UNSPECIFIED = 0;
     */
    UNSPECIFIED = 0,
    /**
     * @generated from protobuf enum value: ERROR_CODE_PUBLISH_TRACK_NOT_FOUND = 100;
     */
    PUBLISH_TRACK_NOT_FOUND = 100,
    /**
     * @generated from protobuf enum value: ERROR_CODE_PUBLISH_TRACKS_MISMATCH = 101;
     */
    PUBLISH_TRACKS_MISMATCH = 101,
    /**
     * @generated from protobuf enum value: ERROR_CODE_PUBLISH_TRACK_OUT_OF_ORDER = 102;
     */
    PUBLISH_TRACK_OUT_OF_ORDER = 102,
    /**
     * @generated from protobuf enum value: ERROR_CODE_PUBLISH_TRACK_VIDEO_LAYER_NOT_FOUND = 103;
     */
    PUBLISH_TRACK_VIDEO_LAYER_NOT_FOUND = 103,
    /**
     * @generated from protobuf enum value: ERROR_CODE_LIVE_ENDED = 104;
     */
    LIVE_ENDED = 104,
    /**
     * @generated from protobuf enum value: ERROR_CODE_PARTICIPANT_NOT_FOUND = 200;
     */
    PARTICIPANT_NOT_FOUND = 200,
    /**
     * @generated from protobuf enum value: ERROR_CODE_PARTICIPANT_MIGRATING_OUT = 201;
     */
    PARTICIPANT_MIGRATING_OUT = 201,
    /**
     * @generated from protobuf enum value: ERROR_CODE_PARTICIPANT_MIGRATION_FAILED = 202;
     */
    PARTICIPANT_MIGRATION_FAILED = 202,
    /**
     * @generated from protobuf enum value: ERROR_CODE_PARTICIPANT_MIGRATING = 203;
     */
    PARTICIPANT_MIGRATING = 203,
    /**
     * @generated from protobuf enum value: ERROR_CODE_PARTICIPANT_RECONNECT_FAILED = 204;
     */
    PARTICIPANT_RECONNECT_FAILED = 204,
    /**
     * @generated from protobuf enum value: ERROR_CODE_PARTICIPANT_MEDIA_TRANSPORT_FAILURE = 205;
     */
    PARTICIPANT_MEDIA_TRANSPORT_FAILURE = 205,
    /**
     * @generated from protobuf enum value: ERROR_CODE_PARTICIPANT_SIGNAL_LOST = 206;
     */
    PARTICIPANT_SIGNAL_LOST = 206,
    /**
     * @generated from protobuf enum value: ERROR_CODE_CALL_NOT_FOUND = 300;
     */
    CALL_NOT_FOUND = 300,
    /**
     * @generated from protobuf enum value: ERROR_CODE_CALL_PARTICIPANT_LIMIT_REACHED = 301;
     */
    CALL_PARTICIPANT_LIMIT_REACHED = 301,
    /**
     * @generated from protobuf enum value: ERROR_CODE_REQUEST_VALIDATION_FAILED = 400;
     */
    REQUEST_VALIDATION_FAILED = 400,
    /**
     * @generated from protobuf enum value: ERROR_CODE_UNAUTHENTICATED = 401;
     */
    UNAUTHENTICATED = 401,
    /**
     * @generated from protobuf enum value: ERROR_CODE_PERMISSION_DENIED = 403;
     */
    PERMISSION_DENIED = 403,
    /**
     * @generated from protobuf enum value: ERROR_CODE_TOO_MANY_REQUESTS = 429;
     */
    TOO_MANY_REQUESTS = 429,
    /**
     * @generated from protobuf enum value: ERROR_CODE_INTERNAL_SERVER_ERROR = 500;
     */
    INTERNAL_SERVER_ERROR = 500,
    /**
     * @generated from protobuf enum value: ERROR_CODE_SFU_SHUTTING_DOWN = 600;
     */
    SFU_SHUTTING_DOWN = 600,
    /**
     * @generated from protobuf enum value: ERROR_CODE_SFU_FULL = 700;
     */
    SFU_FULL = 700
}
/**
 * @generated from protobuf enum stream.video.sfu.models.SdkType
 */
export declare enum SdkType {
    /**
     * @generated from protobuf enum value: SDK_TYPE_UNSPECIFIED = 0;
     */
    UNSPECIFIED = 0,
    /**
     * @generated from protobuf enum value: SDK_TYPE_REACT = 1;
     */
    REACT = 1,
    /**
     * @generated from protobuf enum value: SDK_TYPE_ANGULAR = 2;
     */
    ANGULAR = 2,
    /**
     * @generated from protobuf enum value: SDK_TYPE_ANDROID = 3;
     */
    ANDROID = 3,
    /**
     * @generated from protobuf enum value: SDK_TYPE_IOS = 4;
     */
    IOS = 4,
    /**
     * @generated from protobuf enum value: SDK_TYPE_FLUTTER = 5;
     */
    FLUTTER = 5,
    /**
     * @generated from protobuf enum value: SDK_TYPE_REACT_NATIVE = 6;
     */
    REACT_NATIVE = 6,
    /**
     * @generated from protobuf enum value: SDK_TYPE_UNITY = 7;
     */
    UNITY = 7,
    /**
     * @generated from protobuf enum value: SDK_TYPE_GO = 8;
     */
    GO = 8,
    /**
     * @generated from protobuf enum value: SDK_TYPE_PLAIN_JAVASCRIPT = 9;
     */
    PLAIN_JAVASCRIPT = 9,
    /**
     * @generated from protobuf enum value: SDK_TYPE_PYTHON = 10;
     */
    PYTHON = 10,
    /**
     * @generated from protobuf enum value: SDK_TYPE_VISION_AGENTS = 11;
     */
    VISION_AGENTS = 11
}
/**
 * @generated from protobuf enum stream.video.sfu.models.TrackUnpublishReason
 */
export declare enum TrackUnpublishReason {
    /**
     * Default value which is used when the specific reason
     * for muting the track is not known.
     *
     * @generated from protobuf enum value: TRACK_UNPUBLISH_REASON_UNSPECIFIED = 0;
     */
    UNSPECIFIED = 0,
    /**
     * Represents user muting their tracks.
     *
     * @generated from protobuf enum value: TRACK_UNPUBLISH_REASON_USER_MUTED = 1;
     */
    USER_MUTED = 1,
    /**
     * Represents muting the track because the permission to
     * publish the track has been revoked.
     *
     * @generated from protobuf enum value: TRACK_UNPUBLISH_REASON_PERMISSION_REVOKED = 2;
     */
    PERMISSION_REVOKED = 2,
    /**
     * Represents muting the track due to moderation actions.
     * This is different from permission revoked because the
     * participant can unmute themselves here whereas in case
     * of "permission revoke" it is not possible until the
     * call permissions are updated.
     *
     * @generated from protobuf enum value: TRACK_UNPUBLISH_REASON_MODERATION = 3;
     */
    MODERATION = 3
}
/**
 * GoAwayReason represents the reason for the SFU to
 * disconnect the client.
 *
 * @generated from protobuf enum stream.video.sfu.models.GoAwayReason
 */
export declare enum GoAwayReason {
    /**
     * @generated from protobuf enum value: GO_AWAY_REASON_UNSPECIFIED = 0;
     */
    UNSPECIFIED = 0,
    /**
     * @generated from protobuf enum value: GO_AWAY_REASON_SHUTTING_DOWN = 1;
     */
    SHUTTING_DOWN = 1,
    /**
     * @generated from protobuf enum value: GO_AWAY_REASON_REBALANCE = 2;
     */
    REBALANCE = 2
}
/**
 * CallEndedReason represents the reason for the call to end.
 *
 * @generated from protobuf enum stream.video.sfu.models.CallEndedReason
 */
export declare enum CallEndedReason {
    /**
     * @generated from protobuf enum value: CALL_ENDED_REASON_UNSPECIFIED = 0;
     */
    UNSPECIFIED = 0,
    /**
     * @generated from protobuf enum value: CALL_ENDED_REASON_ENDED = 1;
     */
    ENDED = 1,
    /**
     * @generated from protobuf enum value: CALL_ENDED_REASON_LIVE_ENDED = 2;
     */
    LIVE_ENDED = 2,
    /**
     * @generated from protobuf enum value: CALL_ENDED_REASON_KICKED = 3;
     */
    KICKED = 3,
    /**
     * @generated from protobuf enum value: CALL_ENDED_REASON_SESSION_ENDED = 4;
     */
    SESSION_ENDED = 4
}
/**
 * WebsocketReconnectStrategy defines the ws strategies available for handling reconnections.
 *
 * @generated from protobuf enum stream.video.sfu.models.WebsocketReconnectStrategy
 */
export declare enum WebsocketReconnectStrategy {
    /**
     * @generated from protobuf enum value: WEBSOCKET_RECONNECT_STRATEGY_UNSPECIFIED = 0;
     */
    UNSPECIFIED = 0,
    /**
     * Sent after reaching the maximum reconnection attempts, or any other unrecoverable error leading to permanent disconnect.
     *
     * @generated from protobuf enum value: WEBSOCKET_RECONNECT_STRATEGY_DISCONNECT = 1;
     */
    DISCONNECT = 1,
    /**
     * SDK should maintaining existing publisher/subscriber pc instances
     * and establish a new WebSocket connection.
     *
     * @generated from protobuf enum value: WEBSOCKET_RECONNECT_STRATEGY_FAST = 2;
     */
    FAST = 2,
    /**
     * SDK should obtain new credentials from the coordinator, drops existing pc instances, set a new session_id and initializes
     * a completely new WebSocket connection, ensuring a comprehensive reset.
     *
     * @generated from protobuf enum value: WEBSOCKET_RECONNECT_STRATEGY_REJOIN = 3;
     */
    REJOIN = 3,
    /**
     * SDK should migrate to a new SFU instance
     *
     * @generated from protobuf enum value: WEBSOCKET_RECONNECT_STRATEGY_MIGRATE = 4;
     */
    MIGRATE = 4
}
/**
 * AndroidThermalState is reported by the Android API. The full list of values is documented here
 * https://developer.android.com/reference/android/os/PowerManager.html#getCurrentThermalStatus()
 *
 * @generated from protobuf enum stream.video.sfu.models.AndroidThermalState
 */
export declare enum AndroidThermalState {
    /**
     * @generated from protobuf enum value: ANDROID_THERMAL_STATE_UNSPECIFIED = 0;
     */
    UNSPECIFIED = 0,
    /**
     * @generated from protobuf enum value: ANDROID_THERMAL_STATE_NONE = 1;
     */
    NONE = 1,
    /**
     * @generated from protobuf enum value: ANDROID_THERMAL_STATE_LIGHT = 2;
     */
    LIGHT = 2,
    /**
     * @generated from protobuf enum value: ANDROID_THERMAL_STATE_MODERATE = 3;
     */
    MODERATE = 3,
    /**
     * @generated from protobuf enum value: ANDROID_THERMAL_STATE_SEVERE = 4;
     */
    SEVERE = 4,
    /**
     * @generated from protobuf enum value: ANDROID_THERMAL_STATE_CRITICAL = 5;
     */
    CRITICAL = 5,
    /**
     * @generated from protobuf enum value: ANDROID_THERMAL_STATE_EMERGENCY = 6;
     */
    EMERGENCY = 6,
    /**
     * @generated from protobuf enum value: ANDROID_THERMAL_STATE_SHUTDOWN = 7;
     */
    SHUTDOWN = 7
}
/**
 * AppleThermalState is the thermal state as reported by Apple devices when available or applicable to the platform.
 * The full list of states (enum) is available here: https://developer.apple.com/documentation/foundation/processinfo/thermalstate
 *
 * @generated from protobuf enum stream.video.sfu.models.AppleThermalState
 */
export declare enum AppleThermalState {
    /**
     * @generated from protobuf enum value: APPLE_THERMAL_STATE_UNSPECIFIED = 0;
     */
    UNSPECIFIED = 0,
    /**
     * @generated from protobuf enum value: APPLE_THERMAL_STATE_NOMINAL = 1;
     */
    NOMINAL = 1,
    /**
     * @generated from protobuf enum value: APPLE_THERMAL_STATE_FAIR = 2;
     */
    FAIR = 2,
    /**
     * @generated from protobuf enum value: APPLE_THERMAL_STATE_SERIOUS = 3;
     */
    SERIOUS = 3,
    /**
     * @generated from protobuf enum value: APPLE_THERMAL_STATE_CRITICAL = 4;
     */
    CRITICAL = 4
}
/**
 * ClientCapability defines a feature that client supports
 *
 * @generated from protobuf enum stream.video.sfu.models.ClientCapability
 */
export declare enum ClientCapability {
    /**
     * @generated from protobuf enum value: CLIENT_CAPABILITY_UNSPECIFIED = 0;
     */
    UNSPECIFIED = 0,
    /**
     * Enables SFU pausing inbound video
     *
     * @generated from protobuf enum value: CLIENT_CAPABILITY_SUBSCRIBER_VIDEO_PAUSE = 1;
     */
    SUBSCRIBER_VIDEO_PAUSE = 1,
    /**
     * Instructs SFU that stats will be sent to the coordinator
     *
     * @generated from protobuf enum value: CLIENT_CAPABILITY_COORDINATOR_STATS = 2;
     */
    COORDINATOR_STATS = 2
}
/**
 * DegradationPreference represents the RTCDegradationPreference from WebRTC.
 * See https://developer.mozilla.org/en-US/docs/Web/API/RTCRtpSender/setParameters#degradationpreference
 *
 * @generated from protobuf enum stream.video.sfu.models.DegradationPreference
 */
export declare enum DegradationPreference {
    /**
     * @generated from protobuf enum value: DEGRADATION_PREFERENCE_UNSPECIFIED = 0;
     */
    UNSPECIFIED = 0,
    /**
     * @generated from protobuf enum value: DEGRADATION_PREFERENCE_BALANCED = 1;
     */
    BALANCED = 1,
    /**
     * @generated from protobuf enum value: DEGRADATION_PREFERENCE_MAINTAIN_FRAMERATE = 2;
     */
    MAINTAIN_FRAMERATE = 2,
    /**
     * @generated from protobuf enum value: DEGRADATION_PREFERENCE_MAINTAIN_RESOLUTION = 3;
     */
    MAINTAIN_RESOLUTION = 3,
    /**
     * @generated from protobuf enum value: DEGRADATION_PREFERENCE_MAINTAIN_FRAMERATE_AND_RESOLUTION = 4;
     */
    MAINTAIN_FRAMERATE_AND_RESOLUTION = 4
}
declare class CallState$Type extends MessageType<CallState> {
    constructor();
}
/**
 * @generated MessageType for protobuf message stream.video.sfu.models.CallState
 */
export declare const CallState: CallState$Type;
declare class ParticipantCount$Type extends MessageType<ParticipantCount> {
    constructor();
}
/**
 * @generated MessageType for protobuf message stream.video.sfu.models.ParticipantCount
 */
export declare const ParticipantCount: ParticipantCount$Type;
declare class Pin$Type extends MessageType<Pin> {
    constructor();
}
/**
 * @generated MessageType for protobuf message stream.video.sfu.models.Pin
 */
export declare const Pin: Pin$Type;
declare class Participant$Type extends MessageType<Participant> {
    constructor();
}
/**
 * @generated MessageType for protobuf message stream.video.sfu.models.Participant
 */
export declare const Participant: Participant$Type;
declare class StreamQuality$Type extends MessageType<StreamQuality> {
    constructor();
}
/**
 * @generated MessageType for protobuf message stream.video.sfu.models.StreamQuality
 */
export declare const StreamQuality: StreamQuality$Type;
declare class VideoDimension$Type extends MessageType<VideoDimension> {
    constructor();
}
/**
 * @generated MessageType for protobuf message stream.video.sfu.models.VideoDimension
 */
export declare const VideoDimension: VideoDimension$Type;
declare class VideoLayer$Type extends MessageType<VideoLayer> {
    constructor();
}
/**
 * @generated MessageType for protobuf message stream.video.sfu.models.VideoLayer
 */
export declare const VideoLayer: VideoLayer$Type;
declare class SubscribeOption$Type extends MessageType<SubscribeOption> {
    constructor();
}
/**
 * @generated MessageType for protobuf message stream.video.sfu.models.SubscribeOption
 */
export declare const SubscribeOption: SubscribeOption$Type;
declare class PublishOption$Type extends MessageType<PublishOption> {
    constructor();
}
/**
 * @generated MessageType for protobuf message stream.video.sfu.models.PublishOption
 */
export declare const PublishOption: PublishOption$Type;
declare class Codec$Type extends MessageType<Codec> {
    constructor();
}
/**
 * @generated MessageType for protobuf message stream.video.sfu.models.Codec
 */
export declare const Codec: Codec$Type;
declare class ICETrickle$Type extends MessageType<ICETrickle> {
    constructor();
}
/**
 * @generated MessageType for protobuf message stream.video.sfu.models.ICETrickle
 */
export declare const ICETrickle: ICETrickle$Type;
declare class AudioBitrate$Type extends MessageType<AudioBitrate> {
    constructor();
}
/**
 * @generated MessageType for protobuf message stream.video.sfu.models.AudioBitrate
 */
export declare const AudioBitrate: AudioBitrate$Type;
declare class TrackInfo$Type extends MessageType<TrackInfo> {
    constructor();
}
/**
 * @generated MessageType for protobuf message stream.video.sfu.models.TrackInfo
 */
export declare const TrackInfo: TrackInfo$Type;
declare class Error$Type extends MessageType<Error> {
    constructor();
}
/**
 * @generated MessageType for protobuf message stream.video.sfu.models.Error
 */
export declare const Error: Error$Type;
declare class ClientDetails$Type extends MessageType<ClientDetails> {
    constructor();
}
/**
 * @generated MessageType for protobuf message stream.video.sfu.models.ClientDetails
 */
export declare const ClientDetails: ClientDetails$Type;
declare class Sdk$Type extends MessageType<Sdk> {
    constructor();
}
/**
 * @generated MessageType for protobuf message stream.video.sfu.models.Sdk
 */
export declare const Sdk: Sdk$Type;
declare class OS$Type extends MessageType<OS> {
    constructor();
}
/**
 * @generated MessageType for protobuf message stream.video.sfu.models.OS
 */
export declare const OS: OS$Type;
declare class Browser$Type extends MessageType<Browser> {
    constructor();
}
/**
 * @generated MessageType for protobuf message stream.video.sfu.models.Browser
 */
export declare const Browser: Browser$Type;
declare class RTMPIngress$Type extends MessageType<RTMPIngress> {
    constructor();
}
/**
 * @generated MessageType for protobuf message stream.video.sfu.models.RTMPIngress
 */
export declare const RTMPIngress: RTMPIngress$Type;
declare class Device$Type extends MessageType<Device> {
    constructor();
}
/**
 * @generated MessageType for protobuf message stream.video.sfu.models.Device
 */
export declare const Device: Device$Type;
declare class Call$Type extends MessageType<Call> {
    constructor();
}
/**
 * @generated MessageType for protobuf message stream.video.sfu.models.Call
 */
export declare const Call: Call$Type;
declare class CallGrants$Type extends MessageType<CallGrants> {
    constructor();
}
/**
 * @generated MessageType for protobuf message stream.video.sfu.models.CallGrants
 */
export declare const CallGrants: CallGrants$Type;
declare class InputDevices$Type extends MessageType<InputDevices> {
    constructor();
}
/**
 * @generated MessageType for protobuf message stream.video.sfu.models.InputDevices
 */
export declare const InputDevices: InputDevices$Type;
declare class AndroidState$Type extends MessageType<AndroidState> {
    constructor();
}
/**
 * @generated MessageType for protobuf message stream.video.sfu.models.AndroidState
 */
export declare const AndroidState: AndroidState$Type;
declare class AppleState$Type extends MessageType<AppleState> {
    constructor();
}
/**
 * @generated MessageType for protobuf message stream.video.sfu.models.AppleState
 */
export declare const AppleState: AppleState$Type;
declare class PerformanceStats$Type extends MessageType<PerformanceStats> {
    constructor();
}
/**
 * @generated MessageType for protobuf message stream.video.sfu.models.PerformanceStats
 */
export declare const PerformanceStats: PerformanceStats$Type;
declare class RtpBase$Type extends MessageType<RtpBase> {
    constructor();
}
/**
 * @generated MessageType for protobuf message stream.video.sfu.models.RtpBase
 */
export declare const RtpBase: RtpBase$Type;
declare class InboundRtp$Type extends MessageType<InboundRtp> {
    constructor();
}
/**
 * @generated MessageType for protobuf message stream.video.sfu.models.InboundRtp
 */
export declare const InboundRtp: InboundRtp$Type;
declare class OutboundRtp$Type extends MessageType<OutboundRtp> {
    constructor();
}
/**
 * @generated MessageType for protobuf message stream.video.sfu.models.OutboundRtp
 */
export declare const OutboundRtp: OutboundRtp$Type;
declare class RemoteInboundRtp$Type extends MessageType<RemoteInboundRtp> {
    constructor();
}
/**
 * @generated MessageType for protobuf message stream.video.sfu.models.RemoteInboundRtp
 */
export declare const RemoteInboundRtp: RemoteInboundRtp$Type;
declare class RemoteOutboundRtp$Type extends MessageType<RemoteOutboundRtp> {
    constructor();
}
/**
 * @generated MessageType for protobuf message stream.video.sfu.models.RemoteOutboundRtp
 */
export declare const RemoteOutboundRtp: RemoteOutboundRtp$Type;
export {};
