import { ServiceType } from '@protobuf-ts/runtime-rpc';
import { MessageType } from '@protobuf-ts/runtime';
import { TrackInfo } from '../models/models';
import { VideoDimension } from '../models/models';
import { TrackType } from '../models/models';
import { PeerType } from '../models/models';
import { PerformanceStats } from '../models/models';
import { RTMPIngress } from '../models/models';
import { AppleState } from '../models/models';
import { AndroidState } from '../models/models';
import { InputDevices } from '../models/models';
import { RemoteOutboundRtp } from '../models/models';
import { RemoteInboundRtp } from '../models/models';
import { OutboundRtp } from '../models/models';
import { InboundRtp } from '../models/models';
import { WebsocketReconnectStrategy } from '../models/models';
import { Error } from '../models/models';
/**
 * @generated from protobuf message stream.video.sfu.signal.StartNoiseCancellationRequest
 */
export interface StartNoiseCancellationRequest {
    /**
     * @generated from protobuf field: string session_id = 1;
     */
    sessionId: string;
}
/**
 * @generated from protobuf message stream.video.sfu.signal.StartNoiseCancellationResponse
 */
export interface StartNoiseCancellationResponse {
    /**
     * @generated from protobuf field: stream.video.sfu.models.Error error = 1;
     */
    error?: Error;
}
/**
 * @generated from protobuf message stream.video.sfu.signal.StopNoiseCancellationRequest
 */
export interface StopNoiseCancellationRequest {
    /**
     * @generated from protobuf field: string session_id = 1;
     */
    sessionId: string;
}
/**
 * @generated from protobuf message stream.video.sfu.signal.StopNoiseCancellationResponse
 */
export interface StopNoiseCancellationResponse {
    /**
     * @generated from protobuf field: stream.video.sfu.models.Error error = 1;
     */
    error?: Error;
}
/**
 * @generated from protobuf message stream.video.sfu.signal.Reconnection
 */
export interface Reconnection {
    /**
     * @generated from protobuf field: float time_seconds = 1;
     */
    timeSeconds: number;
    /**
     * @generated from protobuf field: stream.video.sfu.models.WebsocketReconnectStrategy strategy = 2;
     */
    strategy: WebsocketReconnectStrategy;
}
/**
 * @generated from protobuf message stream.video.sfu.signal.Telemetry
 */
export interface Telemetry {
    /**
     * @generated from protobuf oneof: data
     */
    data: {
        oneofKind: 'connectionTimeSeconds';
        /**
         * @generated from protobuf field: float connection_time_seconds = 1;
         */
        connectionTimeSeconds: number;
    } | {
        oneofKind: 'reconnection';
        /**
         * @generated from protobuf field: stream.video.sfu.signal.Reconnection reconnection = 2;
         */
        reconnection: Reconnection;
    } | {
        oneofKind: undefined;
    };
}
/**
 * @generated from protobuf message stream.video.sfu.signal.SendMetricsRequest
 */
export interface SendMetricsRequest {
    /**
     * @generated from protobuf field: string session_id = 1;
     */
    sessionId: string;
    /**
     * @generated from protobuf field: string unified_session_id = 2;
     */
    unifiedSessionId: string;
    /**
     * @generated from protobuf field: repeated stream.video.sfu.models.InboundRtp inbounds = 3;
     */
    inbounds: InboundRtp[];
    /**
     * @generated from protobuf field: repeated stream.video.sfu.models.OutboundRtp outbounds = 4;
     */
    outbounds: OutboundRtp[];
    /**
     * @generated from protobuf field: repeated stream.video.sfu.models.RemoteInboundRtp remote_inbounds = 5;
     */
    remoteInbounds: RemoteInboundRtp[];
    /**
     * @generated from protobuf field: repeated stream.video.sfu.models.RemoteOutboundRtp remote_outbounds = 6;
     */
    remoteOutbounds: RemoteOutboundRtp[];
}
/**
 * @generated from protobuf message stream.video.sfu.signal.SendMetricsResponse
 */
export interface SendMetricsResponse {
}
/**
 * @generated from protobuf message stream.video.sfu.signal.SendStatsRequest
 */
export interface SendStatsRequest {
    /**
     * @generated from protobuf field: string session_id = 1;
     */
    sessionId: string;
    /**
     * @generated from protobuf field: string subscriber_stats = 2;
     */
    subscriberStats: string;
    /**
     * @generated from protobuf field: string publisher_stats = 3;
     */
    publisherStats: string;
    /**
     * @generated from protobuf field: string webrtc_version = 4;
     */
    webrtcVersion: string;
    /**
     * @generated from protobuf field: string sdk = 5;
     */
    sdk: string;
    /**
     * @generated from protobuf field: string sdk_version = 6;
     */
    sdkVersion: string;
    /**
     * @generated from protobuf field: stream.video.sfu.models.InputDevices audio_devices = 7;
     */
    audioDevices?: InputDevices;
    /**
     * @generated from protobuf field: stream.video.sfu.models.InputDevices video_devices = 8;
     */
    videoDevices?: InputDevices;
    /**
     * @generated from protobuf oneof: device_state
     */
    deviceState: {
        oneofKind: 'android';
        /**
         * @generated from protobuf field: stream.video.sfu.models.AndroidState android = 9;
         */
        android: AndroidState;
    } | {
        oneofKind: 'apple';
        /**
         * @generated from protobuf field: stream.video.sfu.models.AppleState apple = 10;
         */
        apple: AppleState;
    } | {
        oneofKind: undefined;
    };
    /**
     * @generated from protobuf field: stream.video.sfu.signal.Telemetry telemetry = 11;
     */
    telemetry?: Telemetry;
    /**
     * @generated from protobuf field: stream.video.sfu.models.RTMPIngress rtmp = 12;
     */
    rtmp?: RTMPIngress;
    /**
     * @deprecated
     * @generated from protobuf field: string subscriber_rtc_stats = 13 [deprecated = true];
     */
    subscriberRtcStats: string;
    /**
     * @deprecated
     * @generated from protobuf field: string publisher_rtc_stats = 14 [deprecated = true];
     */
    publisherRtcStats: string;
    /**
     * @generated from protobuf field: string rtc_stats = 15;
     */
    rtcStats: string;
    /**
     * Encode stats for the publisher
     *
     * @generated from protobuf field: repeated stream.video.sfu.models.PerformanceStats encode_stats = 16;
     */
    encodeStats: PerformanceStats[];
    /**
     * Decode stats for the subscriber
     *
     * @generated from protobuf field: repeated stream.video.sfu.models.PerformanceStats decode_stats = 17;
     */
    decodeStats: PerformanceStats[];
    /**
     * user_session id can change during reconnects, this helps us to
     * identify the user across reconnects and should remain consistent until the user explicitly
     * disconnects, is kicked or the call is ended.
     *
     * @generated from protobuf field: string unified_session_id = 18;
     */
    unifiedSessionId: string;
}
/**
 * @generated from protobuf message stream.video.sfu.signal.SendStatsResponse
 */
export interface SendStatsResponse {
    /**
     * @generated from protobuf field: stream.video.sfu.models.Error error = 1;
     */
    error?: Error;
}
/**
 * @generated from protobuf message stream.video.sfu.signal.ICERestartRequest
 */
export interface ICERestartRequest {
    /**
     * @generated from protobuf field: string session_id = 1;
     */
    sessionId: string;
    /**
     * @generated from protobuf field: stream.video.sfu.models.PeerType peer_type = 2;
     */
    peerType: PeerType;
}
/**
 * @generated from protobuf message stream.video.sfu.signal.ICERestartResponse
 */
export interface ICERestartResponse {
    /**
     * @generated from protobuf field: stream.video.sfu.models.Error error = 1;
     */
    error?: Error;
}
/**
 * @generated from protobuf message stream.video.sfu.signal.UpdateMuteStatesRequest
 */
export interface UpdateMuteStatesRequest {
    /**
     * @generated from protobuf field: string session_id = 1;
     */
    sessionId: string;
    /**
     * @generated from protobuf field: repeated stream.video.sfu.signal.TrackMuteState mute_states = 3;
     */
    muteStates: TrackMuteState[];
}
/**
 * @generated from protobuf message stream.video.sfu.signal.UpdateMuteStatesResponse
 */
export interface UpdateMuteStatesResponse {
    /**
     * @generated from protobuf field: stream.video.sfu.models.Error error = 4;
     */
    error?: Error;
}
/**
 * @generated from protobuf message stream.video.sfu.signal.TrackMuteState
 */
export interface TrackMuteState {
    /**
     * @generated from protobuf field: stream.video.sfu.models.TrackType track_type = 1;
     */
    trackType: TrackType;
    /**
     * @generated from protobuf field: bool muted = 2;
     */
    muted: boolean;
}
/**
 * @generated from protobuf message stream.video.sfu.signal.AudioMuteChanged
 */
export interface AudioMuteChanged {
    /**
     * @generated from protobuf field: bool muted = 1;
     */
    muted: boolean;
}
/**
 * @generated from protobuf message stream.video.sfu.signal.VideoMuteChanged
 */
export interface VideoMuteChanged {
    /**
     * @generated from protobuf field: bool muted = 2;
     */
    muted: boolean;
}
/**
 * @generated from protobuf message stream.video.sfu.signal.UpdateSubscriptionsRequest
 */
export interface UpdateSubscriptionsRequest {
    /**
     * @generated from protobuf field: string session_id = 2;
     */
    sessionId: string;
    /**
     * @generated from protobuf field: repeated stream.video.sfu.signal.TrackSubscriptionDetails tracks = 3;
     */
    tracks: TrackSubscriptionDetails[];
}
/**
 * @generated from protobuf message stream.video.sfu.signal.UpdateSubscriptionsResponse
 */
export interface UpdateSubscriptionsResponse {
    /**
     * @generated from protobuf field: stream.video.sfu.models.Error error = 4;
     */
    error?: Error;
}
/**
 * @generated from protobuf message stream.video.sfu.signal.TrackSubscriptionDetails
 */
export interface TrackSubscriptionDetails {
    /**
     * @generated from protobuf field: string user_id = 1;
     */
    userId: string;
    /**
     * @generated from protobuf field: string session_id = 2;
     */
    sessionId: string;
    /**
     * @generated from protobuf field: stream.video.sfu.models.TrackType track_type = 3;
     */
    trackType: TrackType;
    /**
     * @generated from protobuf field: stream.video.sfu.models.VideoDimension dimension = 4;
     */
    dimension?: VideoDimension;
}
/**
 * @generated from protobuf message stream.video.sfu.signal.SendAnswerRequest
 */
export interface SendAnswerRequest {
    /**
     * @generated from protobuf field: stream.video.sfu.models.PeerType peer_type = 1;
     */
    peerType: PeerType;
    /**
     * @generated from protobuf field: string sdp = 2;
     */
    sdp: string;
    /**
     * @generated from protobuf field: string session_id = 3;
     */
    sessionId: string;
    /**
     * @generated from protobuf field: uint32 negotiation_id = 4;
     */
    negotiationId: number;
}
/**
 * @generated from protobuf message stream.video.sfu.signal.SendAnswerResponse
 */
export interface SendAnswerResponse {
    /**
     * @generated from protobuf field: stream.video.sfu.models.Error error = 4;
     */
    error?: Error;
}
/**
 * @generated from protobuf message stream.video.sfu.signal.ICETrickleResponse
 */
export interface ICETrickleResponse {
    /**
     * @generated from protobuf field: stream.video.sfu.models.Error error = 4;
     */
    error?: Error;
}
/**
 * @generated from protobuf message stream.video.sfu.signal.SetPublisherRequest
 */
export interface SetPublisherRequest {
    /**
     * sdp offer
     *
     * @generated from protobuf field: string sdp = 1;
     */
    sdp: string;
    /**
     * @generated from protobuf field: string session_id = 2;
     */
    sessionId: string;
    /**
     * @generated from protobuf field: repeated stream.video.sfu.models.TrackInfo tracks = 3;
     */
    tracks: TrackInfo[];
}
/**
 * @generated from protobuf message stream.video.sfu.signal.SetPublisherResponse
 */
export interface SetPublisherResponse {
    /**
     * sdp answer
     *
     * @generated from protobuf field: string sdp = 1;
     */
    sdp: string;
    /**
     * @generated from protobuf field: string session_id = 2;
     */
    sessionId: string;
    /**
     * @generated from protobuf field: bool ice_restart = 3;
     */
    iceRestart: boolean;
    /**
     * @generated from protobuf field: stream.video.sfu.models.Error error = 4;
     */
    error?: Error;
}
declare class StartNoiseCancellationRequest$Type extends MessageType<StartNoiseCancellationRequest> {
    constructor();
}
/**
 * @generated MessageType for protobuf message stream.video.sfu.signal.StartNoiseCancellationRequest
 */
export declare const StartNoiseCancellationRequest: StartNoiseCancellationRequest$Type;
declare class StartNoiseCancellationResponse$Type extends MessageType<StartNoiseCancellationResponse> {
    constructor();
}
/**
 * @generated MessageType for protobuf message stream.video.sfu.signal.StartNoiseCancellationResponse
 */
export declare const StartNoiseCancellationResponse: StartNoiseCancellationResponse$Type;
declare class StopNoiseCancellationRequest$Type extends MessageType<StopNoiseCancellationRequest> {
    constructor();
}
/**
 * @generated MessageType for protobuf message stream.video.sfu.signal.StopNoiseCancellationRequest
 */
export declare const StopNoiseCancellationRequest: StopNoiseCancellationRequest$Type;
declare class StopNoiseCancellationResponse$Type extends MessageType<StopNoiseCancellationResponse> {
    constructor();
}
/**
 * @generated MessageType for protobuf message stream.video.sfu.signal.StopNoiseCancellationResponse
 */
export declare const StopNoiseCancellationResponse: StopNoiseCancellationResponse$Type;
declare class Reconnection$Type extends MessageType<Reconnection> {
    constructor();
}
/**
 * @generated MessageType for protobuf message stream.video.sfu.signal.Reconnection
 */
export declare const Reconnection: Reconnection$Type;
declare class Telemetry$Type extends MessageType<Telemetry> {
    constructor();
}
/**
 * @generated MessageType for protobuf message stream.video.sfu.signal.Telemetry
 */
export declare const Telemetry: Telemetry$Type;
declare class SendMetricsRequest$Type extends MessageType<SendMetricsRequest> {
    constructor();
}
/**
 * @generated MessageType for protobuf message stream.video.sfu.signal.SendMetricsRequest
 */
export declare const SendMetricsRequest: SendMetricsRequest$Type;
declare class SendMetricsResponse$Type extends MessageType<SendMetricsResponse> {
    constructor();
}
/**
 * @generated MessageType for protobuf message stream.video.sfu.signal.SendMetricsResponse
 */
export declare const SendMetricsResponse: SendMetricsResponse$Type;
declare class SendStatsRequest$Type extends MessageType<SendStatsRequest> {
    constructor();
}
/**
 * @generated MessageType for protobuf message stream.video.sfu.signal.SendStatsRequest
 */
export declare const SendStatsRequest: SendStatsRequest$Type;
declare class SendStatsResponse$Type extends MessageType<SendStatsResponse> {
    constructor();
}
/**
 * @generated MessageType for protobuf message stream.video.sfu.signal.SendStatsResponse
 */
export declare const SendStatsResponse: SendStatsResponse$Type;
declare class ICERestartRequest$Type extends MessageType<ICERestartRequest> {
    constructor();
}
/**
 * @generated MessageType for protobuf message stream.video.sfu.signal.ICERestartRequest
 */
export declare const ICERestartRequest: ICERestartRequest$Type;
declare class ICERestartResponse$Type extends MessageType<ICERestartResponse> {
    constructor();
}
/**
 * @generated MessageType for protobuf message stream.video.sfu.signal.ICERestartResponse
 */
export declare const ICERestartResponse: ICERestartResponse$Type;
declare class UpdateMuteStatesRequest$Type extends MessageType<UpdateMuteStatesRequest> {
    constructor();
}
/**
 * @generated MessageType for protobuf message stream.video.sfu.signal.UpdateMuteStatesRequest
 */
export declare const UpdateMuteStatesRequest: UpdateMuteStatesRequest$Type;
declare class UpdateMuteStatesResponse$Type extends MessageType<UpdateMuteStatesResponse> {
    constructor();
}
/**
 * @generated MessageType for protobuf message stream.video.sfu.signal.UpdateMuteStatesResponse
 */
export declare const UpdateMuteStatesResponse: UpdateMuteStatesResponse$Type;
declare class TrackMuteState$Type extends MessageType<TrackMuteState> {
    constructor();
}
/**
 * @generated MessageType for protobuf message stream.video.sfu.signal.TrackMuteState
 */
export declare const TrackMuteState: TrackMuteState$Type;
declare class AudioMuteChanged$Type extends MessageType<AudioMuteChanged> {
    constructor();
}
/**
 * @generated MessageType for protobuf message stream.video.sfu.signal.AudioMuteChanged
 */
export declare const AudioMuteChanged: AudioMuteChanged$Type;
declare class VideoMuteChanged$Type extends MessageType<VideoMuteChanged> {
    constructor();
}
/**
 * @generated MessageType for protobuf message stream.video.sfu.signal.VideoMuteChanged
 */
export declare const VideoMuteChanged: VideoMuteChanged$Type;
declare class UpdateSubscriptionsRequest$Type extends MessageType<UpdateSubscriptionsRequest> {
    constructor();
}
/**
 * @generated MessageType for protobuf message stream.video.sfu.signal.UpdateSubscriptionsRequest
 */
export declare const UpdateSubscriptionsRequest: UpdateSubscriptionsRequest$Type;
declare class UpdateSubscriptionsResponse$Type extends MessageType<UpdateSubscriptionsResponse> {
    constructor();
}
/**
 * @generated MessageType for protobuf message stream.video.sfu.signal.UpdateSubscriptionsResponse
 */
export declare const UpdateSubscriptionsResponse: UpdateSubscriptionsResponse$Type;
declare class TrackSubscriptionDetails$Type extends MessageType<TrackSubscriptionDetails> {
    constructor();
}
/**
 * @generated MessageType for protobuf message stream.video.sfu.signal.TrackSubscriptionDetails
 */
export declare const TrackSubscriptionDetails: TrackSubscriptionDetails$Type;
declare class SendAnswerRequest$Type extends MessageType<SendAnswerRequest> {
    constructor();
}
/**
 * @generated MessageType for protobuf message stream.video.sfu.signal.SendAnswerRequest
 */
export declare const SendAnswerRequest: SendAnswerRequest$Type;
declare class SendAnswerResponse$Type extends MessageType<SendAnswerResponse> {
    constructor();
}
/**
 * @generated MessageType for protobuf message stream.video.sfu.signal.SendAnswerResponse
 */
export declare const SendAnswerResponse: SendAnswerResponse$Type;
declare class ICETrickleResponse$Type extends MessageType<ICETrickleResponse> {
    constructor();
}
/**
 * @generated MessageType for protobuf message stream.video.sfu.signal.ICETrickleResponse
 */
export declare const ICETrickleResponse: ICETrickleResponse$Type;
declare class SetPublisherRequest$Type extends MessageType<SetPublisherRequest> {
    constructor();
}
/**
 * @generated MessageType for protobuf message stream.video.sfu.signal.SetPublisherRequest
 */
export declare const SetPublisherRequest: SetPublisherRequest$Type;
declare class SetPublisherResponse$Type extends MessageType<SetPublisherResponse> {
    constructor();
}
/**
 * @generated MessageType for protobuf message stream.video.sfu.signal.SetPublisherResponse
 */
export declare const SetPublisherResponse: SetPublisherResponse$Type;
/**
 * @generated ServiceType for protobuf service stream.video.sfu.signal.SignalServer
 */
export declare const SignalServer: ServiceType;
export {};
