// @generated by protobuf-ts 2.10.0 with parameter long_type_string,client_generic,server_none,eslint_disable,optimize_code_size // @generated from protobuf file "video/sfu/signal_rpc/signal.proto" (package "stream.video.sfu.signal", syntax proto3) // tslint:disable import { AndroidState, AppleState, Error, ICETrickle, InputDevices, PeerType, PerformanceStats, RTMPIngress, TrackInfo, TrackType, VideoDimension, WebsocketReconnectStrategy, } from '../models/models'; import { ServiceType } from '@protobuf-ts/runtime-rpc'; import { MessageType } from '@protobuf-ts/runtime'; /** * @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.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 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; } // @generated message type with reflection information, may provide speed optimized methods class StartNoiseCancellationRequest$Type extends MessageType { constructor() { super('stream.video.sfu.signal.StartNoiseCancellationRequest', [ { no: 1, name: 'session_id', kind: 'scalar', T: 9 /*ScalarType.STRING*/ }, ]); } } /** * @generated MessageType for protobuf message stream.video.sfu.signal.StartNoiseCancellationRequest */ export const StartNoiseCancellationRequest = new StartNoiseCancellationRequest$Type(); // @generated message type with reflection information, may provide speed optimized methods class StartNoiseCancellationResponse$Type extends MessageType { constructor() { super('stream.video.sfu.signal.StartNoiseCancellationResponse', [ { no: 1, name: 'error', kind: 'message', T: () => Error }, ]); } } /** * @generated MessageType for protobuf message stream.video.sfu.signal.StartNoiseCancellationResponse */ export const StartNoiseCancellationResponse = new StartNoiseCancellationResponse$Type(); // @generated message type with reflection information, may provide speed optimized methods class StopNoiseCancellationRequest$Type extends MessageType { constructor() { super('stream.video.sfu.signal.StopNoiseCancellationRequest', [ { no: 1, name: 'session_id', kind: 'scalar', T: 9 /*ScalarType.STRING*/ }, ]); } } /** * @generated MessageType for protobuf message stream.video.sfu.signal.StopNoiseCancellationRequest */ export const StopNoiseCancellationRequest = new StopNoiseCancellationRequest$Type(); // @generated message type with reflection information, may provide speed optimized methods class StopNoiseCancellationResponse$Type extends MessageType { constructor() { super('stream.video.sfu.signal.StopNoiseCancellationResponse', [ { no: 1, name: 'error', kind: 'message', T: () => Error }, ]); } } /** * @generated MessageType for protobuf message stream.video.sfu.signal.StopNoiseCancellationResponse */ export const StopNoiseCancellationResponse = new StopNoiseCancellationResponse$Type(); // @generated message type with reflection information, may provide speed optimized methods class Reconnection$Type extends MessageType { constructor() { super('stream.video.sfu.signal.Reconnection', [ { no: 1, name: 'time_seconds', kind: 'scalar', T: 2 /*ScalarType.FLOAT*/, }, { no: 2, name: 'strategy', kind: 'enum', T: () => [ 'stream.video.sfu.models.WebsocketReconnectStrategy', WebsocketReconnectStrategy, 'WEBSOCKET_RECONNECT_STRATEGY_', ], }, ]); } } /** * @generated MessageType for protobuf message stream.video.sfu.signal.Reconnection */ export const Reconnection = new Reconnection$Type(); // @generated message type with reflection information, may provide speed optimized methods class Telemetry$Type extends MessageType { constructor() { super('stream.video.sfu.signal.Telemetry', [ { no: 1, name: 'connection_time_seconds', kind: 'scalar', oneof: 'data', T: 2 /*ScalarType.FLOAT*/, }, { no: 2, name: 'reconnection', kind: 'message', oneof: 'data', T: () => Reconnection, }, ]); } } /** * @generated MessageType for protobuf message stream.video.sfu.signal.Telemetry */ export const Telemetry = new Telemetry$Type(); // @generated message type with reflection information, may provide speed optimized methods class SendStatsRequest$Type extends MessageType { constructor() { super('stream.video.sfu.signal.SendStatsRequest', [ { no: 1, name: 'session_id', kind: 'scalar', T: 9 /*ScalarType.STRING*/ }, { no: 2, name: 'subscriber_stats', kind: 'scalar', T: 9 /*ScalarType.STRING*/, }, { no: 3, name: 'publisher_stats', kind: 'scalar', T: 9 /*ScalarType.STRING*/, }, { no: 4, name: 'webrtc_version', kind: 'scalar', T: 9 /*ScalarType.STRING*/, }, { no: 5, name: 'sdk', kind: 'scalar', T: 9 /*ScalarType.STRING*/ }, { no: 6, name: 'sdk_version', kind: 'scalar', T: 9 /*ScalarType.STRING*/, }, { no: 7, name: 'audio_devices', kind: 'message', T: () => InputDevices }, { no: 8, name: 'video_devices', kind: 'message', T: () => InputDevices }, { no: 9, name: 'android', kind: 'message', oneof: 'deviceState', T: () => AndroidState, }, { no: 10, name: 'apple', kind: 'message', oneof: 'deviceState', T: () => AppleState, }, { no: 11, name: 'telemetry', kind: 'message', T: () => Telemetry }, { no: 12, name: 'rtmp', kind: 'message', T: () => RTMPIngress }, { no: 13, name: 'subscriber_rtc_stats', kind: 'scalar', T: 9 /*ScalarType.STRING*/, }, { no: 14, name: 'publisher_rtc_stats', kind: 'scalar', T: 9 /*ScalarType.STRING*/, }, { no: 15, name: 'rtc_stats', kind: 'scalar', T: 9 /*ScalarType.STRING*/ }, { no: 16, name: 'encode_stats', kind: 'message', repeat: 2 /*RepeatType.UNPACKED*/, T: () => PerformanceStats, }, { no: 17, name: 'decode_stats', kind: 'message', repeat: 2 /*RepeatType.UNPACKED*/, T: () => PerformanceStats, }, { no: 18, name: 'unified_session_id', kind: 'scalar', T: 9 /*ScalarType.STRING*/, }, ]); } } /** * @generated MessageType for protobuf message stream.video.sfu.signal.SendStatsRequest */ export const SendStatsRequest = new SendStatsRequest$Type(); // @generated message type with reflection information, may provide speed optimized methods class SendStatsResponse$Type extends MessageType { constructor() { super('stream.video.sfu.signal.SendStatsResponse', [ { no: 1, name: 'error', kind: 'message', T: () => Error }, ]); } } /** * @generated MessageType for protobuf message stream.video.sfu.signal.SendStatsResponse */ export const SendStatsResponse = new SendStatsResponse$Type(); // @generated message type with reflection information, may provide speed optimized methods class ICERestartRequest$Type extends MessageType { constructor() { super('stream.video.sfu.signal.ICERestartRequest', [ { no: 1, name: 'session_id', kind: 'scalar', T: 9 /*ScalarType.STRING*/ }, { no: 2, name: 'peer_type', kind: 'enum', T: () => ['stream.video.sfu.models.PeerType', PeerType, 'PEER_TYPE_'], }, ]); } } /** * @generated MessageType for protobuf message stream.video.sfu.signal.ICERestartRequest */ export const ICERestartRequest = new ICERestartRequest$Type(); // @generated message type with reflection information, may provide speed optimized methods class ICERestartResponse$Type extends MessageType { constructor() { super('stream.video.sfu.signal.ICERestartResponse', [ { no: 1, name: 'error', kind: 'message', T: () => Error }, ]); } } /** * @generated MessageType for protobuf message stream.video.sfu.signal.ICERestartResponse */ export const ICERestartResponse = new ICERestartResponse$Type(); // @generated message type with reflection information, may provide speed optimized methods class UpdateMuteStatesRequest$Type extends MessageType { constructor() { super('stream.video.sfu.signal.UpdateMuteStatesRequest', [ { no: 1, name: 'session_id', kind: 'scalar', T: 9 /*ScalarType.STRING*/ }, { no: 3, name: 'mute_states', kind: 'message', repeat: 2 /*RepeatType.UNPACKED*/, T: () => TrackMuteState, }, ]); } } /** * @generated MessageType for protobuf message stream.video.sfu.signal.UpdateMuteStatesRequest */ export const UpdateMuteStatesRequest = new UpdateMuteStatesRequest$Type(); // @generated message type with reflection information, may provide speed optimized methods class UpdateMuteStatesResponse$Type extends MessageType { constructor() { super('stream.video.sfu.signal.UpdateMuteStatesResponse', [ { no: 4, name: 'error', kind: 'message', T: () => Error }, ]); } } /** * @generated MessageType for protobuf message stream.video.sfu.signal.UpdateMuteStatesResponse */ export const UpdateMuteStatesResponse = new UpdateMuteStatesResponse$Type(); // @generated message type with reflection information, may provide speed optimized methods class TrackMuteState$Type extends MessageType { constructor() { super('stream.video.sfu.signal.TrackMuteState', [ { no: 1, name: 'track_type', kind: 'enum', T: () => [ 'stream.video.sfu.models.TrackType', TrackType, 'TRACK_TYPE_', ], }, { no: 2, name: 'muted', kind: 'scalar', T: 8 /*ScalarType.BOOL*/ }, ]); } } /** * @generated MessageType for protobuf message stream.video.sfu.signal.TrackMuteState */ export const TrackMuteState = new TrackMuteState$Type(); // @generated message type with reflection information, may provide speed optimized methods class AudioMuteChanged$Type extends MessageType { constructor() { super('stream.video.sfu.signal.AudioMuteChanged', [ { no: 1, name: 'muted', kind: 'scalar', T: 8 /*ScalarType.BOOL*/ }, ]); } } /** * @generated MessageType for protobuf message stream.video.sfu.signal.AudioMuteChanged */ export const AudioMuteChanged = new AudioMuteChanged$Type(); // @generated message type with reflection information, may provide speed optimized methods class VideoMuteChanged$Type extends MessageType { constructor() { super('stream.video.sfu.signal.VideoMuteChanged', [ { no: 2, name: 'muted', kind: 'scalar', T: 8 /*ScalarType.BOOL*/ }, ]); } } /** * @generated MessageType for protobuf message stream.video.sfu.signal.VideoMuteChanged */ export const VideoMuteChanged = new VideoMuteChanged$Type(); // @generated message type with reflection information, may provide speed optimized methods class UpdateSubscriptionsRequest$Type extends MessageType { constructor() { super('stream.video.sfu.signal.UpdateSubscriptionsRequest', [ { no: 2, name: 'session_id', kind: 'scalar', T: 9 /*ScalarType.STRING*/ }, { no: 3, name: 'tracks', kind: 'message', repeat: 2 /*RepeatType.UNPACKED*/, T: () => TrackSubscriptionDetails, }, ]); } } /** * @generated MessageType for protobuf message stream.video.sfu.signal.UpdateSubscriptionsRequest */ export const UpdateSubscriptionsRequest = new UpdateSubscriptionsRequest$Type(); // @generated message type with reflection information, may provide speed optimized methods class UpdateSubscriptionsResponse$Type extends MessageType { constructor() { super('stream.video.sfu.signal.UpdateSubscriptionsResponse', [ { no: 4, name: 'error', kind: 'message', T: () => Error }, ]); } } /** * @generated MessageType for protobuf message stream.video.sfu.signal.UpdateSubscriptionsResponse */ export const UpdateSubscriptionsResponse = new UpdateSubscriptionsResponse$Type(); // @generated message type with reflection information, may provide speed optimized methods class TrackSubscriptionDetails$Type extends MessageType { constructor() { super('stream.video.sfu.signal.TrackSubscriptionDetails', [ { no: 1, name: 'user_id', kind: 'scalar', T: 9 /*ScalarType.STRING*/ }, { no: 2, name: 'session_id', kind: 'scalar', T: 9 /*ScalarType.STRING*/ }, { no: 3, name: 'track_type', kind: 'enum', T: () => [ 'stream.video.sfu.models.TrackType', TrackType, 'TRACK_TYPE_', ], }, { no: 4, name: 'dimension', kind: 'message', T: () => VideoDimension }, ]); } } /** * @generated MessageType for protobuf message stream.video.sfu.signal.TrackSubscriptionDetails */ export const TrackSubscriptionDetails = new TrackSubscriptionDetails$Type(); // @generated message type with reflection information, may provide speed optimized methods class SendAnswerRequest$Type extends MessageType { constructor() { super('stream.video.sfu.signal.SendAnswerRequest', [ { no: 1, name: 'peer_type', kind: 'enum', T: () => ['stream.video.sfu.models.PeerType', PeerType, 'PEER_TYPE_'], }, { no: 2, name: 'sdp', kind: 'scalar', T: 9 /*ScalarType.STRING*/ }, { no: 3, name: 'session_id', kind: 'scalar', T: 9 /*ScalarType.STRING*/ }, ]); } } /** * @generated MessageType for protobuf message stream.video.sfu.signal.SendAnswerRequest */ export const SendAnswerRequest = new SendAnswerRequest$Type(); // @generated message type with reflection information, may provide speed optimized methods class SendAnswerResponse$Type extends MessageType { constructor() { super('stream.video.sfu.signal.SendAnswerResponse', [ { no: 4, name: 'error', kind: 'message', T: () => Error }, ]); } } /** * @generated MessageType for protobuf message stream.video.sfu.signal.SendAnswerResponse */ export const SendAnswerResponse = new SendAnswerResponse$Type(); // @generated message type with reflection information, may provide speed optimized methods class ICETrickleResponse$Type extends MessageType { constructor() { super('stream.video.sfu.signal.ICETrickleResponse', [ { no: 4, name: 'error', kind: 'message', T: () => Error }, ]); } } /** * @generated MessageType for protobuf message stream.video.sfu.signal.ICETrickleResponse */ export const ICETrickleResponse = new ICETrickleResponse$Type(); // @generated message type with reflection information, may provide speed optimized methods class SetPublisherRequest$Type extends MessageType { constructor() { super('stream.video.sfu.signal.SetPublisherRequest', [ { no: 1, name: 'sdp', kind: 'scalar', T: 9 /*ScalarType.STRING*/ }, { no: 2, name: 'session_id', kind: 'scalar', T: 9 /*ScalarType.STRING*/ }, { no: 3, name: 'tracks', kind: 'message', repeat: 2 /*RepeatType.UNPACKED*/, T: () => TrackInfo, }, ]); } } /** * @generated MessageType for protobuf message stream.video.sfu.signal.SetPublisherRequest */ export const SetPublisherRequest = new SetPublisherRequest$Type(); // @generated message type with reflection information, may provide speed optimized methods class SetPublisherResponse$Type extends MessageType { constructor() { super('stream.video.sfu.signal.SetPublisherResponse', [ { no: 1, name: 'sdp', kind: 'scalar', T: 9 /*ScalarType.STRING*/ }, { no: 2, name: 'session_id', kind: 'scalar', T: 9 /*ScalarType.STRING*/ }, { no: 3, name: 'ice_restart', kind: 'scalar', T: 8 /*ScalarType.BOOL*/ }, { no: 4, name: 'error', kind: 'message', T: () => Error }, ]); } } /** * @generated MessageType for protobuf message stream.video.sfu.signal.SetPublisherResponse */ export const SetPublisherResponse = new SetPublisherResponse$Type(); /** * @generated ServiceType for protobuf service stream.video.sfu.signal.SignalServer */ export const SignalServer = new ServiceType( 'stream.video.sfu.signal.SignalServer', [ { name: 'SetPublisher', options: {}, I: SetPublisherRequest, O: SetPublisherResponse, }, { name: 'SendAnswer', options: {}, I: SendAnswerRequest, O: SendAnswerResponse, }, { name: 'IceTrickle', options: {}, I: ICETrickle, O: ICETrickleResponse }, { name: 'UpdateSubscriptions', options: {}, I: UpdateSubscriptionsRequest, O: UpdateSubscriptionsResponse, }, { name: 'UpdateMuteStates', options: {}, I: UpdateMuteStatesRequest, O: UpdateMuteStatesResponse, }, { name: 'IceRestart', options: {}, I: ICERestartRequest, O: ICERestartResponse, }, { name: 'SendStats', options: {}, I: SendStatsRequest, O: SendStatsResponse, }, { name: 'StartNoiseCancellation', options: {}, I: StartNoiseCancellationRequest, O: StartNoiseCancellationResponse, }, { name: 'StopNoiseCancellation', options: {}, I: StopNoiseCancellationRequest, O: StopNoiseCancellationResponse, }, ], );