@fishjam-cloud/ts-client 0.25.0-rc.3 → 0.25.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.mts +189 -1
- package/dist/index.mjs +1 -1
- package/package.json +3 -4
package/dist/index.d.mts
CHANGED
|
@@ -10,6 +10,7 @@ declare class TrackTypeError extends Error {
|
|
|
10
10
|
}
|
|
11
11
|
|
|
12
12
|
declare const getLogger: (enableLogging: boolean) => {
|
|
13
|
+
readonly debug: (arg: unknown, ...args: unknown[]) => void;
|
|
13
14
|
readonly warn: (arg: unknown, ...args: unknown[]) => void;
|
|
14
15
|
readonly error: (arg: unknown, ...args: unknown[]) => void;
|
|
15
16
|
};
|
|
@@ -425,6 +426,20 @@ interface WebRTCEndpointEvents {
|
|
|
425
426
|
trackId: string;
|
|
426
427
|
metadata: unknown;
|
|
427
428
|
}) => void;
|
|
429
|
+
/**
|
|
430
|
+
* Emitted when data channels (for both reliable and lossy) are created and ready to send data.
|
|
431
|
+
* This event is fired after calling connectDataChannels().
|
|
432
|
+
*/
|
|
433
|
+
dataChannelsReady: () => void;
|
|
434
|
+
/**
|
|
435
|
+
* Emitted when data is received on any data channel.
|
|
436
|
+
* The payload includes the channel type (reliable/lossy) and the binary data.
|
|
437
|
+
*/
|
|
438
|
+
dataChannelPayload: (payload: DataChannelMessagePayload) => void;
|
|
439
|
+
/**
|
|
440
|
+
* Emitted when any data channel errors.
|
|
441
|
+
*/
|
|
442
|
+
dataChannelsError: (error: Error) => void;
|
|
428
443
|
}
|
|
429
444
|
/**
|
|
430
445
|
* Interface describing Endpoint.
|
|
@@ -447,6 +462,39 @@ interface Endpoint {
|
|
|
447
462
|
*/
|
|
448
463
|
tracks: Map<string, TrackContext>;
|
|
449
464
|
}
|
|
465
|
+
/**
|
|
466
|
+
* Options for publishing or subscribing to data.
|
|
467
|
+
*/
|
|
468
|
+
interface DataChannelOptions {
|
|
469
|
+
/**
|
|
470
|
+
* If true, uses the reliable data channel (ordered, guaranteed delivery).
|
|
471
|
+
* If false, uses the lossy data channel (unordered, low latency).
|
|
472
|
+
*/
|
|
473
|
+
reliable: boolean;
|
|
474
|
+
}
|
|
475
|
+
/**
|
|
476
|
+
* Callback type for receiving data from a data channel.
|
|
477
|
+
* @param data - The received data as a Uint8Array
|
|
478
|
+
*/
|
|
479
|
+
type DataCallback = (data: Uint8Array) => void;
|
|
480
|
+
/**
|
|
481
|
+
* Internal type for channel classification
|
|
482
|
+
* @internal
|
|
483
|
+
*/
|
|
484
|
+
type DataChannelType = 'reliable' | 'lossy';
|
|
485
|
+
/**
|
|
486
|
+
* Payload for data received events from data channels.
|
|
487
|
+
*/
|
|
488
|
+
interface DataChannelMessagePayload {
|
|
489
|
+
/**
|
|
490
|
+
* The type of channel the data was received on.
|
|
491
|
+
*/
|
|
492
|
+
channelType: DataChannelType;
|
|
493
|
+
/**
|
|
494
|
+
* The binary payload data.
|
|
495
|
+
*/
|
|
496
|
+
data: Uint8Array;
|
|
497
|
+
}
|
|
450
498
|
type WebRTCEndpointProps = {
|
|
451
499
|
/**
|
|
452
500
|
* Enables Fishjam SDK's debug logs in the console.
|
|
@@ -468,6 +516,7 @@ declare class ConnectionManager {
|
|
|
468
516
|
removeTrack: (sender: RTCRtpSender) => void;
|
|
469
517
|
findSender: (mediaStreamTrackId: MediaStreamTrackId) => RTCRtpSender;
|
|
470
518
|
addIceCandidate: (iceCandidate: RTCIceCandidate) => Promise<void>;
|
|
519
|
+
createDataChannel: (label: string, config: RTCDataChannelInit) => RTCDataChannel;
|
|
471
520
|
}
|
|
472
521
|
|
|
473
522
|
declare const TrackContextImpl_base: new () => TypedEmitter<Required<TrackContextEvents$1>>;
|
|
@@ -501,6 +550,7 @@ declare class WebRTCEndpoint extends WebRTCEndpoint_base {
|
|
|
501
550
|
private readonly remote;
|
|
502
551
|
private readonly local;
|
|
503
552
|
private readonly commandsQueue;
|
|
553
|
+
private readonly dataChannelManager;
|
|
504
554
|
private proposedIceServers;
|
|
505
555
|
private logger;
|
|
506
556
|
bandwidthEstimation: bigint;
|
|
@@ -564,6 +614,7 @@ declare class WebRTCEndpoint extends WebRTCEndpoint_base {
|
|
|
564
614
|
getRemoteEndpoints(): Record<string, EndpointWithTrackContext>;
|
|
565
615
|
getLocalEndpoint(): EndpointWithTrackContext;
|
|
566
616
|
getBandwidthEstimation(): bigint;
|
|
617
|
+
getDataChannelsReadiness(): boolean;
|
|
567
618
|
private handleMediaEvent;
|
|
568
619
|
private onSdpAnswer;
|
|
569
620
|
/**
|
|
@@ -768,6 +819,54 @@ declare class WebRTCEndpoint extends WebRTCEndpoint_base {
|
|
|
768
819
|
* that endpoint was removed in {@link WebRTCEndpointEvents.endpointRemoved},
|
|
769
820
|
*/
|
|
770
821
|
disconnect: () => void;
|
|
822
|
+
/**
|
|
823
|
+
* Create both reliable and lossy data channel.
|
|
824
|
+
* This method must be called before publishData() can be used.
|
|
825
|
+
* Emits the 'dataChannelsReady' event when both channels are open and ready.
|
|
826
|
+
*
|
|
827
|
+
* @example
|
|
828
|
+
* ```ts
|
|
829
|
+
* const webrtc = new WebRTCEndpoint();
|
|
830
|
+
*
|
|
831
|
+
* webrtc.on('dataChannelsReady', () => {
|
|
832
|
+
* console.log('Data channels ready, can now send data');
|
|
833
|
+
* webrtc.publishData(new TextEncoder().encode('Hello'), { reliable: true });
|
|
834
|
+
* });
|
|
835
|
+
*
|
|
836
|
+
* webrtc.connectDataChannels();
|
|
837
|
+
* ```
|
|
838
|
+
*/
|
|
839
|
+
connectDataChannels: () => Promise<void>;
|
|
840
|
+
/**
|
|
841
|
+
* Publish data through a data channel.
|
|
842
|
+
* The data channels must be created first by calling connectDataChannels() or enabling negotiateOnConnect.
|
|
843
|
+
* Throws an error if the channel doesn't exist or isn't ready yet.
|
|
844
|
+
*
|
|
845
|
+
* @param data - The data to send as Uint8Array
|
|
846
|
+
* @param options - Options specifying which channel to use (reliable or lossy)
|
|
847
|
+
* @throws Error if the channel doesn't exist or isn't ready
|
|
848
|
+
*
|
|
849
|
+
* @example
|
|
850
|
+
* ```ts
|
|
851
|
+
* // Subscribe to incoming data
|
|
852
|
+
* webrtc.on('dataReceived', ({ channelType, data }) => {
|
|
853
|
+
* console.log(`Received on ${channelType}:`, new TextDecoder().decode(data));
|
|
854
|
+
* });
|
|
855
|
+
*
|
|
856
|
+
* webrtc.on('dataChannelsReady', () => {
|
|
857
|
+
* // Send reliable data
|
|
858
|
+
* const data = new TextEncoder().encode('Hello World');
|
|
859
|
+
* webrtc.publishData(data, { reliable: true });
|
|
860
|
+
*
|
|
861
|
+
* // Send lossy data for low-latency updates
|
|
862
|
+
* const gameState = new Uint8Array([1, 2, 3, 4, 5]);
|
|
863
|
+
* webrtc.publishData(gameState, { reliable: false });
|
|
864
|
+
* });
|
|
865
|
+
*
|
|
866
|
+
* webrtc.connectDataChannels();
|
|
867
|
+
* ```
|
|
868
|
+
*/
|
|
869
|
+
publishData: (data: Uint8Array, options: DataChannelOptions) => void;
|
|
771
870
|
/**
|
|
772
871
|
* Cleans up {@link WebRTCEndpoint} instance.
|
|
773
872
|
*/
|
|
@@ -968,7 +1067,20 @@ type MessageEvents<P, S> = {
|
|
|
968
1067
|
localPeerMetadataChanged: (event: Parameters<WebRTCEndpointEvents['localEndpointMetadataChanged']>[0]) => void;
|
|
969
1068
|
localTrackMetadataChanged: (event: Parameters<WebRTCEndpointEvents['localTrackMetadataChanged']>[0]) => void;
|
|
970
1069
|
disconnectRequested: (event: Parameters<WebRTCEndpointEvents['disconnectRequested']>[0]) => void;
|
|
1070
|
+
/**
|
|
1071
|
+
* Emitted when data channel publishers (both reliable and lossy) are created and ready to send data.
|
|
1072
|
+
*/
|
|
1073
|
+
dataChannelsReady: () => void;
|
|
1074
|
+
/**
|
|
1075
|
+
* Emitted when data channel publishers (both reliable or lossy) fail.
|
|
1076
|
+
*/
|
|
1077
|
+
dataChannelsError: (error: Error) => void;
|
|
971
1078
|
};
|
|
1079
|
+
/**
|
|
1080
|
+
* Represents the type of client used.
|
|
1081
|
+
* @category Connection
|
|
1082
|
+
*/
|
|
1083
|
+
type ClientType = 'web' | 'mobile';
|
|
972
1084
|
/** Configuration object for the client */
|
|
973
1085
|
interface ConnectConfig<PeerMetadata> {
|
|
974
1086
|
/** Metadata for the peer */
|
|
@@ -984,6 +1096,8 @@ type CreateConfig = {
|
|
|
984
1096
|
* Enables Fishjam SDK's debug logs in the console.
|
|
985
1097
|
*/
|
|
986
1098
|
debug?: boolean;
|
|
1099
|
+
/** Type of client used */
|
|
1100
|
+
clientType?: ClientType;
|
|
987
1101
|
};
|
|
988
1102
|
|
|
989
1103
|
declare const FishjamClient_base: {
|
|
@@ -1029,6 +1143,7 @@ declare class FishjamClient<PeerMetadata = GenericMetadata, ServerMetadata = Gen
|
|
|
1029
1143
|
private removeEventListeners;
|
|
1030
1144
|
private debug;
|
|
1031
1145
|
private logger;
|
|
1146
|
+
private clientType;
|
|
1032
1147
|
status: 'new' | 'initialized';
|
|
1033
1148
|
private connectConfig;
|
|
1034
1149
|
private isAudioOnlyConnection;
|
|
@@ -1321,6 +1436,7 @@ declare class FishjamClient<PeerMetadata = GenericMetadata, ServerMetadata = Gen
|
|
|
1321
1436
|
*/
|
|
1322
1437
|
updateTrackMetadata: (trackId: string, trackMetadata: TrackMetadata) => void;
|
|
1323
1438
|
isReconnecting(): boolean;
|
|
1439
|
+
getDataChannelsReadiness(): boolean;
|
|
1324
1440
|
/**
|
|
1325
1441
|
* Leaves the room. This function should be called when user leaves the room in a clean way e.g. by clicking a
|
|
1326
1442
|
* dedicated, custom button `disconnect`. As a result there will be generated one more media event that should be sent
|
|
@@ -1328,6 +1444,78 @@ declare class FishjamClient<PeerMetadata = GenericMetadata, ServerMetadata = Gen
|
|
|
1328
1444
|
*/
|
|
1329
1445
|
leave: () => void;
|
|
1330
1446
|
private isOpen;
|
|
1447
|
+
/**
|
|
1448
|
+
* Create both reliable and lossy data channel publishers.
|
|
1449
|
+
* This method must be called before publishData() can be used (unless negotiateOnConnect is enabled).
|
|
1450
|
+
* Emits the 'dataChannelsReady' event when both channels are open and ready.
|
|
1451
|
+
*
|
|
1452
|
+
* @throws Error if data channels are not enabled in the constructor config
|
|
1453
|
+
*
|
|
1454
|
+
* @example
|
|
1455
|
+
* ```typescript
|
|
1456
|
+
* const client = new FishjamClient({ dataChannels: {} });
|
|
1457
|
+
*
|
|
1458
|
+
* client.on('dataChannelsReady', () => {
|
|
1459
|
+
* console.log('Data channels ready, can now send data');
|
|
1460
|
+
* client.publishData(new TextEncoder().encode('Hello'), { reliable: true });
|
|
1461
|
+
* });
|
|
1462
|
+
*
|
|
1463
|
+
* client.createDataChannels();
|
|
1464
|
+
* ```
|
|
1465
|
+
*/
|
|
1466
|
+
createDataChannels(): Promise<void>;
|
|
1467
|
+
/**
|
|
1468
|
+
* Publish data through a data channel.
|
|
1469
|
+
* The data channels must be created first by calling createDataChannels() or enabling negotiateOnConnect.
|
|
1470
|
+
* Throws an error if the channel doesn't exist or isn't ready yet.
|
|
1471
|
+
*
|
|
1472
|
+
* @param data - The data to send as Uint8Array
|
|
1473
|
+
* @param options - Options specifying which channel to use (reliable or lossy)
|
|
1474
|
+
* @throws Error if the channel doesn't exist or isn't ready, or if webrtc is not initialized
|
|
1475
|
+
*
|
|
1476
|
+
* @example
|
|
1477
|
+
* ```typescript
|
|
1478
|
+
* client.on('dataChannelsReady', () => {
|
|
1479
|
+
* // Send reliable data
|
|
1480
|
+
* const data = new TextEncoder().encode('Hello World');
|
|
1481
|
+
* client.publishData(data, { reliable: true });
|
|
1482
|
+
*
|
|
1483
|
+
* // Send lossy data for low-latency updates
|
|
1484
|
+
* const gameState = new Uint8Array([1, 2, 3, 4, 5]);
|
|
1485
|
+
* client.publishData(gameState, { reliable: false });
|
|
1486
|
+
* });
|
|
1487
|
+
*
|
|
1488
|
+
* client.createDataChannels();
|
|
1489
|
+
* ```
|
|
1490
|
+
*/
|
|
1491
|
+
publishData(data: Uint8Array, options: DataChannelOptions): void;
|
|
1492
|
+
/**
|
|
1493
|
+
* Subscribe to data from a specific channel type.
|
|
1494
|
+
* Can be called before or after creating the data channels.
|
|
1495
|
+
* If called before, the callback will be applied when the channel is created.
|
|
1496
|
+
*
|
|
1497
|
+
* @param callback - Function to call when data is received
|
|
1498
|
+
* @param options - Options specifying which channel to subscribe to (reliable or lossy)
|
|
1499
|
+
* @throws Error if webrtc is not initialized
|
|
1500
|
+
*
|
|
1501
|
+
* @example
|
|
1502
|
+
* ```typescript
|
|
1503
|
+
* // Subscribe to reliable channel
|
|
1504
|
+
* client.subscribeData((data) => {
|
|
1505
|
+
* const message = new TextDecoder().decode(data);
|
|
1506
|
+
* console.log('Received:', message);
|
|
1507
|
+
* }, { reliable: true });
|
|
1508
|
+
*
|
|
1509
|
+
* // Subscribe to lossy channel
|
|
1510
|
+
* client.subscribeData((data) => {
|
|
1511
|
+
* console.log('Received game state:', data);
|
|
1512
|
+
* }, { reliable: false });
|
|
1513
|
+
*
|
|
1514
|
+
* // Then create publishers
|
|
1515
|
+
* client.createDataChannels();
|
|
1516
|
+
* ```
|
|
1517
|
+
*/
|
|
1518
|
+
subscribeData(callback: DataCallback, options: DataChannelOptions): () => void;
|
|
1331
1519
|
/**
|
|
1332
1520
|
* Disconnect from the room, and close the websocket connection. Tries to leave the room gracefully, but if it fails,
|
|
1333
1521
|
* it will close the websocket anyway.
|
|
@@ -1364,4 +1552,4 @@ type LivestreamCallbacks = {
|
|
|
1364
1552
|
declare function receiveLivestream(url: string, token?: string, callbacks?: LivestreamCallbacks): Promise<ReceiveLivestreamResult>;
|
|
1365
1553
|
declare function publishLivestream(stream: MediaStream, url: string, token: string, callbacks?: LivestreamCallbacks): Promise<PublishLivestreamResult>;
|
|
1366
1554
|
|
|
1367
|
-
export { AUTH_ERROR_REASONS, type AuthErrorReason, type BandwidthLimit, type Component, type ConnectConfig, type CreateConfig, type EncodingReason, type Endpoint, FishjamClient, type FishjamTrackContext, type GenericMetadata, JOIN_ERRORS, type JoinErrorReason, type LivestreamCallbacks, LivestreamError, type Logger, type MediaEvent, type MessageEvents, type Metadata, type Peer, type PublishLivestreamResult, type ReceiveLivestreamResult, type ReconnectConfig, type ReconnectionStatus, type SerializedMediaEvent, type SimulcastBandwidthLimit, MediaEvent_Track_SimulcastConfig as SimulcastConfig, type TrackBandwidthLimit, type TrackContext, type TrackContextEvents, type TrackKind, type TrackMetadata, TrackTypeError, type VadStatus, Variant, WebRTCEndpoint, type WebRTCEndpointEvents, getLogger, isAuthError, isJoinError, publishLivestream, receiveLivestream };
|
|
1555
|
+
export { AUTH_ERROR_REASONS, type AuthErrorReason, type BandwidthLimit, type ClientType, type Component, type ConnectConfig, type CreateConfig, type DataCallback, type DataChannelMessagePayload, type DataChannelOptions, type DataChannelType, type EncodingReason, type Endpoint, FishjamClient, type FishjamTrackContext, type GenericMetadata, JOIN_ERRORS, type JoinErrorReason, type LivestreamCallbacks, LivestreamError, type Logger, type MediaEvent, type MessageEvents, type Metadata, type Peer, type PublishLivestreamResult, type ReceiveLivestreamResult, type ReconnectConfig, type ReconnectionStatus, type SerializedMediaEvent, type SimulcastBandwidthLimit, MediaEvent_Track_SimulcastConfig as SimulcastConfig, type TrackBandwidthLimit, type TrackContext, type TrackContextEvents, type TrackKind, type TrackMetadata, TrackTypeError, type VadStatus, Variant, WebRTCEndpoint, type WebRTCEndpointEvents, getLogger, isAuthError, isJoinError, publishLivestream, receiveLivestream };
|
package/dist/index.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
var Nn=["missing token","invalid token","expired token","room not found","peer not found"],Ze=e=>Nn.includes(e);var ze=class extends Error{constructor(){super("Attempted to add video track to audio-only room. Please refer to the docs at https://docs.fishjam.io/audio-calls")}};import{BinaryReader as J,BinaryWriter as Qe}from"@bufbuild/protobuf/wire";import{BinaryReader as p,BinaryWriter as m}from"@bufbuild/protobuf/wire";import{BinaryReader as Jn,BinaryWriter as Oa}from"@bufbuild/protobuf/wire";function b(e){switch(e){case 0:case"VARIANT_UNSPECIFIED":return 0;case 1:case"VARIANT_LOW":return 1;case 2:case"VARIANT_MEDIUM":return 2;case 3:case"VARIANT_HIGH":return 3;case-1:case"UNRECOGNIZED":default:return-1}}function w(e){switch(e){case 0:return"VARIANT_UNSPECIFIED";case 1:return"VARIANT_LOW";case 2:return"VARIANT_MEDIUM";case 3:return"VARIANT_HIGH";case-1:default:return"UNRECOGNIZED"}}function Rn(){return{candidate:"",sdpMLineIndex:0,sdpMid:"",usernameFragment:""}}var O={encode(e,n=new Oa){return e.candidate!==""&&n.uint32(10).string(e.candidate),e.sdpMLineIndex!==0&&n.uint32(16).int32(e.sdpMLineIndex),e.sdpMid!==""&&n.uint32(26).string(e.sdpMid),e.usernameFragment!==""&&n.uint32(34).string(e.usernameFragment),n},decode(e,n){let t=e instanceof Jn?e:new Jn(e),i=n===void 0?t.len:t.pos+n,r=Rn();for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{if(a!==10)break;r.candidate=t.string();continue}case 2:{if(a!==16)break;r.sdpMLineIndex=t.int32();continue}case 3:{if(a!==26)break;r.sdpMid=t.string();continue}case 4:{if(a!==34)break;r.usernameFragment=t.string();continue}}if((a&7)===4||a===0)break;t.skip(a&7)}return r},fromJSON(e){return{candidate:nn(e.candidate)?globalThis.String(e.candidate):"",sdpMLineIndex:nn(e.sdpMLineIndex)?globalThis.Number(e.sdpMLineIndex):0,sdpMid:nn(e.sdpMid)?globalThis.String(e.sdpMid):"",usernameFragment:nn(e.usernameFragment)?globalThis.String(e.usernameFragment):""}},toJSON(e){let n={};return e.candidate!==""&&(n.candidate=e.candidate),e.sdpMLineIndex!==0&&(n.sdpMLineIndex=Math.round(e.sdpMLineIndex)),e.sdpMid!==""&&(n.sdpMid=e.sdpMid),e.usernameFragment!==""&&(n.usernameFragment=e.usernameFragment),n},create(e){return O.fromPartial(e??{})},fromPartial(e){let n=Rn();return n.candidate=e.candidate??"",n.sdpMLineIndex=e.sdpMLineIndex??0,n.sdpMid=e.sdpMid??"",n.usernameFragment=e.usernameFragment??"",n}};function nn(e){return e!=null}function Cn(){return{connect:void 0,disconnect:void 0,updateEndpointMetadata:void 0,updateTrackMetadata:void 0,renegotiateTracks:void 0,candidate:void 0,sdpOffer:void 0,trackBitrates:void 0,enableTrackVariant:void 0,disableTrackVariant:void 0,setTargetTrackVariant:void 0,unmuteTrack:void 0}}var C={encode(e,n=new m){return e.connect!==void 0&&Q.encode(e.connect,n.uint32(10).fork()).join(),e.disconnect!==void 0&&X.encode(e.disconnect,n.uint32(18).fork()).join(),e.updateEndpointMetadata!==void 0&&j.encode(e.updateEndpointMetadata,n.uint32(26).fork()).join(),e.updateTrackMetadata!==void 0&&ee.encode(e.updateTrackMetadata,n.uint32(34).fork()).join(),e.renegotiateTracks!==void 0&&ne.encode(e.renegotiateTracks,n.uint32(42).fork()).join(),e.candidate!==void 0&&O.encode(e.candidate,n.uint32(50).fork()).join(),e.sdpOffer!==void 0&&te.encode(e.sdpOffer,n.uint32(58).fork()).join(),e.trackBitrates!==void 0&&_.encode(e.trackBitrates,n.uint32(66).fork()).join(),e.enableTrackVariant!==void 0&&re.encode(e.enableTrackVariant,n.uint32(74).fork()).join(),e.disableTrackVariant!==void 0&&ae.encode(e.disableTrackVariant,n.uint32(82).fork()).join(),e.setTargetTrackVariant!==void 0&&ie.encode(e.setTargetTrackVariant,n.uint32(90).fork()).join(),e.unmuteTrack!==void 0&&de.encode(e.unmuteTrack,n.uint32(98).fork()).join(),n},decode(e,n){let t=e instanceof p?e:new p(e),i=n===void 0?t.len:t.pos+n,r=Cn();for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{if(a!==10)break;r.connect=Q.decode(t,t.uint32());continue}case 2:{if(a!==18)break;r.disconnect=X.decode(t,t.uint32());continue}case 3:{if(a!==26)break;r.updateEndpointMetadata=j.decode(t,t.uint32());continue}case 4:{if(a!==34)break;r.updateTrackMetadata=ee.decode(t,t.uint32());continue}case 5:{if(a!==42)break;r.renegotiateTracks=ne.decode(t,t.uint32());continue}case 6:{if(a!==50)break;r.candidate=O.decode(t,t.uint32());continue}case 7:{if(a!==58)break;r.sdpOffer=te.decode(t,t.uint32());continue}case 8:{if(a!==66)break;r.trackBitrates=_.decode(t,t.uint32());continue}case 9:{if(a!==74)break;r.enableTrackVariant=re.decode(t,t.uint32());continue}case 10:{if(a!==82)break;r.disableTrackVariant=ae.decode(t,t.uint32());continue}case 11:{if(a!==90)break;r.setTargetTrackVariant=ie.decode(t,t.uint32());continue}case 12:{if(a!==98)break;r.unmuteTrack=de.decode(t,t.uint32());continue}}if((a&7)===4||a===0)break;t.skip(a&7)}return r},fromJSON(e){return{connect:l(e.connect)?Q.fromJSON(e.connect):void 0,disconnect:l(e.disconnect)?X.fromJSON(e.disconnect):void 0,updateEndpointMetadata:l(e.updateEndpointMetadata)?j.fromJSON(e.updateEndpointMetadata):void 0,updateTrackMetadata:l(e.updateTrackMetadata)?ee.fromJSON(e.updateTrackMetadata):void 0,renegotiateTracks:l(e.renegotiateTracks)?ne.fromJSON(e.renegotiateTracks):void 0,candidate:l(e.candidate)?O.fromJSON(e.candidate):void 0,sdpOffer:l(e.sdpOffer)?te.fromJSON(e.sdpOffer):void 0,trackBitrates:l(e.trackBitrates)?_.fromJSON(e.trackBitrates):void 0,enableTrackVariant:l(e.enableTrackVariant)?re.fromJSON(e.enableTrackVariant):void 0,disableTrackVariant:l(e.disableTrackVariant)?ae.fromJSON(e.disableTrackVariant):void 0,setTargetTrackVariant:l(e.setTargetTrackVariant)?ie.fromJSON(e.setTargetTrackVariant):void 0,unmuteTrack:l(e.unmuteTrack)?de.fromJSON(e.unmuteTrack):void 0}},toJSON(e){let n={};return e.connect!==void 0&&(n.connect=Q.toJSON(e.connect)),e.disconnect!==void 0&&(n.disconnect=X.toJSON(e.disconnect)),e.updateEndpointMetadata!==void 0&&(n.updateEndpointMetadata=j.toJSON(e.updateEndpointMetadata)),e.updateTrackMetadata!==void 0&&(n.updateTrackMetadata=ee.toJSON(e.updateTrackMetadata)),e.renegotiateTracks!==void 0&&(n.renegotiateTracks=ne.toJSON(e.renegotiateTracks)),e.candidate!==void 0&&(n.candidate=O.toJSON(e.candidate)),e.sdpOffer!==void 0&&(n.sdpOffer=te.toJSON(e.sdpOffer)),e.trackBitrates!==void 0&&(n.trackBitrates=_.toJSON(e.trackBitrates)),e.enableTrackVariant!==void 0&&(n.enableTrackVariant=re.toJSON(e.enableTrackVariant)),e.disableTrackVariant!==void 0&&(n.disableTrackVariant=ae.toJSON(e.disableTrackVariant)),e.setTargetTrackVariant!==void 0&&(n.setTargetTrackVariant=ie.toJSON(e.setTargetTrackVariant)),e.unmuteTrack!==void 0&&(n.unmuteTrack=de.toJSON(e.unmuteTrack)),n},create(e){return C.fromPartial(e??{})},fromPartial(e){let n=Cn();return n.connect=e.connect!==void 0&&e.connect!==null?Q.fromPartial(e.connect):void 0,n.disconnect=e.disconnect!==void 0&&e.disconnect!==null?X.fromPartial(e.disconnect):void 0,n.updateEndpointMetadata=e.updateEndpointMetadata!==void 0&&e.updateEndpointMetadata!==null?j.fromPartial(e.updateEndpointMetadata):void 0,n.updateTrackMetadata=e.updateTrackMetadata!==void 0&&e.updateTrackMetadata!==null?ee.fromPartial(e.updateTrackMetadata):void 0,n.renegotiateTracks=e.renegotiateTracks!==void 0&&e.renegotiateTracks!==null?ne.fromPartial(e.renegotiateTracks):void 0,n.candidate=e.candidate!==void 0&&e.candidate!==null?O.fromPartial(e.candidate):void 0,n.sdpOffer=e.sdpOffer!==void 0&&e.sdpOffer!==null?te.fromPartial(e.sdpOffer):void 0,n.trackBitrates=e.trackBitrates!==void 0&&e.trackBitrates!==null?_.fromPartial(e.trackBitrates):void 0,n.enableTrackVariant=e.enableTrackVariant!==void 0&&e.enableTrackVariant!==null?re.fromPartial(e.enableTrackVariant):void 0,n.disableTrackVariant=e.disableTrackVariant!==void 0&&e.disableTrackVariant!==null?ae.fromPartial(e.disableTrackVariant):void 0,n.setTargetTrackVariant=e.setTargetTrackVariant!==void 0&&e.setTargetTrackVariant!==null?ie.fromPartial(e.setTargetTrackVariant):void 0,n.unmuteTrack=e.unmuteTrack!==void 0&&e.unmuteTrack!==null?de.fromPartial(e.unmuteTrack):void 0,n}};function xn(){return{variant:0,bitrate:0}}var z={encode(e,n=new m){return e.variant!==0&&n.uint32(8).int32(e.variant),e.bitrate!==0&&n.uint32(16).int32(e.bitrate),n},decode(e,n){let t=e instanceof p?e:new p(e),i=n===void 0?t.len:t.pos+n,r=xn();for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{if(a!==8)break;r.variant=t.int32();continue}case 2:{if(a!==16)break;r.bitrate=t.int32();continue}}if((a&7)===4||a===0)break;t.skip(a&7)}return r},fromJSON(e){return{variant:l(e.variant)?b(e.variant):0,bitrate:l(e.bitrate)?globalThis.Number(e.bitrate):0}},toJSON(e){let n={};return e.variant!==0&&(n.variant=w(e.variant)),e.bitrate!==0&&(n.bitrate=Math.round(e.bitrate)),n},create(e){return z.fromPartial(e??{})},fromPartial(e){let n=xn();return n.variant=e.variant??0,n.bitrate=e.bitrate??0,n}};function An(){return{metadataJson:""}}var Q={encode(e,n=new m){return e.metadataJson!==""&&n.uint32(10).string(e.metadataJson),n},decode(e,n){let t=e instanceof p?e:new p(e),i=n===void 0?t.len:t.pos+n,r=An();for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{if(a!==10)break;r.metadataJson=t.string();continue}}if((a&7)===4||a===0)break;t.skip(a&7)}return r},fromJSON(e){return{metadataJson:l(e.metadataJson)?globalThis.String(e.metadataJson):""}},toJSON(e){let n={};return e.metadataJson!==""&&(n.metadataJson=e.metadataJson),n},create(e){return Q.fromPartial(e??{})},fromPartial(e){let n=An();return n.metadataJson=e.metadataJson??"",n}};function Bn(){return{}}var X={encode(e,n=new m){return n},decode(e,n){let t=e instanceof p?e:new p(e),i=n===void 0?t.len:t.pos+n,r=Bn();for(;t.pos<i;){let a=t.uint32();if(a>>>3,(a&7)===4||a===0)break;t.skip(a&7)}return r},fromJSON(e){return{}},toJSON(e){return{}},create(e){return X.fromPartial(e??{})},fromPartial(e){return Bn()}};function Vn(){return{metadataJson:""}}var j={encode(e,n=new m){return e.metadataJson!==""&&n.uint32(10).string(e.metadataJson),n},decode(e,n){let t=e instanceof p?e:new p(e),i=n===void 0?t.len:t.pos+n,r=Vn();for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{if(a!==10)break;r.metadataJson=t.string();continue}}if((a&7)===4||a===0)break;t.skip(a&7)}return r},fromJSON(e){return{metadataJson:l(e.metadataJson)?globalThis.String(e.metadataJson):""}},toJSON(e){let n={};return e.metadataJson!==""&&(n.metadataJson=e.metadataJson),n},create(e){return j.fromPartial(e??{})},fromPartial(e){let n=Vn();return n.metadataJson=e.metadataJson??"",n}};function Dn(){return{trackId:"",metadataJson:""}}var ee={encode(e,n=new m){return e.trackId!==""&&n.uint32(10).string(e.trackId),e.metadataJson!==""&&n.uint32(18).string(e.metadataJson),n},decode(e,n){let t=e instanceof p?e:new p(e),i=n===void 0?t.len:t.pos+n,r=Dn();for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{if(a!==10)break;r.trackId=t.string();continue}case 2:{if(a!==18)break;r.metadataJson=t.string();continue}}if((a&7)===4||a===0)break;t.skip(a&7)}return r},fromJSON(e){return{trackId:l(e.trackId)?globalThis.String(e.trackId):"",metadataJson:l(e.metadataJson)?globalThis.String(e.metadataJson):""}},toJSON(e){let n={};return e.trackId!==""&&(n.trackId=e.trackId),e.metadataJson!==""&&(n.metadataJson=e.metadataJson),n},create(e){return ee.fromPartial(e??{})},fromPartial(e){let n=Dn();return n.trackId=e.trackId??"",n.metadataJson=e.metadataJson??"",n}};function Un(){return{}}var ne={encode(e,n=new m){return n},decode(e,n){let t=e instanceof p?e:new p(e),i=n===void 0?t.len:t.pos+n,r=Un();for(;t.pos<i;){let a=t.uint32();if(a>>>3,(a&7)===4||a===0)break;t.skip(a&7)}return r},fromJSON(e){return{}},toJSON(e){return{}},create(e){return ne.fromPartial(e??{})},fromPartial(e){return Un()}};function Ln(){return{sdp:"",trackIdToMetadataJson:{},trackIdToBitrates:{},midToTrackId:{}}}var te={encode(e,n=new m){return e.sdp!==""&&n.uint32(10).string(e.sdp),Object.entries(e.trackIdToMetadataJson).forEach(([t,i])=>{un.encode({key:t,value:i},n.uint32(18).fork()).join()}),Object.entries(e.trackIdToBitrates).forEach(([t,i])=>{fn.encode({key:t,value:i},n.uint32(26).fork()).join()}),Object.entries(e.midToTrackId).forEach(([t,i])=>{ln.encode({key:t,value:i},n.uint32(34).fork()).join()}),n},decode(e,n){let t=e instanceof p?e:new p(e),i=n===void 0?t.len:t.pos+n,r=Ln();for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{if(a!==10)break;r.sdp=t.string();continue}case 2:{if(a!==18)break;let d=un.decode(t,t.uint32());d.value!==void 0&&(r.trackIdToMetadataJson[d.key]=d.value);continue}case 3:{if(a!==26)break;let d=fn.decode(t,t.uint32());d.value!==void 0&&(r.trackIdToBitrates[d.key]=d.value);continue}case 4:{if(a!==34)break;let d=ln.decode(t,t.uint32());d.value!==void 0&&(r.midToTrackId[d.key]=d.value);continue}}if((a&7)===4||a===0)break;t.skip(a&7)}return r},fromJSON(e){return{sdp:l(e.sdp)?globalThis.String(e.sdp):"",trackIdToMetadataJson:sn(e.trackIdToMetadataJson)?Object.entries(e.trackIdToMetadataJson).reduce((n,[t,i])=>(n[t]=String(i),n),{}):{},trackIdToBitrates:sn(e.trackIdToBitrates)?Object.entries(e.trackIdToBitrates).reduce((n,[t,i])=>(n[t]=_.fromJSON(i),n),{}):{},midToTrackId:sn(e.midToTrackId)?Object.entries(e.midToTrackId).reduce((n,[t,i])=>(n[t]=String(i),n),{}):{}}},toJSON(e){let n={};if(e.sdp!==""&&(n.sdp=e.sdp),e.trackIdToMetadataJson){let t=Object.entries(e.trackIdToMetadataJson);t.length>0&&(n.trackIdToMetadataJson={},t.forEach(([i,r])=>{n.trackIdToMetadataJson[i]=r}))}if(e.trackIdToBitrates){let t=Object.entries(e.trackIdToBitrates);t.length>0&&(n.trackIdToBitrates={},t.forEach(([i,r])=>{n.trackIdToBitrates[i]=_.toJSON(r)}))}if(e.midToTrackId){let t=Object.entries(e.midToTrackId);t.length>0&&(n.midToTrackId={},t.forEach(([i,r])=>{n.midToTrackId[i]=r}))}return n},create(e){return te.fromPartial(e??{})},fromPartial(e){let n=Ln();return n.sdp=e.sdp??"",n.trackIdToMetadataJson=Object.entries(e.trackIdToMetadataJson??{}).reduce((t,[i,r])=>(r!==void 0&&(t[i]=globalThis.String(r)),t),{}),n.trackIdToBitrates=Object.entries(e.trackIdToBitrates??{}).reduce((t,[i,r])=>(r!==void 0&&(t[i]=_.fromPartial(r)),t),{}),n.midToTrackId=Object.entries(e.midToTrackId??{}).reduce((t,[i,r])=>(r!==void 0&&(t[i]=globalThis.String(r)),t),{}),n}};function Fn(){return{key:"",value:""}}var un={encode(e,n=new m){return e.key!==""&&n.uint32(10).string(e.key),e.value!==""&&n.uint32(18).string(e.value),n},decode(e,n){let t=e instanceof p?e:new p(e),i=n===void 0?t.len:t.pos+n,r=Fn();for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{if(a!==10)break;r.key=t.string();continue}case 2:{if(a!==18)break;r.value=t.string();continue}}if((a&7)===4||a===0)break;t.skip(a&7)}return r},fromJSON(e){return{key:l(e.key)?globalThis.String(e.key):"",value:l(e.value)?globalThis.String(e.value):""}},toJSON(e){let n={};return e.key!==""&&(n.key=e.key),e.value!==""&&(n.value=e.value),n},create(e){return un.fromPartial(e??{})},fromPartial(e){let n=Fn();return n.key=e.key??"",n.value=e.value??"",n}};function Wn(){return{key:"",value:void 0}}var fn={encode(e,n=new m){return e.key!==""&&n.uint32(10).string(e.key),e.value!==void 0&&_.encode(e.value,n.uint32(18).fork()).join(),n},decode(e,n){let t=e instanceof p?e:new p(e),i=n===void 0?t.len:t.pos+n,r=Wn();for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{if(a!==10)break;r.key=t.string();continue}case 2:{if(a!==18)break;r.value=_.decode(t,t.uint32());continue}}if((a&7)===4||a===0)break;t.skip(a&7)}return r},fromJSON(e){return{key:l(e.key)?globalThis.String(e.key):"",value:l(e.value)?_.fromJSON(e.value):void 0}},toJSON(e){let n={};return e.key!==""&&(n.key=e.key),e.value!==void 0&&(n.value=_.toJSON(e.value)),n},create(e){return fn.fromPartial(e??{})},fromPartial(e){let n=Wn();return n.key=e.key??"",n.value=e.value!==void 0&&e.value!==null?_.fromPartial(e.value):void 0,n}};function Hn(){return{key:"",value:""}}var ln={encode(e,n=new m){return e.key!==""&&n.uint32(10).string(e.key),e.value!==""&&n.uint32(18).string(e.value),n},decode(e,n){let t=e instanceof p?e:new p(e),i=n===void 0?t.len:t.pos+n,r=Hn();for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{if(a!==10)break;r.key=t.string();continue}case 2:{if(a!==18)break;r.value=t.string();continue}}if((a&7)===4||a===0)break;t.skip(a&7)}return r},fromJSON(e){return{key:l(e.key)?globalThis.String(e.key):"",value:l(e.value)?globalThis.String(e.value):""}},toJSON(e){let n={};return e.key!==""&&(n.key=e.key),e.value!==""&&(n.value=e.value),n},create(e){return ln.fromPartial(e??{})},fromPartial(e){let n=Hn();return n.key=e.key??"",n.value=e.value??"",n}};function qn(){return{trackId:"",variantBitrates:[]}}var _={encode(e,n=new m){e.trackId!==""&&n.uint32(10).string(e.trackId);for(let t of e.variantBitrates)z.encode(t,n.uint32(18).fork()).join();return n},decode(e,n){let t=e instanceof p?e:new p(e),i=n===void 0?t.len:t.pos+n,r=qn();for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{if(a!==10)break;r.trackId=t.string();continue}case 2:{if(a!==18)break;r.variantBitrates.push(z.decode(t,t.uint32()));continue}}if((a&7)===4||a===0)break;t.skip(a&7)}return r},fromJSON(e){return{trackId:l(e.trackId)?globalThis.String(e.trackId):"",variantBitrates:globalThis.Array.isArray(e?.variantBitrates)?e.variantBitrates.map(n=>z.fromJSON(n)):[]}},toJSON(e){let n={};return e.trackId!==""&&(n.trackId=e.trackId),e.variantBitrates?.length&&(n.variantBitrates=e.variantBitrates.map(t=>z.toJSON(t))),n},create(e){return _.fromPartial(e??{})},fromPartial(e){let n=qn();return n.trackId=e.trackId??"",n.variantBitrates=e.variantBitrates?.map(t=>z.fromPartial(t))||[],n}};function Kn(){return{trackId:"",variant:0}}var ae={encode(e,n=new m){return e.trackId!==""&&n.uint32(10).string(e.trackId),e.variant!==0&&n.uint32(16).int32(e.variant),n},decode(e,n){let t=e instanceof p?e:new p(e),i=n===void 0?t.len:t.pos+n,r=Kn();for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{if(a!==10)break;r.trackId=t.string();continue}case 2:{if(a!==16)break;r.variant=t.int32();continue}}if((a&7)===4||a===0)break;t.skip(a&7)}return r},fromJSON(e){return{trackId:l(e.trackId)?globalThis.String(e.trackId):"",variant:l(e.variant)?b(e.variant):0}},toJSON(e){let n={};return e.trackId!==""&&(n.trackId=e.trackId),e.variant!==0&&(n.variant=w(e.variant)),n},create(e){return ae.fromPartial(e??{})},fromPartial(e){let n=Kn();return n.trackId=e.trackId??"",n.variant=e.variant??0,n}};function $n(){return{trackId:"",variant:0}}var re={encode(e,n=new m){return e.trackId!==""&&n.uint32(10).string(e.trackId),e.variant!==0&&n.uint32(16).int32(e.variant),n},decode(e,n){let t=e instanceof p?e:new p(e),i=n===void 0?t.len:t.pos+n,r=$n();for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{if(a!==10)break;r.trackId=t.string();continue}case 2:{if(a!==16)break;r.variant=t.int32();continue}}if((a&7)===4||a===0)break;t.skip(a&7)}return r},fromJSON(e){return{trackId:l(e.trackId)?globalThis.String(e.trackId):"",variant:l(e.variant)?b(e.variant):0}},toJSON(e){let n={};return e.trackId!==""&&(n.trackId=e.trackId),e.variant!==0&&(n.variant=w(e.variant)),n},create(e){return re.fromPartial(e??{})},fromPartial(e){let n=$n();return n.trackId=e.trackId??"",n.variant=e.variant??0,n}};function Gn(){return{trackId:"",variant:0}}var ie={encode(e,n=new m){return e.trackId!==""&&n.uint32(10).string(e.trackId),e.variant!==0&&n.uint32(16).int32(e.variant),n},decode(e,n){let t=e instanceof p?e:new p(e),i=n===void 0?t.len:t.pos+n,r=Gn();for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{if(a!==10)break;r.trackId=t.string();continue}case 2:{if(a!==16)break;r.variant=t.int32();continue}}if((a&7)===4||a===0)break;t.skip(a&7)}return r},fromJSON(e){return{trackId:l(e.trackId)?globalThis.String(e.trackId):"",variant:l(e.variant)?b(e.variant):0}},toJSON(e){let n={};return e.trackId!==""&&(n.trackId=e.trackId),e.variant!==0&&(n.variant=w(e.variant)),n},create(e){return ie.fromPartial(e??{})},fromPartial(e){let n=Gn();return n.trackId=e.trackId??"",n.variant=e.variant??0,n}};function Yn(){return{trackId:""}}var de={encode(e,n=new m){return e.trackId!==""&&n.uint32(10).string(e.trackId),n},decode(e,n){let t=e instanceof p?e:new p(e),i=n===void 0?t.len:t.pos+n,r=Yn();for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{if(a!==10)break;r.trackId=t.string();continue}}if((a&7)===4||a===0)break;t.skip(a&7)}return r},fromJSON(e){return{trackId:l(e.trackId)?globalThis.String(e.trackId):""}},toJSON(e){let n={};return e.trackId!==""&&(n.trackId=e.trackId),n},create(e){return de.fromPartial(e??{})},fromPartial(e){let n=Yn();return n.trackId=e.trackId??"",n}};function sn(e){return typeof e=="object"&&e!==null}function l(e){return e!=null}import{BinaryReader as s,BinaryWriter as E}from"@bufbuild/protobuf/wire";function Pa(e){switch(e){case 0:case"STATUS_UNSPECIFIED":return 0;case 1:case"STATUS_SILENCE":return 1;case 2:case"STATUS_SPEECH":return 2;case-1:case"UNRECOGNIZED":default:return-1}}function ba(e){switch(e){case 0:return"STATUS_UNSPECIFIED";case 1:return"STATUS_SILENCE";case 2:return"STATUS_SPEECH";case-1:default:return"UNRECOGNIZED"}}function Zn(){return{endpointUpdated:void 0,trackUpdated:void 0,tracksAdded:void 0,tracksRemoved:void 0,endpointAdded:void 0,endpointRemoved:void 0,connected:void 0,error:void 0,offerData:void 0,candidate:void 0,sdpAnswer:void 0,vadNotification:void 0,trackVariantSwitched:void 0,trackVariantDisabled:void 0,trackVariantEnabled:void 0}}var A={encode(e,n=new E){return e.endpointUpdated!==void 0&&se.encode(e.endpointUpdated,n.uint32(10).fork()).join(),e.trackUpdated!==void 0&&ue.encode(e.trackUpdated,n.uint32(18).fork()).join(),e.tracksAdded!==void 0&&fe.encode(e.tracksAdded,n.uint32(26).fork()).join(),e.tracksRemoved!==void 0&&le.encode(e.tracksRemoved,n.uint32(34).fork()).join(),e.endpointAdded!==void 0&&ke.encode(e.endpointAdded,n.uint32(42).fork()).join(),e.endpointRemoved!==void 0&&ve.encode(e.endpointRemoved,n.uint32(50).fork()).join(),e.connected!==void 0&&pe.encode(e.connected,n.uint32(58).fork()).join(),e.error!==void 0&&Te.encode(e.error,n.uint32(66).fork()).join(),e.offerData!==void 0&&Ee.encode(e.offerData,n.uint32(74).fork()).join(),e.candidate!==void 0&&O.encode(e.candidate,n.uint32(82).fork()).join(),e.sdpAnswer!==void 0&&he.encode(e.sdpAnswer,n.uint32(90).fork()).join(),e.vadNotification!==void 0&&Me.encode(e.vadNotification,n.uint32(98).fork()).join(),e.trackVariantSwitched!==void 0&&me.encode(e.trackVariantSwitched,n.uint32(106).fork()).join(),e.trackVariantDisabled!==void 0&&ye.encode(e.trackVariantDisabled,n.uint32(114).fork()).join(),e.trackVariantEnabled!==void 0&&ge.encode(e.trackVariantEnabled,n.uint32(122).fork()).join(),n},decode(e,n){let t=e instanceof s?e:new s(e),i=n===void 0?t.len:t.pos+n,r=Zn();for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{if(a!==10)break;r.endpointUpdated=se.decode(t,t.uint32());continue}case 2:{if(a!==18)break;r.trackUpdated=ue.decode(t,t.uint32());continue}case 3:{if(a!==26)break;r.tracksAdded=fe.decode(t,t.uint32());continue}case 4:{if(a!==34)break;r.tracksRemoved=le.decode(t,t.uint32());continue}case 5:{if(a!==42)break;r.endpointAdded=ke.decode(t,t.uint32());continue}case 6:{if(a!==50)break;r.endpointRemoved=ve.decode(t,t.uint32());continue}case 7:{if(a!==58)break;r.connected=pe.decode(t,t.uint32());continue}case 8:{if(a!==66)break;r.error=Te.decode(t,t.uint32());continue}case 9:{if(a!==74)break;r.offerData=Ee.decode(t,t.uint32());continue}case 10:{if(a!==82)break;r.candidate=O.decode(t,t.uint32());continue}case 11:{if(a!==90)break;r.sdpAnswer=he.decode(t,t.uint32());continue}case 12:{if(a!==98)break;r.vadNotification=Me.decode(t,t.uint32());continue}case 13:{if(a!==106)break;r.trackVariantSwitched=me.decode(t,t.uint32());continue}case 14:{if(a!==114)break;r.trackVariantDisabled=ye.decode(t,t.uint32());continue}case 15:{if(a!==122)break;r.trackVariantEnabled=ge.decode(t,t.uint32());continue}}if((a&7)===4||a===0)break;t.skip(a&7)}return r},fromJSON(e){return{endpointUpdated:o(e.endpointUpdated)?se.fromJSON(e.endpointUpdated):void 0,trackUpdated:o(e.trackUpdated)?ue.fromJSON(e.trackUpdated):void 0,tracksAdded:o(e.tracksAdded)?fe.fromJSON(e.tracksAdded):void 0,tracksRemoved:o(e.tracksRemoved)?le.fromJSON(e.tracksRemoved):void 0,endpointAdded:o(e.endpointAdded)?ke.fromJSON(e.endpointAdded):void 0,endpointRemoved:o(e.endpointRemoved)?ve.fromJSON(e.endpointRemoved):void 0,connected:o(e.connected)?pe.fromJSON(e.connected):void 0,error:o(e.error)?Te.fromJSON(e.error):void 0,offerData:o(e.offerData)?Ee.fromJSON(e.offerData):void 0,candidate:o(e.candidate)?O.fromJSON(e.candidate):void 0,sdpAnswer:o(e.sdpAnswer)?he.fromJSON(e.sdpAnswer):void 0,vadNotification:o(e.vadNotification)?Me.fromJSON(e.vadNotification):void 0,trackVariantSwitched:o(e.trackVariantSwitched)?me.fromJSON(e.trackVariantSwitched):void 0,trackVariantDisabled:o(e.trackVariantDisabled)?ye.fromJSON(e.trackVariantDisabled):void 0,trackVariantEnabled:o(e.trackVariantEnabled)?ge.fromJSON(e.trackVariantEnabled):void 0}},toJSON(e){let n={};return e.endpointUpdated!==void 0&&(n.endpointUpdated=se.toJSON(e.endpointUpdated)),e.trackUpdated!==void 0&&(n.trackUpdated=ue.toJSON(e.trackUpdated)),e.tracksAdded!==void 0&&(n.tracksAdded=fe.toJSON(e.tracksAdded)),e.tracksRemoved!==void 0&&(n.tracksRemoved=le.toJSON(e.tracksRemoved)),e.endpointAdded!==void 0&&(n.endpointAdded=ke.toJSON(e.endpointAdded)),e.endpointRemoved!==void 0&&(n.endpointRemoved=ve.toJSON(e.endpointRemoved)),e.connected!==void 0&&(n.connected=pe.toJSON(e.connected)),e.error!==void 0&&(n.error=Te.toJSON(e.error)),e.offerData!==void 0&&(n.offerData=Ee.toJSON(e.offerData)),e.candidate!==void 0&&(n.candidate=O.toJSON(e.candidate)),e.sdpAnswer!==void 0&&(n.sdpAnswer=he.toJSON(e.sdpAnswer)),e.vadNotification!==void 0&&(n.vadNotification=Me.toJSON(e.vadNotification)),e.trackVariantSwitched!==void 0&&(n.trackVariantSwitched=me.toJSON(e.trackVariantSwitched)),e.trackVariantDisabled!==void 0&&(n.trackVariantDisabled=ye.toJSON(e.trackVariantDisabled)),e.trackVariantEnabled!==void 0&&(n.trackVariantEnabled=ge.toJSON(e.trackVariantEnabled)),n},create(e){return A.fromPartial(e??{})},fromPartial(e){let n=Zn();return n.endpointUpdated=e.endpointUpdated!==void 0&&e.endpointUpdated!==null?se.fromPartial(e.endpointUpdated):void 0,n.trackUpdated=e.trackUpdated!==void 0&&e.trackUpdated!==null?ue.fromPartial(e.trackUpdated):void 0,n.tracksAdded=e.tracksAdded!==void 0&&e.tracksAdded!==null?fe.fromPartial(e.tracksAdded):void 0,n.tracksRemoved=e.tracksRemoved!==void 0&&e.tracksRemoved!==null?le.fromPartial(e.tracksRemoved):void 0,n.endpointAdded=e.endpointAdded!==void 0&&e.endpointAdded!==null?ke.fromPartial(e.endpointAdded):void 0,n.endpointRemoved=e.endpointRemoved!==void 0&&e.endpointRemoved!==null?ve.fromPartial(e.endpointRemoved):void 0,n.connected=e.connected!==void 0&&e.connected!==null?pe.fromPartial(e.connected):void 0,n.error=e.error!==void 0&&e.error!==null?Te.fromPartial(e.error):void 0,n.offerData=e.offerData!==void 0&&e.offerData!==null?Ee.fromPartial(e.offerData):void 0,n.candidate=e.candidate!==void 0&&e.candidate!==null?O.fromPartial(e.candidate):void 0,n.sdpAnswer=e.sdpAnswer!==void 0&&e.sdpAnswer!==null?he.fromPartial(e.sdpAnswer):void 0,n.vadNotification=e.vadNotification!==void 0&&e.vadNotification!==null?Me.fromPartial(e.vadNotification):void 0,n.trackVariantSwitched=e.trackVariantSwitched!==void 0&&e.trackVariantSwitched!==null?me.fromPartial(e.trackVariantSwitched):void 0,n.trackVariantDisabled=e.trackVariantDisabled!==void 0&&e.trackVariantDisabled!==null?ye.fromPartial(e.trackVariantDisabled):void 0,n.trackVariantEnabled=e.trackVariantEnabled!==void 0&&e.trackVariantEnabled!==null?ge.fromPartial(e.trackVariantEnabled):void 0,n}};function zn(){return{metadataJson:"",simulcastConfig:void 0}}var h={encode(e,n=new E){return e.metadataJson!==""&&n.uint32(10).string(e.metadataJson),e.simulcastConfig!==void 0&&oe.encode(e.simulcastConfig,n.uint32(18).fork()).join(),n},decode(e,n){let t=e instanceof s?e:new s(e),i=n===void 0?t.len:t.pos+n,r=zn();for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{if(a!==10)break;r.metadataJson=t.string();continue}case 2:{if(a!==18)break;r.simulcastConfig=oe.decode(t,t.uint32());continue}}if((a&7)===4||a===0)break;t.skip(a&7)}return r},fromJSON(e){return{metadataJson:o(e.metadataJson)?globalThis.String(e.metadataJson):"",simulcastConfig:o(e.simulcastConfig)?oe.fromJSON(e.simulcastConfig):void 0}},toJSON(e){let n={};return e.metadataJson!==""&&(n.metadataJson=e.metadataJson),e.simulcastConfig!==void 0&&(n.simulcastConfig=oe.toJSON(e.simulcastConfig)),n},create(e){return h.fromPartial(e??{})},fromPartial(e){let n=zn();return n.metadataJson=e.metadataJson??"",n.simulcastConfig=e.simulcastConfig!==void 0&&e.simulcastConfig!==null?oe.fromPartial(e.simulcastConfig):void 0,n}};function Qn(){return{enabled:!1,enabledVariants:[],disabledVariants:[]}}var oe={encode(e,n=new E){e.enabled!==!1&&n.uint32(8).bool(e.enabled),n.uint32(18).fork();for(let t of e.enabledVariants)n.int32(t);n.join(),n.uint32(26).fork();for(let t of e.disabledVariants)n.int32(t);return n.join(),n},decode(e,n){let t=e instanceof s?e:new s(e),i=n===void 0?t.len:t.pos+n,r=Qn();for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{if(a!==8)break;r.enabled=t.bool();continue}case 2:{if(a===16){r.enabledVariants.push(t.int32());continue}if(a===18){let d=t.uint32()+t.pos;for(;t.pos<d;)r.enabledVariants.push(t.int32());continue}break}case 3:{if(a===24){r.disabledVariants.push(t.int32());continue}if(a===26){let d=t.uint32()+t.pos;for(;t.pos<d;)r.disabledVariants.push(t.int32());continue}break}}if((a&7)===4||a===0)break;t.skip(a&7)}return r},fromJSON(e){return{enabled:o(e.enabled)?globalThis.Boolean(e.enabled):!1,enabledVariants:globalThis.Array.isArray(e?.enabledVariants)?e.enabledVariants.map(n=>b(n)):[],disabledVariants:globalThis.Array.isArray(e?.disabledVariants)?e.disabledVariants.map(n=>b(n)):[]}},toJSON(e){let n={};return e.enabled!==!1&&(n.enabled=e.enabled),e.enabledVariants?.length&&(n.enabledVariants=e.enabledVariants.map(t=>w(t))),e.disabledVariants?.length&&(n.disabledVariants=e.disabledVariants.map(t=>w(t))),n},create(e){return oe.fromPartial(e??{})},fromPartial(e){let n=Qn();return n.enabled=e.enabled??!1,n.enabledVariants=e.enabledVariants?.map(t=>t)||[],n.disabledVariants=e.disabledVariants?.map(t=>t)||[],n}};function Xn(){return{endpointType:"",metadataJson:"",trackIdToTrack:{}}}var x={encode(e,n=new E){return e.endpointType!==""&&n.uint32(18).string(e.endpointType),e.metadataJson!==""&&n.uint32(26).string(e.metadataJson),Object.entries(e.trackIdToTrack).forEach(([t,i])=>{kn.encode({key:t,value:i},n.uint32(34).fork()).join()}),n},decode(e,n){let t=e instanceof s?e:new s(e),i=n===void 0?t.len:t.pos+n,r=Xn();for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 2:{if(a!==18)break;r.endpointType=t.string();continue}case 3:{if(a!==26)break;r.metadataJson=t.string();continue}case 4:{if(a!==34)break;let d=kn.decode(t,t.uint32());d.value!==void 0&&(r.trackIdToTrack[d.key]=d.value);continue}}if((a&7)===4||a===0)break;t.skip(a&7)}return r},fromJSON(e){return{endpointType:o(e.endpointType)?globalThis.String(e.endpointType):"",metadataJson:o(e.metadataJson)?globalThis.String(e.metadataJson):"",trackIdToTrack:tn(e.trackIdToTrack)?Object.entries(e.trackIdToTrack).reduce((n,[t,i])=>(n[t]=h.fromJSON(i),n),{}):{}}},toJSON(e){let n={};if(e.endpointType!==""&&(n.endpointType=e.endpointType),e.metadataJson!==""&&(n.metadataJson=e.metadataJson),e.trackIdToTrack){let t=Object.entries(e.trackIdToTrack);t.length>0&&(n.trackIdToTrack={},t.forEach(([i,r])=>{n.trackIdToTrack[i]=h.toJSON(r)}))}return n},create(e){return x.fromPartial(e??{})},fromPartial(e){let n=Xn();return n.endpointType=e.endpointType??"",n.metadataJson=e.metadataJson??"",n.trackIdToTrack=Object.entries(e.trackIdToTrack??{}).reduce((t,[i,r])=>(r!==void 0&&(t[i]=h.fromPartial(r)),t),{}),n}};function jn(){return{key:"",value:void 0}}var kn={encode(e,n=new E){return e.key!==""&&n.uint32(10).string(e.key),e.value!==void 0&&h.encode(e.value,n.uint32(18).fork()).join(),n},decode(e,n){let t=e instanceof s?e:new s(e),i=n===void 0?t.len:t.pos+n,r=jn();for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{if(a!==10)break;r.key=t.string();continue}case 2:{if(a!==18)break;r.value=h.decode(t,t.uint32());continue}}if((a&7)===4||a===0)break;t.skip(a&7)}return r},fromJSON(e){return{key:o(e.key)?globalThis.String(e.key):"",value:o(e.value)?h.fromJSON(e.value):void 0}},toJSON(e){let n={};return e.key!==""&&(n.key=e.key),e.value!==void 0&&(n.value=h.toJSON(e.value)),n},create(e){return kn.fromPartial(e??{})},fromPartial(e){let n=jn();return n.key=e.key??"",n.value=e.value!==void 0&&e.value!==null?h.fromPartial(e.value):void 0,n}};function et(){return{credential:"",urls:[],username:""}}var ce={encode(e,n=new E){e.credential!==""&&n.uint32(10).string(e.credential);for(let t of e.urls)n.uint32(18).string(t);return e.username!==""&&n.uint32(26).string(e.username),n},decode(e,n){let t=e instanceof s?e:new s(e),i=n===void 0?t.len:t.pos+n,r=et();for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{if(a!==10)break;r.credential=t.string();continue}case 2:{if(a!==18)break;r.urls.push(t.string());continue}case 3:{if(a!==26)break;r.username=t.string();continue}}if((a&7)===4||a===0)break;t.skip(a&7)}return r},fromJSON(e){return{credential:o(e.credential)?globalThis.String(e.credential):"",urls:globalThis.Array.isArray(e?.urls)?e.urls.map(n=>globalThis.String(n)):[],username:o(e.username)?globalThis.String(e.username):""}},toJSON(e){let n={};return e.credential!==""&&(n.credential=e.credential),e.urls?.length&&(n.urls=e.urls),e.username!==""&&(n.username=e.username),n},create(e){return ce.fromPartial(e??{})},fromPartial(e){let n=et();return n.credential=e.credential??"",n.urls=e.urls?.map(t=>t)||[],n.username=e.username??"",n}};function nt(){return{endpointId:"",metadataJson:""}}var se={encode(e,n=new E){return e.endpointId!==""&&n.uint32(10).string(e.endpointId),e.metadataJson!==""&&n.uint32(18).string(e.metadataJson),n},decode(e,n){let t=e instanceof s?e:new s(e),i=n===void 0?t.len:t.pos+n,r=nt();for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{if(a!==10)break;r.endpointId=t.string();continue}case 2:{if(a!==18)break;r.metadataJson=t.string();continue}}if((a&7)===4||a===0)break;t.skip(a&7)}return r},fromJSON(e){return{endpointId:o(e.endpointId)?globalThis.String(e.endpointId):"",metadataJson:o(e.metadataJson)?globalThis.String(e.metadataJson):""}},toJSON(e){let n={};return e.endpointId!==""&&(n.endpointId=e.endpointId),e.metadataJson!==""&&(n.metadataJson=e.metadataJson),n},create(e){return se.fromPartial(e??{})},fromPartial(e){let n=nt();return n.endpointId=e.endpointId??"",n.metadataJson=e.metadataJson??"",n}};function tt(){return{endpointId:"",trackId:"",metadataJson:""}}var ue={encode(e,n=new E){return e.endpointId!==""&&n.uint32(10).string(e.endpointId),e.trackId!==""&&n.uint32(18).string(e.trackId),e.metadataJson!==""&&n.uint32(26).string(e.metadataJson),n},decode(e,n){let t=e instanceof s?e:new s(e),i=n===void 0?t.len:t.pos+n,r=tt();for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{if(a!==10)break;r.endpointId=t.string();continue}case 2:{if(a!==18)break;r.trackId=t.string();continue}case 3:{if(a!==26)break;r.metadataJson=t.string();continue}}if((a&7)===4||a===0)break;t.skip(a&7)}return r},fromJSON(e){return{endpointId:o(e.endpointId)?globalThis.String(e.endpointId):"",trackId:o(e.trackId)?globalThis.String(e.trackId):"",metadataJson:o(e.metadataJson)?globalThis.String(e.metadataJson):""}},toJSON(e){let n={};return e.endpointId!==""&&(n.endpointId=e.endpointId),e.trackId!==""&&(n.trackId=e.trackId),e.metadataJson!==""&&(n.metadataJson=e.metadataJson),n},create(e){return ue.fromPartial(e??{})},fromPartial(e){let n=tt();return n.endpointId=e.endpointId??"",n.trackId=e.trackId??"",n.metadataJson=e.metadataJson??"",n}};function at(){return{endpointId:"",trackIdToTrack:{}}}var fe={encode(e,n=new E){return e.endpointId!==""&&n.uint32(10).string(e.endpointId),Object.entries(e.trackIdToTrack).forEach(([t,i])=>{pn.encode({key:t,value:i},n.uint32(18).fork()).join()}),n},decode(e,n){let t=e instanceof s?e:new s(e),i=n===void 0?t.len:t.pos+n,r=at();for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{if(a!==10)break;r.endpointId=t.string();continue}case 2:{if(a!==18)break;let d=pn.decode(t,t.uint32());d.value!==void 0&&(r.trackIdToTrack[d.key]=d.value);continue}}if((a&7)===4||a===0)break;t.skip(a&7)}return r},fromJSON(e){return{endpointId:o(e.endpointId)?globalThis.String(e.endpointId):"",trackIdToTrack:tn(e.trackIdToTrack)?Object.entries(e.trackIdToTrack).reduce((n,[t,i])=>(n[t]=h.fromJSON(i),n),{}):{}}},toJSON(e){let n={};if(e.endpointId!==""&&(n.endpointId=e.endpointId),e.trackIdToTrack){let t=Object.entries(e.trackIdToTrack);t.length>0&&(n.trackIdToTrack={},t.forEach(([i,r])=>{n.trackIdToTrack[i]=h.toJSON(r)}))}return n},create(e){return fe.fromPartial(e??{})},fromPartial(e){let n=at();return n.endpointId=e.endpointId??"",n.trackIdToTrack=Object.entries(e.trackIdToTrack??{}).reduce((t,[i,r])=>(r!==void 0&&(t[i]=h.fromPartial(r)),t),{}),n}};function rt(){return{key:"",value:void 0}}var pn={encode(e,n=new E){return e.key!==""&&n.uint32(10).string(e.key),e.value!==void 0&&h.encode(e.value,n.uint32(18).fork()).join(),n},decode(e,n){let t=e instanceof s?e:new s(e),i=n===void 0?t.len:t.pos+n,r=rt();for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{if(a!==10)break;r.key=t.string();continue}case 2:{if(a!==18)break;r.value=h.decode(t,t.uint32());continue}}if((a&7)===4||a===0)break;t.skip(a&7)}return r},fromJSON(e){return{key:o(e.key)?globalThis.String(e.key):"",value:o(e.value)?h.fromJSON(e.value):void 0}},toJSON(e){let n={};return e.key!==""&&(n.key=e.key),e.value!==void 0&&(n.value=h.toJSON(e.value)),n},create(e){return pn.fromPartial(e??{})},fromPartial(e){let n=rt();return n.key=e.key??"",n.value=e.value!==void 0&&e.value!==null?h.fromPartial(e.value):void 0,n}};function it(){return{endpointId:"",trackIds:[]}}var le={encode(e,n=new E){e.endpointId!==""&&n.uint32(10).string(e.endpointId);for(let t of e.trackIds)n.uint32(18).string(t);return n},decode(e,n){let t=e instanceof s?e:new s(e),i=n===void 0?t.len:t.pos+n,r=it();for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{if(a!==10)break;r.endpointId=t.string();continue}case 2:{if(a!==18)break;r.trackIds.push(t.string());continue}}if((a&7)===4||a===0)break;t.skip(a&7)}return r},fromJSON(e){return{endpointId:o(e.endpointId)?globalThis.String(e.endpointId):"",trackIds:globalThis.Array.isArray(e?.trackIds)?e.trackIds.map(n=>globalThis.String(n)):[]}},toJSON(e){let n={};return e.endpointId!==""&&(n.endpointId=e.endpointId),e.trackIds?.length&&(n.trackIds=e.trackIds),n},create(e){return le.fromPartial(e??{})},fromPartial(e){let n=it();return n.endpointId=e.endpointId??"",n.trackIds=e.trackIds?.map(t=>t)||[],n}};function dt(){return{endpointId:"",metadataJson:""}}var ke={encode(e,n=new E){return e.endpointId!==""&&n.uint32(10).string(e.endpointId),e.metadataJson!==""&&n.uint32(18).string(e.metadataJson),n},decode(e,n){let t=e instanceof s?e:new s(e),i=n===void 0?t.len:t.pos+n,r=dt();for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{if(a!==10)break;r.endpointId=t.string();continue}case 2:{if(a!==18)break;r.metadataJson=t.string();continue}}if((a&7)===4||a===0)break;t.skip(a&7)}return r},fromJSON(e){return{endpointId:o(e.endpointId)?globalThis.String(e.endpointId):"",metadataJson:o(e.metadataJson)?globalThis.String(e.metadataJson):""}},toJSON(e){let n={};return e.endpointId!==""&&(n.endpointId=e.endpointId),e.metadataJson!==""&&(n.metadataJson=e.metadataJson),n},create(e){return ke.fromPartial(e??{})},fromPartial(e){let n=dt();return n.endpointId=e.endpointId??"",n.metadataJson=e.metadataJson??"",n}};function ot(){return{endpointId:"",endpointIdToEndpoint:{},iceServers:[]}}var pe={encode(e,n=new E){e.endpointId!==""&&n.uint32(10).string(e.endpointId),Object.entries(e.endpointIdToEndpoint).forEach(([t,i])=>{vn.encode({key:t,value:i},n.uint32(18).fork()).join()});for(let t of e.iceServers)ce.encode(t,n.uint32(26).fork()).join();return n},decode(e,n){let t=e instanceof s?e:new s(e),i=n===void 0?t.len:t.pos+n,r=ot();for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{if(a!==10)break;r.endpointId=t.string();continue}case 2:{if(a!==18)break;let d=vn.decode(t,t.uint32());d.value!==void 0&&(r.endpointIdToEndpoint[d.key]=d.value);continue}case 3:{if(a!==26)break;r.iceServers.push(ce.decode(t,t.uint32()));continue}}if((a&7)===4||a===0)break;t.skip(a&7)}return r},fromJSON(e){return{endpointId:o(e.endpointId)?globalThis.String(e.endpointId):"",endpointIdToEndpoint:tn(e.endpointIdToEndpoint)?Object.entries(e.endpointIdToEndpoint).reduce((n,[t,i])=>(n[t]=x.fromJSON(i),n),{}):{},iceServers:globalThis.Array.isArray(e?.iceServers)?e.iceServers.map(n=>ce.fromJSON(n)):[]}},toJSON(e){let n={};if(e.endpointId!==""&&(n.endpointId=e.endpointId),e.endpointIdToEndpoint){let t=Object.entries(e.endpointIdToEndpoint);t.length>0&&(n.endpointIdToEndpoint={},t.forEach(([i,r])=>{n.endpointIdToEndpoint[i]=x.toJSON(r)}))}return e.iceServers?.length&&(n.iceServers=e.iceServers.map(t=>ce.toJSON(t))),n},create(e){return pe.fromPartial(e??{})},fromPartial(e){let n=ot();return n.endpointId=e.endpointId??"",n.endpointIdToEndpoint=Object.entries(e.endpointIdToEndpoint??{}).reduce((t,[i,r])=>(r!==void 0&&(t[i]=x.fromPartial(r)),t),{}),n.iceServers=e.iceServers?.map(t=>ce.fromPartial(t))||[],n}};function ct(){return{key:"",value:void 0}}var vn={encode(e,n=new E){return e.key!==""&&n.uint32(10).string(e.key),e.value!==void 0&&x.encode(e.value,n.uint32(18).fork()).join(),n},decode(e,n){let t=e instanceof s?e:new s(e),i=n===void 0?t.len:t.pos+n,r=ct();for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{if(a!==10)break;r.key=t.string();continue}case 2:{if(a!==18)break;r.value=x.decode(t,t.uint32());continue}}if((a&7)===4||a===0)break;t.skip(a&7)}return r},fromJSON(e){return{key:o(e.key)?globalThis.String(e.key):"",value:o(e.value)?x.fromJSON(e.value):void 0}},toJSON(e){let n={};return e.key!==""&&(n.key=e.key),e.value!==void 0&&(n.value=x.toJSON(e.value)),n},create(e){return vn.fromPartial(e??{})},fromPartial(e){let n=ct();return n.key=e.key??"",n.value=e.value!==void 0&&e.value!==null?x.fromPartial(e.value):void 0,n}};function st(){return{endpointId:""}}var ve={encode(e,n=new E){return e.endpointId!==""&&n.uint32(10).string(e.endpointId),n},decode(e,n){let t=e instanceof s?e:new s(e),i=n===void 0?t.len:t.pos+n,r=st();for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{if(a!==10)break;r.endpointId=t.string();continue}}if((a&7)===4||a===0)break;t.skip(a&7)}return r},fromJSON(e){return{endpointId:o(e.endpointId)?globalThis.String(e.endpointId):""}},toJSON(e){let n={};return e.endpointId!==""&&(n.endpointId=e.endpointId),n},create(e){return ve.fromPartial(e??{})},fromPartial(e){let n=st();return n.endpointId=e.endpointId??"",n}};function ut(){return{message:""}}var Te={encode(e,n=new E){return e.message!==""&&n.uint32(10).string(e.message),n},decode(e,n){let t=e instanceof s?e:new s(e),i=n===void 0?t.len:t.pos+n,r=ut();for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{if(a!==10)break;r.message=t.string();continue}}if((a&7)===4||a===0)break;t.skip(a&7)}return r},fromJSON(e){return{message:o(e.message)?globalThis.String(e.message):""}},toJSON(e){let n={};return e.message!==""&&(n.message=e.message),n},create(e){return Te.fromPartial(e??{})},fromPartial(e){let n=ut();return n.message=e.message??"",n}};function ft(){return{tracksTypes:void 0}}var Ee={encode(e,n=new E){return e.tracksTypes!==void 0&&Ie.encode(e.tracksTypes,n.uint32(10).fork()).join(),n},decode(e,n){let t=e instanceof s?e:new s(e),i=n===void 0?t.len:t.pos+n,r=ft();for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{if(a!==10)break;r.tracksTypes=Ie.decode(t,t.uint32());continue}}if((a&7)===4||a===0)break;t.skip(a&7)}return r},fromJSON(e){return{tracksTypes:o(e.tracksTypes)?Ie.fromJSON(e.tracksTypes):void 0}},toJSON(e){let n={};return e.tracksTypes!==void 0&&(n.tracksTypes=Ie.toJSON(e.tracksTypes)),n},create(e){return Ee.fromPartial(e??{})},fromPartial(e){let n=ft();return n.tracksTypes=e.tracksTypes!==void 0&&e.tracksTypes!==null?Ie.fromPartial(e.tracksTypes):void 0,n}};function lt(){return{audio:0,video:0}}var Ie={encode(e,n=new E){return e.audio!==0&&n.uint32(8).int32(e.audio),e.video!==0&&n.uint32(16).int32(e.video),n},decode(e,n){let t=e instanceof s?e:new s(e),i=n===void 0?t.len:t.pos+n,r=lt();for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{if(a!==8)break;r.audio=t.int32();continue}case 2:{if(a!==16)break;r.video=t.int32();continue}}if((a&7)===4||a===0)break;t.skip(a&7)}return r},fromJSON(e){return{audio:o(e.audio)?globalThis.Number(e.audio):0,video:o(e.video)?globalThis.Number(e.video):0}},toJSON(e){let n={};return e.audio!==0&&(n.audio=Math.round(e.audio)),e.video!==0&&(n.video=Math.round(e.video)),n},create(e){return Ie.fromPartial(e??{})},fromPartial(e){let n=lt();return n.audio=e.audio??0,n.video=e.video??0,n}};function kt(){return{sdp:"",midToTrackId:{}}}var he={encode(e,n=new E){return e.sdp!==""&&n.uint32(10).string(e.sdp),Object.entries(e.midToTrackId).forEach(([t,i])=>{Tn.encode({key:t,value:i},n.uint32(18).fork()).join()}),n},decode(e,n){let t=e instanceof s?e:new s(e),i=n===void 0?t.len:t.pos+n,r=kt();for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{if(a!==10)break;r.sdp=t.string();continue}case 2:{if(a!==18)break;let d=Tn.decode(t,t.uint32());d.value!==void 0&&(r.midToTrackId[d.key]=d.value);continue}}if((a&7)===4||a===0)break;t.skip(a&7)}return r},fromJSON(e){return{sdp:o(e.sdp)?globalThis.String(e.sdp):"",midToTrackId:tn(e.midToTrackId)?Object.entries(e.midToTrackId).reduce((n,[t,i])=>(n[t]=String(i),n),{}):{}}},toJSON(e){let n={};if(e.sdp!==""&&(n.sdp=e.sdp),e.midToTrackId){let t=Object.entries(e.midToTrackId);t.length>0&&(n.midToTrackId={},t.forEach(([i,r])=>{n.midToTrackId[i]=r}))}return n},create(e){return he.fromPartial(e??{})},fromPartial(e){let n=kt();return n.sdp=e.sdp??"",n.midToTrackId=Object.entries(e.midToTrackId??{}).reduce((t,[i,r])=>(r!==void 0&&(t[i]=globalThis.String(r)),t),{}),n}};function pt(){return{key:"",value:""}}var Tn={encode(e,n=new E){return e.key!==""&&n.uint32(10).string(e.key),e.value!==""&&n.uint32(18).string(e.value),n},decode(e,n){let t=e instanceof s?e:new s(e),i=n===void 0?t.len:t.pos+n,r=pt();for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{if(a!==10)break;r.key=t.string();continue}case 2:{if(a!==18)break;r.value=t.string();continue}}if((a&7)===4||a===0)break;t.skip(a&7)}return r},fromJSON(e){return{key:o(e.key)?globalThis.String(e.key):"",value:o(e.value)?globalThis.String(e.value):""}},toJSON(e){let n={};return e.key!==""&&(n.key=e.key),e.value!==""&&(n.value=e.value),n},create(e){return Tn.fromPartial(e??{})},fromPartial(e){let n=pt();return n.key=e.key??"",n.value=e.value??"",n}};function vt(){return{trackId:"",status:0}}var Me={encode(e,n=new E){return e.trackId!==""&&n.uint32(10).string(e.trackId),e.status!==0&&n.uint32(16).int32(e.status),n},decode(e,n){let t=e instanceof s?e:new s(e),i=n===void 0?t.len:t.pos+n,r=vt();for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{if(a!==10)break;r.trackId=t.string();continue}case 2:{if(a!==16)break;r.status=t.int32();continue}}if((a&7)===4||a===0)break;t.skip(a&7)}return r},fromJSON(e){return{trackId:o(e.trackId)?globalThis.String(e.trackId):"",status:o(e.status)?Pa(e.status):0}},toJSON(e){let n={};return e.trackId!==""&&(n.trackId=e.trackId),e.status!==0&&(n.status=ba(e.status)),n},create(e){return Me.fromPartial(e??{})},fromPartial(e){let n=vt();return n.trackId=e.trackId??"",n.status=e.status??0,n}};function Tt(){return{endpointId:"",trackId:"",variant:0}}var me={encode(e,n=new E){return e.endpointId!==""&&n.uint32(10).string(e.endpointId),e.trackId!==""&&n.uint32(18).string(e.trackId),e.variant!==0&&n.uint32(24).int32(e.variant),n},decode(e,n){let t=e instanceof s?e:new s(e),i=n===void 0?t.len:t.pos+n,r=Tt();for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{if(a!==10)break;r.endpointId=t.string();continue}case 2:{if(a!==18)break;r.trackId=t.string();continue}case 3:{if(a!==24)break;r.variant=t.int32();continue}}if((a&7)===4||a===0)break;t.skip(a&7)}return r},fromJSON(e){return{endpointId:o(e.endpointId)?globalThis.String(e.endpointId):"",trackId:o(e.trackId)?globalThis.String(e.trackId):"",variant:o(e.variant)?b(e.variant):0}},toJSON(e){let n={};return e.endpointId!==""&&(n.endpointId=e.endpointId),e.trackId!==""&&(n.trackId=e.trackId),e.variant!==0&&(n.variant=w(e.variant)),n},create(e){return me.fromPartial(e??{})},fromPartial(e){let n=Tt();return n.endpointId=e.endpointId??"",n.trackId=e.trackId??"",n.variant=e.variant??0,n}};function Et(){return{endpointId:"",trackId:"",variant:0}}var ye={encode(e,n=new E){return e.endpointId!==""&&n.uint32(10).string(e.endpointId),e.trackId!==""&&n.uint32(18).string(e.trackId),e.variant!==0&&n.uint32(24).int32(e.variant),n},decode(e,n){let t=e instanceof s?e:new s(e),i=n===void 0?t.len:t.pos+n,r=Et();for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{if(a!==10)break;r.endpointId=t.string();continue}case 2:{if(a!==18)break;r.trackId=t.string();continue}case 3:{if(a!==24)break;r.variant=t.int32();continue}}if((a&7)===4||a===0)break;t.skip(a&7)}return r},fromJSON(e){return{endpointId:o(e.endpointId)?globalThis.String(e.endpointId):"",trackId:o(e.trackId)?globalThis.String(e.trackId):"",variant:o(e.variant)?b(e.variant):0}},toJSON(e){let n={};return e.endpointId!==""&&(n.endpointId=e.endpointId),e.trackId!==""&&(n.trackId=e.trackId),e.variant!==0&&(n.variant=w(e.variant)),n},create(e){return ye.fromPartial(e??{})},fromPartial(e){let n=Et();return n.endpointId=e.endpointId??"",n.trackId=e.trackId??"",n.variant=e.variant??0,n}};function It(){return{endpointId:"",trackId:"",variant:0}}var ge={encode(e,n=new E){return e.endpointId!==""&&n.uint32(10).string(e.endpointId),e.trackId!==""&&n.uint32(18).string(e.trackId),e.variant!==0&&n.uint32(24).int32(e.variant),n},decode(e,n){let t=e instanceof s?e:new s(e),i=n===void 0?t.len:t.pos+n,r=It();for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{if(a!==10)break;r.endpointId=t.string();continue}case 2:{if(a!==18)break;r.trackId=t.string();continue}case 3:{if(a!==24)break;r.variant=t.int32();continue}}if((a&7)===4||a===0)break;t.skip(a&7)}return r},fromJSON(e){return{endpointId:o(e.endpointId)?globalThis.String(e.endpointId):"",trackId:o(e.trackId)?globalThis.String(e.trackId):"",variant:o(e.variant)?b(e.variant):0}},toJSON(e){let n={};return e.endpointId!==""&&(n.endpointId=e.endpointId),e.trackId!==""&&(n.trackId=e.trackId),e.variant!==0&&(n.variant=w(e.variant)),n},create(e){return ge.fromPartial(e??{})},fromPartial(e){let n=It();return n.endpointId=e.endpointId??"",n.trackId=e.trackId??"",n.variant=e.variant??0,n}};function tn(e){return typeof e=="object"&&e!==null}function o(e){return e!=null}function wa(e){switch(e){case 0:case"ROOM_TYPE_UNSPECIFIED":return 0;case 1:case"ROOM_TYPE_CONFERENCE":return 1;case 2:case"ROOM_TYPE_AUDIO_ONLY":return 2;case 3:case"ROOM_TYPE_LIVESTREAM":return 3;case-1:case"UNRECOGNIZED":default:return-1}}function Na(e){switch(e){case 0:return"ROOM_TYPE_UNSPECIFIED";case 1:return"ROOM_TYPE_CONFERENCE";case 2:return"ROOM_TYPE_AUDIO_ONLY";case 3:return"ROOM_TYPE_LIVESTREAM";case-1:default:return"UNRECOGNIZED"}}function ht(){return{authenticated:void 0,authRequest:void 0,mediaEvent:void 0,rtcStatsReport:void 0,peerMediaEvent:void 0,serverMediaEvent:void 0}}var be={encode(e,n=new Qe){return e.authenticated!==void 0&&Se.encode(e.authenticated,n.uint32(10).fork()).join(),e.authRequest!==void 0&&_e.encode(e.authRequest,n.uint32(18).fork()).join(),e.mediaEvent!==void 0&&Pe.encode(e.mediaEvent,n.uint32(26).fork()).join(),e.rtcStatsReport!==void 0&&Oe.encode(e.rtcStatsReport,n.uint32(34).fork()).join(),e.peerMediaEvent!==void 0&&C.encode(e.peerMediaEvent,n.uint32(42).fork()).join(),e.serverMediaEvent!==void 0&&A.encode(e.serverMediaEvent,n.uint32(50).fork()).join(),n},decode(e,n){let t=e instanceof J?e:new J(e),i=n===void 0?t.len:t.pos+n,r=ht();for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{if(a!==10)break;r.authenticated=Se.decode(t,t.uint32());continue}case 2:{if(a!==18)break;r.authRequest=_e.decode(t,t.uint32());continue}case 3:{if(a!==26)break;r.mediaEvent=Pe.decode(t,t.uint32());continue}case 4:{if(a!==34)break;r.rtcStatsReport=Oe.decode(t,t.uint32());continue}case 5:{if(a!==42)break;r.peerMediaEvent=C.decode(t,t.uint32());continue}case 6:{if(a!==50)break;r.serverMediaEvent=A.decode(t,t.uint32());continue}}if((a&7)===4||a===0)break;t.skip(a&7)}return r},fromJSON(e){return{authenticated:N(e.authenticated)?Se.fromJSON(e.authenticated):void 0,authRequest:N(e.authRequest)?_e.fromJSON(e.authRequest):void 0,mediaEvent:N(e.mediaEvent)?Pe.fromJSON(e.mediaEvent):void 0,rtcStatsReport:N(e.rtcStatsReport)?Oe.fromJSON(e.rtcStatsReport):void 0,peerMediaEvent:N(e.peerMediaEvent)?C.fromJSON(e.peerMediaEvent):void 0,serverMediaEvent:N(e.serverMediaEvent)?A.fromJSON(e.serverMediaEvent):void 0}},toJSON(e){let n={};return e.authenticated!==void 0&&(n.authenticated=Se.toJSON(e.authenticated)),e.authRequest!==void 0&&(n.authRequest=_e.toJSON(e.authRequest)),e.mediaEvent!==void 0&&(n.mediaEvent=Pe.toJSON(e.mediaEvent)),e.rtcStatsReport!==void 0&&(n.rtcStatsReport=Oe.toJSON(e.rtcStatsReport)),e.peerMediaEvent!==void 0&&(n.peerMediaEvent=C.toJSON(e.peerMediaEvent)),e.serverMediaEvent!==void 0&&(n.serverMediaEvent=A.toJSON(e.serverMediaEvent)),n},create(e){return be.fromPartial(e??{})},fromPartial(e){let n=ht();return n.authenticated=e.authenticated!==void 0&&e.authenticated!==null?Se.fromPartial(e.authenticated):void 0,n.authRequest=e.authRequest!==void 0&&e.authRequest!==null?_e.fromPartial(e.authRequest):void 0,n.mediaEvent=e.mediaEvent!==void 0&&e.mediaEvent!==null?Pe.fromPartial(e.mediaEvent):void 0,n.rtcStatsReport=e.rtcStatsReport!==void 0&&e.rtcStatsReport!==null?Oe.fromPartial(e.rtcStatsReport):void 0,n.peerMediaEvent=e.peerMediaEvent!==void 0&&e.peerMediaEvent!==null?C.fromPartial(e.peerMediaEvent):void 0,n.serverMediaEvent=e.serverMediaEvent!==void 0&&e.serverMediaEvent!==null?A.fromPartial(e.serverMediaEvent):void 0,n}};function Mt(){return{roomType:0}}var Se={encode(e,n=new Qe){return e.roomType!==0&&n.uint32(8).int32(e.roomType),n},decode(e,n){let t=e instanceof J?e:new J(e),i=n===void 0?t.len:t.pos+n,r=Mt();for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{if(a!==8)break;r.roomType=t.int32();continue}}if((a&7)===4||a===0)break;t.skip(a&7)}return r},fromJSON(e){return{roomType:N(e.roomType)?wa(e.roomType):0}},toJSON(e){let n={};return e.roomType!==0&&(n.roomType=Na(e.roomType)),n},create(e){return Se.fromPartial(e??{})},fromPartial(e){let n=Mt();return n.roomType=e.roomType??0,n}};function mt(){return{token:"",sdkVersion:""}}var _e={encode(e,n=new Qe){return e.token!==""&&n.uint32(10).string(e.token),e.sdkVersion!==""&&n.uint32(18).string(e.sdkVersion),n},decode(e,n){let t=e instanceof J?e:new J(e),i=n===void 0?t.len:t.pos+n,r=mt();for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{if(a!==10)break;r.token=t.string();continue}case 2:{if(a!==18)break;r.sdkVersion=t.string();continue}}if((a&7)===4||a===0)break;t.skip(a&7)}return r},fromJSON(e){return{token:N(e.token)?globalThis.String(e.token):"",sdkVersion:N(e.sdkVersion)?globalThis.String(e.sdkVersion):""}},toJSON(e){let n={};return e.token!==""&&(n.token=e.token),e.sdkVersion!==""&&(n.sdkVersion=e.sdkVersion),n},create(e){return _e.fromPartial(e??{})},fromPartial(e){let n=mt();return n.token=e.token??"",n.sdkVersion=e.sdkVersion??"",n}};function yt(){return{data:""}}var Oe={encode(e,n=new Qe){return e.data!==""&&n.uint32(10).string(e.data),n},decode(e,n){let t=e instanceof J?e:new J(e),i=n===void 0?t.len:t.pos+n,r=yt();for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{if(a!==10)break;r.data=t.string();continue}}if((a&7)===4||a===0)break;t.skip(a&7)}return r},fromJSON(e){return{data:N(e.data)?globalThis.String(e.data):""}},toJSON(e){let n={};return e.data!==""&&(n.data=e.data),n},create(e){return Oe.fromPartial(e??{})},fromPartial(e){let n=yt();return n.data=e.data??"",n}};function gt(){return{data:""}}var Pe={encode(e,n=new Qe){return e.data!==""&&n.uint32(10).string(e.data),n},decode(e,n){let t=e instanceof J?e:new J(e),i=n===void 0?t.len:t.pos+n,r=gt();for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{if(a!==10)break;r.data=t.string();continue}}if((a&7)===4||a===0)break;t.skip(a&7)}return r},fromJSON(e){return{data:N(e.data)?globalThis.String(e.data):""}},toJSON(e){let n={};return e.data!==""&&(n.data=e.data),n},create(e){return Pe.fromPartial(e??{})},fromPartial(e){let n=gt();return n.data=e.data??"",n}};function N(e){return e!=null}import{BinaryReader as v,BinaryWriter as g}from"@bufbuild/protobuf/wire";import{BinaryReader as _t,BinaryWriter as Ja}from"@bufbuild/protobuf/wire";import Ca from"events";import{v4 as xa}from"uuid";import{BinaryReader as u,BinaryWriter as I}from"@bufbuild/protobuf/wire";import La from"events";var St="[FISHJAM]",Pn=e=>({warn:(n,...t)=>{e&&console.warn(St,n,...t)},error:(n,...t)=>{e&&console.error(St,n,...t)}}),Ra=(e=>(e[e.VARIANT_UNSPECIFIED=0]="VARIANT_UNSPECIFIED",e[e.VARIANT_LOW=1]="VARIANT_LOW",e[e.VARIANT_MEDIUM=2]="VARIANT_MEDIUM",e[e.VARIANT_HIGH=3]="VARIANT_HIGH",e[e.UNRECOGNIZED=-1]="UNRECOGNIZED",e))(Ra||{});function D(e){switch(e){case 0:case"VARIANT_UNSPECIFIED":return 0;case 1:case"VARIANT_LOW":return 1;case 2:case"VARIANT_MEDIUM":return 2;case 3:case"VARIANT_HIGH":return 3;case-1:case"UNRECOGNIZED":default:return-1}}function U(e){switch(e){case 0:return"VARIANT_UNSPECIFIED";case 1:return"VARIANT_LOW";case 2:return"VARIANT_MEDIUM";case 3:return"VARIANT_HIGH";case-1:default:return"UNRECOGNIZED"}}function Ot(){return{candidate:"",sdpMLineIndex:0,sdpMid:"",usernameFragment:""}}var P={encode(e,n=new Ja){return e.candidate!==""&&n.uint32(10).string(e.candidate),e.sdpMLineIndex!==0&&n.uint32(16).int32(e.sdpMLineIndex),e.sdpMid!==""&&n.uint32(26).string(e.sdpMid),e.usernameFragment!==""&&n.uint32(34).string(e.usernameFragment),n},decode(e,n){let t=e instanceof _t?e:new _t(e),i=n===void 0?t.len:t.pos+n,r=Ot();for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{if(a!==10)break;r.candidate=t.string();continue}case 2:{if(a!==16)break;r.sdpMLineIndex=t.int32();continue}case 3:{if(a!==26)break;r.sdpMid=t.string();continue}case 4:{if(a!==34)break;r.usernameFragment=t.string();continue}}if((a&7)===4||a===0)break;t.skip(a&7)}return r},fromJSON(e){return{candidate:an(e.candidate)?globalThis.String(e.candidate):"",sdpMLineIndex:an(e.sdpMLineIndex)?globalThis.Number(e.sdpMLineIndex):0,sdpMid:an(e.sdpMid)?globalThis.String(e.sdpMid):"",usernameFragment:an(e.usernameFragment)?globalThis.String(e.usernameFragment):""}},toJSON(e){let n={};return e.candidate!==""&&(n.candidate=e.candidate),e.sdpMLineIndex!==0&&(n.sdpMLineIndex=Math.round(e.sdpMLineIndex)),e.sdpMid!==""&&(n.sdpMid=e.sdpMid),e.usernameFragment!==""&&(n.usernameFragment=e.usernameFragment),n},create(e){return P.fromPartial(e??{})},fromPartial(e){let n=Ot();return n.candidate=e.candidate??"",n.sdpMLineIndex=e.sdpMLineIndex??0,n.sdpMid=e.sdpMid??"",n.usernameFragment=e.usernameFragment??"",n}};function an(e){return e!=null}function Pt(){return{connect:void 0,disconnect:void 0,updateEndpointMetadata:void 0,updateTrackMetadata:void 0,renegotiateTracks:void 0,candidate:void 0,sdpOffer:void 0,trackBitrates:void 0,enableTrackVariant:void 0,disableTrackVariant:void 0,setTargetTrackVariant:void 0,unmuteTrack:void 0}}var Ge={encode(e,n=new g){return e.connect!==void 0&&W.encode(e.connect,n.uint32(10).fork()).join(),e.disconnect!==void 0&&H.encode(e.disconnect,n.uint32(18).fork()).join(),e.updateEndpointMetadata!==void 0&&q.encode(e.updateEndpointMetadata,n.uint32(26).fork()).join(),e.updateTrackMetadata!==void 0&&F.encode(e.updateTrackMetadata,n.uint32(34).fork()).join(),e.renegotiateTracks!==void 0&&B.encode(e.renegotiateTracks,n.uint32(42).fork()).join(),e.candidate!==void 0&&P.encode(e.candidate,n.uint32(50).fork()).join(),e.sdpOffer!==void 0&&K.encode(e.sdpOffer,n.uint32(58).fork()).join(),e.trackBitrates!==void 0&&y.encode(e.trackBitrates,n.uint32(66).fork()).join(),e.enableTrackVariant!==void 0&&G.encode(e.enableTrackVariant,n.uint32(74).fork()).join(),e.disableTrackVariant!==void 0&&$.encode(e.disableTrackVariant,n.uint32(82).fork()).join(),e.setTargetTrackVariant!==void 0&&Y.encode(e.setTargetTrackVariant,n.uint32(90).fork()).join(),e.unmuteTrack!==void 0&&Z.encode(e.unmuteTrack,n.uint32(98).fork()).join(),n},decode(e,n){let t=e instanceof v?e:new v(e),i=n===void 0?t.len:t.pos+n,r=Pt();for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{if(a!==10)break;r.connect=W.decode(t,t.uint32());continue}case 2:{if(a!==18)break;r.disconnect=H.decode(t,t.uint32());continue}case 3:{if(a!==26)break;r.updateEndpointMetadata=q.decode(t,t.uint32());continue}case 4:{if(a!==34)break;r.updateTrackMetadata=F.decode(t,t.uint32());continue}case 5:{if(a!==42)break;r.renegotiateTracks=B.decode(t,t.uint32());continue}case 6:{if(a!==50)break;r.candidate=P.decode(t,t.uint32());continue}case 7:{if(a!==58)break;r.sdpOffer=K.decode(t,t.uint32());continue}case 8:{if(a!==66)break;r.trackBitrates=y.decode(t,t.uint32());continue}case 9:{if(a!==74)break;r.enableTrackVariant=G.decode(t,t.uint32());continue}case 10:{if(a!==82)break;r.disableTrackVariant=$.decode(t,t.uint32());continue}case 11:{if(a!==90)break;r.setTargetTrackVariant=Y.decode(t,t.uint32());continue}case 12:{if(a!==98)break;r.unmuteTrack=Z.decode(t,t.uint32());continue}}if((a&7)===4||a===0)break;t.skip(a&7)}return r},fromJSON(e){return{connect:k(e.connect)?W.fromJSON(e.connect):void 0,disconnect:k(e.disconnect)?H.fromJSON(e.disconnect):void 0,updateEndpointMetadata:k(e.updateEndpointMetadata)?q.fromJSON(e.updateEndpointMetadata):void 0,updateTrackMetadata:k(e.updateTrackMetadata)?F.fromJSON(e.updateTrackMetadata):void 0,renegotiateTracks:k(e.renegotiateTracks)?B.fromJSON(e.renegotiateTracks):void 0,candidate:k(e.candidate)?P.fromJSON(e.candidate):void 0,sdpOffer:k(e.sdpOffer)?K.fromJSON(e.sdpOffer):void 0,trackBitrates:k(e.trackBitrates)?y.fromJSON(e.trackBitrates):void 0,enableTrackVariant:k(e.enableTrackVariant)?G.fromJSON(e.enableTrackVariant):void 0,disableTrackVariant:k(e.disableTrackVariant)?$.fromJSON(e.disableTrackVariant):void 0,setTargetTrackVariant:k(e.setTargetTrackVariant)?Y.fromJSON(e.setTargetTrackVariant):void 0,unmuteTrack:k(e.unmuteTrack)?Z.fromJSON(e.unmuteTrack):void 0}},toJSON(e){let n={};return e.connect!==void 0&&(n.connect=W.toJSON(e.connect)),e.disconnect!==void 0&&(n.disconnect=H.toJSON(e.disconnect)),e.updateEndpointMetadata!==void 0&&(n.updateEndpointMetadata=q.toJSON(e.updateEndpointMetadata)),e.updateTrackMetadata!==void 0&&(n.updateTrackMetadata=F.toJSON(e.updateTrackMetadata)),e.renegotiateTracks!==void 0&&(n.renegotiateTracks=B.toJSON(e.renegotiateTracks)),e.candidate!==void 0&&(n.candidate=P.toJSON(e.candidate)),e.sdpOffer!==void 0&&(n.sdpOffer=K.toJSON(e.sdpOffer)),e.trackBitrates!==void 0&&(n.trackBitrates=y.toJSON(e.trackBitrates)),e.enableTrackVariant!==void 0&&(n.enableTrackVariant=G.toJSON(e.enableTrackVariant)),e.disableTrackVariant!==void 0&&(n.disableTrackVariant=$.toJSON(e.disableTrackVariant)),e.setTargetTrackVariant!==void 0&&(n.setTargetTrackVariant=Y.toJSON(e.setTargetTrackVariant)),e.unmuteTrack!==void 0&&(n.unmuteTrack=Z.toJSON(e.unmuteTrack)),n},create(e){return Ge.fromPartial(e??{})},fromPartial(e){let n=Pt();return n.connect=e.connect!==void 0&&e.connect!==null?W.fromPartial(e.connect):void 0,n.disconnect=e.disconnect!==void 0&&e.disconnect!==null?H.fromPartial(e.disconnect):void 0,n.updateEndpointMetadata=e.updateEndpointMetadata!==void 0&&e.updateEndpointMetadata!==null?q.fromPartial(e.updateEndpointMetadata):void 0,n.updateTrackMetadata=e.updateTrackMetadata!==void 0&&e.updateTrackMetadata!==null?F.fromPartial(e.updateTrackMetadata):void 0,n.renegotiateTracks=e.renegotiateTracks!==void 0&&e.renegotiateTracks!==null?B.fromPartial(e.renegotiateTracks):void 0,n.candidate=e.candidate!==void 0&&e.candidate!==null?P.fromPartial(e.candidate):void 0,n.sdpOffer=e.sdpOffer!==void 0&&e.sdpOffer!==null?K.fromPartial(e.sdpOffer):void 0,n.trackBitrates=e.trackBitrates!==void 0&&e.trackBitrates!==null?y.fromPartial(e.trackBitrates):void 0,n.enableTrackVariant=e.enableTrackVariant!==void 0&&e.enableTrackVariant!==null?G.fromPartial(e.enableTrackVariant):void 0,n.disableTrackVariant=e.disableTrackVariant!==void 0&&e.disableTrackVariant!==null?$.fromPartial(e.disableTrackVariant):void 0,n.setTargetTrackVariant=e.setTargetTrackVariant!==void 0&&e.setTargetTrackVariant!==null?Y.fromPartial(e.setTargetTrackVariant):void 0,n.unmuteTrack=e.unmuteTrack!==void 0&&e.unmuteTrack!==null?Z.fromPartial(e.unmuteTrack):void 0,n}};function bt(){return{variant:0,bitrate:0}}var we={encode(e,n=new g){return e.variant!==0&&n.uint32(8).int32(e.variant),e.bitrate!==0&&n.uint32(16).int32(e.bitrate),n},decode(e,n){let t=e instanceof v?e:new v(e),i=n===void 0?t.len:t.pos+n,r=bt();for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{if(a!==8)break;r.variant=t.int32();continue}case 2:{if(a!==16)break;r.bitrate=t.int32();continue}}if((a&7)===4||a===0)break;t.skip(a&7)}return r},fromJSON(e){return{variant:k(e.variant)?D(e.variant):0,bitrate:k(e.bitrate)?globalThis.Number(e.bitrate):0}},toJSON(e){let n={};return e.variant!==0&&(n.variant=U(e.variant)),e.bitrate!==0&&(n.bitrate=Math.round(e.bitrate)),n},create(e){return we.fromPartial(e??{})},fromPartial(e){let n=bt();return n.variant=e.variant??0,n.bitrate=e.bitrate??0,n}};function wt(){return{metadataJson:""}}var W={encode(e,n=new g){return e.metadataJson!==""&&n.uint32(10).string(e.metadataJson),n},decode(e,n){let t=e instanceof v?e:new v(e),i=n===void 0?t.len:t.pos+n,r=wt();for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{if(a!==10)break;r.metadataJson=t.string();continue}}if((a&7)===4||a===0)break;t.skip(a&7)}return r},fromJSON(e){return{metadataJson:k(e.metadataJson)?globalThis.String(e.metadataJson):""}},toJSON(e){let n={};return e.metadataJson!==""&&(n.metadataJson=e.metadataJson),n},create(e){return W.fromPartial(e??{})},fromPartial(e){let n=wt();return n.metadataJson=e.metadataJson??"",n}};function Nt(){return{}}var H={encode(e,n=new g){return n},decode(e,n){let t=e instanceof v?e:new v(e),i=n===void 0?t.len:t.pos+n,r=Nt();for(;t.pos<i;){let a=t.uint32();if(a>>>3,(a&7)===4||a===0)break;t.skip(a&7)}return r},fromJSON(e){return{}},toJSON(e){return{}},create(e){return H.fromPartial(e??{})},fromPartial(e){return Nt()}};function Jt(){return{metadataJson:""}}var q={encode(e,n=new g){return e.metadataJson!==""&&n.uint32(10).string(e.metadataJson),n},decode(e,n){let t=e instanceof v?e:new v(e),i=n===void 0?t.len:t.pos+n,r=Jt();for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{if(a!==10)break;r.metadataJson=t.string();continue}}if((a&7)===4||a===0)break;t.skip(a&7)}return r},fromJSON(e){return{metadataJson:k(e.metadataJson)?globalThis.String(e.metadataJson):""}},toJSON(e){let n={};return e.metadataJson!==""&&(n.metadataJson=e.metadataJson),n},create(e){return q.fromPartial(e??{})},fromPartial(e){let n=Jt();return n.metadataJson=e.metadataJson??"",n}};function Rt(){return{trackId:"",metadataJson:""}}var F={encode(e,n=new g){return e.trackId!==""&&n.uint32(10).string(e.trackId),e.metadataJson!==""&&n.uint32(18).string(e.metadataJson),n},decode(e,n){let t=e instanceof v?e:new v(e),i=n===void 0?t.len:t.pos+n,r=Rt();for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{if(a!==10)break;r.trackId=t.string();continue}case 2:{if(a!==18)break;r.metadataJson=t.string();continue}}if((a&7)===4||a===0)break;t.skip(a&7)}return r},fromJSON(e){return{trackId:k(e.trackId)?globalThis.String(e.trackId):"",metadataJson:k(e.metadataJson)?globalThis.String(e.metadataJson):""}},toJSON(e){let n={};return e.trackId!==""&&(n.trackId=e.trackId),e.metadataJson!==""&&(n.metadataJson=e.metadataJson),n},create(e){return F.fromPartial(e??{})},fromPartial(e){let n=Rt();return n.trackId=e.trackId??"",n.metadataJson=e.metadataJson??"",n}};function Ct(){return{}}var B={encode(e,n=new g){return n},decode(e,n){let t=e instanceof v?e:new v(e),i=n===void 0?t.len:t.pos+n,r=Ct();for(;t.pos<i;){let a=t.uint32();if(a>>>3,(a&7)===4||a===0)break;t.skip(a&7)}return r},fromJSON(e){return{}},toJSON(e){return{}},create(e){return B.fromPartial(e??{})},fromPartial(e){return Ct()}};function xt(){return{sdp:"",trackIdToMetadataJson:{},trackIdToBitrates:{},midToTrackId:{}}}var K={encode(e,n=new g){return e.sdp!==""&&n.uint32(10).string(e.sdp),Object.entries(e.trackIdToMetadataJson).forEach(([t,i])=>{Mn.encode({key:t,value:i},n.uint32(18).fork()).join()}),Object.entries(e.trackIdToBitrates).forEach(([t,i])=>{mn.encode({key:t,value:i},n.uint32(26).fork()).join()}),Object.entries(e.midToTrackId).forEach(([t,i])=>{yn.encode({key:t,value:i},n.uint32(34).fork()).join()}),n},decode(e,n){let t=e instanceof v?e:new v(e),i=n===void 0?t.len:t.pos+n,r=xt();for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{if(a!==10)break;r.sdp=t.string();continue}case 2:{if(a!==18)break;let d=Mn.decode(t,t.uint32());d.value!==void 0&&(r.trackIdToMetadataJson[d.key]=d.value);continue}case 3:{if(a!==26)break;let d=mn.decode(t,t.uint32());d.value!==void 0&&(r.trackIdToBitrates[d.key]=d.value);continue}case 4:{if(a!==34)break;let d=yn.decode(t,t.uint32());d.value!==void 0&&(r.midToTrackId[d.key]=d.value);continue}}if((a&7)===4||a===0)break;t.skip(a&7)}return r},fromJSON(e){return{sdp:k(e.sdp)?globalThis.String(e.sdp):"",trackIdToMetadataJson:En(e.trackIdToMetadataJson)?Object.entries(e.trackIdToMetadataJson).reduce((n,[t,i])=>(n[t]=String(i),n),{}):{},trackIdToBitrates:En(e.trackIdToBitrates)?Object.entries(e.trackIdToBitrates).reduce((n,[t,i])=>(n[t]=y.fromJSON(i),n),{}):{},midToTrackId:En(e.midToTrackId)?Object.entries(e.midToTrackId).reduce((n,[t,i])=>(n[t]=String(i),n),{}):{}}},toJSON(e){let n={};if(e.sdp!==""&&(n.sdp=e.sdp),e.trackIdToMetadataJson){let t=Object.entries(e.trackIdToMetadataJson);t.length>0&&(n.trackIdToMetadataJson={},t.forEach(([i,r])=>{n.trackIdToMetadataJson[i]=r}))}if(e.trackIdToBitrates){let t=Object.entries(e.trackIdToBitrates);t.length>0&&(n.trackIdToBitrates={},t.forEach(([i,r])=>{n.trackIdToBitrates[i]=y.toJSON(r)}))}if(e.midToTrackId){let t=Object.entries(e.midToTrackId);t.length>0&&(n.midToTrackId={},t.forEach(([i,r])=>{n.midToTrackId[i]=r}))}return n},create(e){return K.fromPartial(e??{})},fromPartial(e){let n=xt();return n.sdp=e.sdp??"",n.trackIdToMetadataJson=Object.entries(e.trackIdToMetadataJson??{}).reduce((t,[i,r])=>(r!==void 0&&(t[i]=globalThis.String(r)),t),{}),n.trackIdToBitrates=Object.entries(e.trackIdToBitrates??{}).reduce((t,[i,r])=>(r!==void 0&&(t[i]=y.fromPartial(r)),t),{}),n.midToTrackId=Object.entries(e.midToTrackId??{}).reduce((t,[i,r])=>(r!==void 0&&(t[i]=globalThis.String(r)),t),{}),n}};function At(){return{key:"",value:""}}var Mn={encode(e,n=new g){return e.key!==""&&n.uint32(10).string(e.key),e.value!==""&&n.uint32(18).string(e.value),n},decode(e,n){let t=e instanceof v?e:new v(e),i=n===void 0?t.len:t.pos+n,r=At();for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{if(a!==10)break;r.key=t.string();continue}case 2:{if(a!==18)break;r.value=t.string();continue}}if((a&7)===4||a===0)break;t.skip(a&7)}return r},fromJSON(e){return{key:k(e.key)?globalThis.String(e.key):"",value:k(e.value)?globalThis.String(e.value):""}},toJSON(e){let n={};return e.key!==""&&(n.key=e.key),e.value!==""&&(n.value=e.value),n},create(e){return Mn.fromPartial(e??{})},fromPartial(e){let n=At();return n.key=e.key??"",n.value=e.value??"",n}};function Bt(){return{key:"",value:void 0}}var mn={encode(e,n=new g){return e.key!==""&&n.uint32(10).string(e.key),e.value!==void 0&&y.encode(e.value,n.uint32(18).fork()).join(),n},decode(e,n){let t=e instanceof v?e:new v(e),i=n===void 0?t.len:t.pos+n,r=Bt();for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{if(a!==10)break;r.key=t.string();continue}case 2:{if(a!==18)break;r.value=y.decode(t,t.uint32());continue}}if((a&7)===4||a===0)break;t.skip(a&7)}return r},fromJSON(e){return{key:k(e.key)?globalThis.String(e.key):"",value:k(e.value)?y.fromJSON(e.value):void 0}},toJSON(e){let n={};return e.key!==""&&(n.key=e.key),e.value!==void 0&&(n.value=y.toJSON(e.value)),n},create(e){return mn.fromPartial(e??{})},fromPartial(e){let n=Bt();return n.key=e.key??"",n.value=e.value!==void 0&&e.value!==null?y.fromPartial(e.value):void 0,n}};function Vt(){return{key:"",value:""}}var yn={encode(e,n=new g){return e.key!==""&&n.uint32(10).string(e.key),e.value!==""&&n.uint32(18).string(e.value),n},decode(e,n){let t=e instanceof v?e:new v(e),i=n===void 0?t.len:t.pos+n,r=Vt();for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{if(a!==10)break;r.key=t.string();continue}case 2:{if(a!==18)break;r.value=t.string();continue}}if((a&7)===4||a===0)break;t.skip(a&7)}return r},fromJSON(e){return{key:k(e.key)?globalThis.String(e.key):"",value:k(e.value)?globalThis.String(e.value):""}},toJSON(e){let n={};return e.key!==""&&(n.key=e.key),e.value!==""&&(n.value=e.value),n},create(e){return yn.fromPartial(e??{})},fromPartial(e){let n=Vt();return n.key=e.key??"",n.value=e.value??"",n}};function Dt(){return{trackId:"",variantBitrates:[]}}var y={encode(e,n=new g){e.trackId!==""&&n.uint32(10).string(e.trackId);for(let t of e.variantBitrates)we.encode(t,n.uint32(18).fork()).join();return n},decode(e,n){let t=e instanceof v?e:new v(e),i=n===void 0?t.len:t.pos+n,r=Dt();for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{if(a!==10)break;r.trackId=t.string();continue}case 2:{if(a!==18)break;r.variantBitrates.push(we.decode(t,t.uint32()));continue}}if((a&7)===4||a===0)break;t.skip(a&7)}return r},fromJSON(e){return{trackId:k(e.trackId)?globalThis.String(e.trackId):"",variantBitrates:globalThis.Array.isArray(e?.variantBitrates)?e.variantBitrates.map(n=>we.fromJSON(n)):[]}},toJSON(e){let n={};return e.trackId!==""&&(n.trackId=e.trackId),e.variantBitrates?.length&&(n.variantBitrates=e.variantBitrates.map(t=>we.toJSON(t))),n},create(e){return y.fromPartial(e??{})},fromPartial(e){let n=Dt();return n.trackId=e.trackId??"",n.variantBitrates=e.variantBitrates?.map(t=>we.fromPartial(t))||[],n}};function Ut(){return{trackId:"",variant:0}}var $={encode(e,n=new g){return e.trackId!==""&&n.uint32(10).string(e.trackId),e.variant!==0&&n.uint32(16).int32(e.variant),n},decode(e,n){let t=e instanceof v?e:new v(e),i=n===void 0?t.len:t.pos+n,r=Ut();for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{if(a!==10)break;r.trackId=t.string();continue}case 2:{if(a!==16)break;r.variant=t.int32();continue}}if((a&7)===4||a===0)break;t.skip(a&7)}return r},fromJSON(e){return{trackId:k(e.trackId)?globalThis.String(e.trackId):"",variant:k(e.variant)?D(e.variant):0}},toJSON(e){let n={};return e.trackId!==""&&(n.trackId=e.trackId),e.variant!==0&&(n.variant=U(e.variant)),n},create(e){return $.fromPartial(e??{})},fromPartial(e){let n=Ut();return n.trackId=e.trackId??"",n.variant=e.variant??0,n}};function Lt(){return{trackId:"",variant:0}}var G={encode(e,n=new g){return e.trackId!==""&&n.uint32(10).string(e.trackId),e.variant!==0&&n.uint32(16).int32(e.variant),n},decode(e,n){let t=e instanceof v?e:new v(e),i=n===void 0?t.len:t.pos+n,r=Lt();for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{if(a!==10)break;r.trackId=t.string();continue}case 2:{if(a!==16)break;r.variant=t.int32();continue}}if((a&7)===4||a===0)break;t.skip(a&7)}return r},fromJSON(e){return{trackId:k(e.trackId)?globalThis.String(e.trackId):"",variant:k(e.variant)?D(e.variant):0}},toJSON(e){let n={};return e.trackId!==""&&(n.trackId=e.trackId),e.variant!==0&&(n.variant=U(e.variant)),n},create(e){return G.fromPartial(e??{})},fromPartial(e){let n=Lt();return n.trackId=e.trackId??"",n.variant=e.variant??0,n}};function Ft(){return{trackId:"",variant:0}}var Y={encode(e,n=new g){return e.trackId!==""&&n.uint32(10).string(e.trackId),e.variant!==0&&n.uint32(16).int32(e.variant),n},decode(e,n){let t=e instanceof v?e:new v(e),i=n===void 0?t.len:t.pos+n,r=Ft();for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{if(a!==10)break;r.trackId=t.string();continue}case 2:{if(a!==16)break;r.variant=t.int32();continue}}if((a&7)===4||a===0)break;t.skip(a&7)}return r},fromJSON(e){return{trackId:k(e.trackId)?globalThis.String(e.trackId):"",variant:k(e.variant)?D(e.variant):0}},toJSON(e){let n={};return e.trackId!==""&&(n.trackId=e.trackId),e.variant!==0&&(n.variant=U(e.variant)),n},create(e){return Y.fromPartial(e??{})},fromPartial(e){let n=Ft();return n.trackId=e.trackId??"",n.variant=e.variant??0,n}};function Wt(){return{trackId:""}}var Z={encode(e,n=new g){return e.trackId!==""&&n.uint32(10).string(e.trackId),n},decode(e,n){let t=e instanceof v?e:new v(e),i=n===void 0?t.len:t.pos+n,r=Wt();for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{if(a!==10)break;r.trackId=t.string();continue}}if((a&7)===4||a===0)break;t.skip(a&7)}return r},fromJSON(e){return{trackId:k(e.trackId)?globalThis.String(e.trackId):""}},toJSON(e){let n={};return e.trackId!==""&&(n.trackId=e.trackId),n},create(e){return Z.fromPartial(e??{})},fromPartial(e){let n=Wt();return n.trackId=e.trackId??"",n}};function En(e){return typeof e=="object"&&e!==null}function k(e){return e!=null}var Aa=class{localTrackManager;connection=null;clearConnectionCallbacks=null;constructor(e){this.localTrackManager=e}initConnection=e=>{this.connection=e;let n=()=>{e.getConnection().signalingState==="stable"&&this.processNextCommand()},t=()=>{e.getConnection().iceGatheringState==="complete"&&this.processNextCommand()},i=()=>{e.getConnection().connectionState==="connected"&&this.processNextCommand()},r=()=>{e.getConnection().iceConnectionState==="connected"&&this.processNextCommand()};this.clearConnectionCallbacks=()=>{e.getConnection().removeEventListener("signalingstatechange",n),e.getConnection().removeEventListener("icegatheringstatechange",t),e.getConnection().removeEventListener("connectionstatechange",i),e.getConnection().removeEventListener("iceconnectionstatechange",r)},e.getConnection().addEventListener("icegatheringstatechange",r),e.getConnection().addEventListener("connectionstatechange",i),e.getConnection().addEventListener("iceconnectionstatechange",r),e.getConnection().addEventListener("signalingstatechange",n)};commandsQueue=[];commandResolutionNotifier=null;pushCommand=e=>{this.commandsQueue.push(e),this.processNextCommand()};processNextCommand=()=>{if(this.localTrackManager.isNegotiationInProgress()||this.connection?.isConnectionUnstable())return;this.resolvePreviousCommand();let e=this.commandsQueue.shift();e&&(this.commandResolutionNotifier=e.resolutionNotifier,this.handleCommand(e))};handleCommand=async e=>{try{e.parse?.();let n=e.handler();e.resolve==="on-handler-resolve"&&(await n,this.resolvePreviousCommand(),this.processNextCommand())}catch(n){this.commandResolutionNotifier?.reject(n),this.commandResolutionNotifier=null,this.processNextCommand()}};resolvePreviousCommand=()=>{this.commandResolutionNotifier&&(this.commandResolutionNotifier.resolve(),this.commandResolutionNotifier=null)};cleanUp=()=>{this.commandResolutionNotifier?.reject("Disconnected"),this.commandResolutionNotifier=null,this.commandsQueue=[],this.clearConnectionCallbacks?.()}},Ba=class{connection;constructor(e){this.connection=new RTCPeerConnection({bundlePolicy:"max-bundle",iceServers:e,iceTransportPolicy:"all"})}isConnectionUnstable=()=>{if(!this.connection)return!1;let e=this.connection.signalingState!=="stable",n=this.connection.connectionState!=="connected",t=this.connection.iceConnectionState!=="connected";return e&&n&&t};getConnection=()=>this.connection;addTransceiversIfNeeded=e=>{let n=this.connection.getTransceivers().filter(d=>d.direction==="recvonly"),t=n.filter(d=>d.receiver.track.kind==="video").length,i=n.filter(d=>d.receiver.track.kind==="audio").length,r=Array(e.video-t).fill("video"),a=Array(e.audio-i).fill("audio");[...r,...a].forEach(d=>this.connection.addTransceiver(d,{direction:"recvonly"}))};addTransceiver=(e,n)=>{this.connection.addTransceiver(e,n)};setOnTrackReady=e=>{this.connection.ontrack=e};setRemoteDescription=async e=>{await this.connection.setRemoteDescription(e)};isTrackInUse=e=>this.connection.getSenders().some(n=>n.track===e);removeTrack=e=>{this.connection.removeTrack(e)};findSender=e=>this.connection.getSenders().find(n=>n.track&&n.track.id===e);addIceCandidate=async e=>{await this.connection.addIceCandidate(e)}},In=class{promise;resolveFn=()=>null;rejectFn=()=>null;constructor(){this.promise=new Promise((e,n)=>{this.resolveFn=e,this.rejectFn=n})}resolve(e){this.resolveFn(e)}reject(e){this.rejectFn(e)}};function Va(e){switch(e){case 0:case"STATUS_UNSPECIFIED":return 0;case 1:case"STATUS_SILENCE":return 1;case 2:case"STATUS_SPEECH":return 2;case-1:case"UNRECOGNIZED":default:return-1}}function Da(e){switch(e){case 0:return"STATUS_UNSPECIFIED";case 1:return"STATUS_SILENCE";case 2:return"STATUS_SPEECH";case-1:default:return"UNRECOGNIZED"}}function Ht(){return{endpointUpdated:void 0,trackUpdated:void 0,tracksAdded:void 0,tracksRemoved:void 0,endpointAdded:void 0,endpointRemoved:void 0,connected:void 0,error:void 0,offerData:void 0,candidate:void 0,sdpAnswer:void 0,vadNotification:void 0,trackVariantSwitched:void 0,trackVariantDisabled:void 0,trackVariantEnabled:void 0}}var pa={encode(e,n=new I){return e.endpointUpdated!==void 0&&Re.encode(e.endpointUpdated,n.uint32(10).fork()).join(),e.trackUpdated!==void 0&&Ce.encode(e.trackUpdated,n.uint32(18).fork()).join(),e.tracksAdded!==void 0&&xe.encode(e.tracksAdded,n.uint32(26).fork()).join(),e.tracksRemoved!==void 0&&Ae.encode(e.tracksRemoved,n.uint32(34).fork()).join(),e.endpointAdded!==void 0&&Be.encode(e.endpointAdded,n.uint32(42).fork()).join(),e.endpointRemoved!==void 0&&De.encode(e.endpointRemoved,n.uint32(50).fork()).join(),e.connected!==void 0&&Ve.encode(e.connected,n.uint32(58).fork()).join(),e.error!==void 0&&Ue.encode(e.error,n.uint32(66).fork()).join(),e.offerData!==void 0&&Le.encode(e.offerData,n.uint32(74).fork()).join(),e.candidate!==void 0&&P.encode(e.candidate,n.uint32(82).fork()).join(),e.sdpAnswer!==void 0&&We.encode(e.sdpAnswer,n.uint32(90).fork()).join(),e.vadNotification!==void 0&&He.encode(e.vadNotification,n.uint32(98).fork()).join(),e.trackVariantSwitched!==void 0&&qe.encode(e.trackVariantSwitched,n.uint32(106).fork()).join(),e.trackVariantDisabled!==void 0&&Ke.encode(e.trackVariantDisabled,n.uint32(114).fork()).join(),e.trackVariantEnabled!==void 0&&$e.encode(e.trackVariantEnabled,n.uint32(122).fork()).join(),n},decode(e,n){let t=e instanceof u?e:new u(e),i=n===void 0?t.len:t.pos+n,r=Ht();for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{if(a!==10)break;r.endpointUpdated=Re.decode(t,t.uint32());continue}case 2:{if(a!==18)break;r.trackUpdated=Ce.decode(t,t.uint32());continue}case 3:{if(a!==26)break;r.tracksAdded=xe.decode(t,t.uint32());continue}case 4:{if(a!==34)break;r.tracksRemoved=Ae.decode(t,t.uint32());continue}case 5:{if(a!==42)break;r.endpointAdded=Be.decode(t,t.uint32());continue}case 6:{if(a!==50)break;r.endpointRemoved=De.decode(t,t.uint32());continue}case 7:{if(a!==58)break;r.connected=Ve.decode(t,t.uint32());continue}case 8:{if(a!==66)break;r.error=Ue.decode(t,t.uint32());continue}case 9:{if(a!==74)break;r.offerData=Le.decode(t,t.uint32());continue}case 10:{if(a!==82)break;r.candidate=P.decode(t,t.uint32());continue}case 11:{if(a!==90)break;r.sdpAnswer=We.decode(t,t.uint32());continue}case 12:{if(a!==98)break;r.vadNotification=He.decode(t,t.uint32());continue}case 13:{if(a!==106)break;r.trackVariantSwitched=qe.decode(t,t.uint32());continue}case 14:{if(a!==114)break;r.trackVariantDisabled=Ke.decode(t,t.uint32());continue}case 15:{if(a!==122)break;r.trackVariantEnabled=$e.decode(t,t.uint32());continue}}if((a&7)===4||a===0)break;t.skip(a&7)}return r},fromJSON(e){return{endpointUpdated:c(e.endpointUpdated)?Re.fromJSON(e.endpointUpdated):void 0,trackUpdated:c(e.trackUpdated)?Ce.fromJSON(e.trackUpdated):void 0,tracksAdded:c(e.tracksAdded)?xe.fromJSON(e.tracksAdded):void 0,tracksRemoved:c(e.tracksRemoved)?Ae.fromJSON(e.tracksRemoved):void 0,endpointAdded:c(e.endpointAdded)?Be.fromJSON(e.endpointAdded):void 0,endpointRemoved:c(e.endpointRemoved)?De.fromJSON(e.endpointRemoved):void 0,connected:c(e.connected)?Ve.fromJSON(e.connected):void 0,error:c(e.error)?Ue.fromJSON(e.error):void 0,offerData:c(e.offerData)?Le.fromJSON(e.offerData):void 0,candidate:c(e.candidate)?P.fromJSON(e.candidate):void 0,sdpAnswer:c(e.sdpAnswer)?We.fromJSON(e.sdpAnswer):void 0,vadNotification:c(e.vadNotification)?He.fromJSON(e.vadNotification):void 0,trackVariantSwitched:c(e.trackVariantSwitched)?qe.fromJSON(e.trackVariantSwitched):void 0,trackVariantDisabled:c(e.trackVariantDisabled)?Ke.fromJSON(e.trackVariantDisabled):void 0,trackVariantEnabled:c(e.trackVariantEnabled)?$e.fromJSON(e.trackVariantEnabled):void 0}},toJSON(e){let n={};return e.endpointUpdated!==void 0&&(n.endpointUpdated=Re.toJSON(e.endpointUpdated)),e.trackUpdated!==void 0&&(n.trackUpdated=Ce.toJSON(e.trackUpdated)),e.tracksAdded!==void 0&&(n.tracksAdded=xe.toJSON(e.tracksAdded)),e.tracksRemoved!==void 0&&(n.tracksRemoved=Ae.toJSON(e.tracksRemoved)),e.endpointAdded!==void 0&&(n.endpointAdded=Be.toJSON(e.endpointAdded)),e.endpointRemoved!==void 0&&(n.endpointRemoved=De.toJSON(e.endpointRemoved)),e.connected!==void 0&&(n.connected=Ve.toJSON(e.connected)),e.error!==void 0&&(n.error=Ue.toJSON(e.error)),e.offerData!==void 0&&(n.offerData=Le.toJSON(e.offerData)),e.candidate!==void 0&&(n.candidate=P.toJSON(e.candidate)),e.sdpAnswer!==void 0&&(n.sdpAnswer=We.toJSON(e.sdpAnswer)),e.vadNotification!==void 0&&(n.vadNotification=He.toJSON(e.vadNotification)),e.trackVariantSwitched!==void 0&&(n.trackVariantSwitched=qe.toJSON(e.trackVariantSwitched)),e.trackVariantDisabled!==void 0&&(n.trackVariantDisabled=Ke.toJSON(e.trackVariantDisabled)),e.trackVariantEnabled!==void 0&&(n.trackVariantEnabled=$e.toJSON(e.trackVariantEnabled)),n},create(e){return pa.fromPartial(e??{})},fromPartial(e){let n=Ht();return n.endpointUpdated=e.endpointUpdated!==void 0&&e.endpointUpdated!==null?Re.fromPartial(e.endpointUpdated):void 0,n.trackUpdated=e.trackUpdated!==void 0&&e.trackUpdated!==null?Ce.fromPartial(e.trackUpdated):void 0,n.tracksAdded=e.tracksAdded!==void 0&&e.tracksAdded!==null?xe.fromPartial(e.tracksAdded):void 0,n.tracksRemoved=e.tracksRemoved!==void 0&&e.tracksRemoved!==null?Ae.fromPartial(e.tracksRemoved):void 0,n.endpointAdded=e.endpointAdded!==void 0&&e.endpointAdded!==null?Be.fromPartial(e.endpointAdded):void 0,n.endpointRemoved=e.endpointRemoved!==void 0&&e.endpointRemoved!==null?De.fromPartial(e.endpointRemoved):void 0,n.connected=e.connected!==void 0&&e.connected!==null?Ve.fromPartial(e.connected):void 0,n.error=e.error!==void 0&&e.error!==null?Ue.fromPartial(e.error):void 0,n.offerData=e.offerData!==void 0&&e.offerData!==null?Le.fromPartial(e.offerData):void 0,n.candidate=e.candidate!==void 0&&e.candidate!==null?P.fromPartial(e.candidate):void 0,n.sdpAnswer=e.sdpAnswer!==void 0&&e.sdpAnswer!==null?We.fromPartial(e.sdpAnswer):void 0,n.vadNotification=e.vadNotification!==void 0&&e.vadNotification!==null?He.fromPartial(e.vadNotification):void 0,n.trackVariantSwitched=e.trackVariantSwitched!==void 0&&e.trackVariantSwitched!==null?qe.fromPartial(e.trackVariantSwitched):void 0,n.trackVariantDisabled=e.trackVariantDisabled!==void 0&&e.trackVariantDisabled!==null?Ke.fromPartial(e.trackVariantDisabled):void 0,n.trackVariantEnabled=e.trackVariantEnabled!==void 0&&e.trackVariantEnabled!==null?$e.fromPartial(e.trackVariantEnabled):void 0,n}};function qt(){return{metadataJson:"",simulcastConfig:void 0}}var M={encode(e,n=new I){return e.metadataJson!==""&&n.uint32(10).string(e.metadataJson),e.simulcastConfig!==void 0&&Ne.encode(e.simulcastConfig,n.uint32(18).fork()).join(),n},decode(e,n){let t=e instanceof u?e:new u(e),i=n===void 0?t.len:t.pos+n,r=qt();for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{if(a!==10)break;r.metadataJson=t.string();continue}case 2:{if(a!==18)break;r.simulcastConfig=Ne.decode(t,t.uint32());continue}}if((a&7)===4||a===0)break;t.skip(a&7)}return r},fromJSON(e){return{metadataJson:c(e.metadataJson)?globalThis.String(e.metadataJson):"",simulcastConfig:c(e.simulcastConfig)?Ne.fromJSON(e.simulcastConfig):void 0}},toJSON(e){let n={};return e.metadataJson!==""&&(n.metadataJson=e.metadataJson),e.simulcastConfig!==void 0&&(n.simulcastConfig=Ne.toJSON(e.simulcastConfig)),n},create(e){return M.fromPartial(e??{})},fromPartial(e){let n=qt();return n.metadataJson=e.metadataJson??"",n.simulcastConfig=e.simulcastConfig!==void 0&&e.simulcastConfig!==null?Ne.fromPartial(e.simulcastConfig):void 0,n}};function Kt(){return{enabled:!1,enabledVariants:[],disabledVariants:[]}}var Ne={encode(e,n=new I){e.enabled!==!1&&n.uint32(8).bool(e.enabled),n.uint32(18).fork();for(let t of e.enabledVariants)n.int32(t);n.join(),n.uint32(26).fork();for(let t of e.disabledVariants)n.int32(t);return n.join(),n},decode(e,n){let t=e instanceof u?e:new u(e),i=n===void 0?t.len:t.pos+n,r=Kt();for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{if(a!==8)break;r.enabled=t.bool();continue}case 2:{if(a===16){r.enabledVariants.push(t.int32());continue}if(a===18){let d=t.uint32()+t.pos;for(;t.pos<d;)r.enabledVariants.push(t.int32());continue}break}case 3:{if(a===24){r.disabledVariants.push(t.int32());continue}if(a===26){let d=t.uint32()+t.pos;for(;t.pos<d;)r.disabledVariants.push(t.int32());continue}break}}if((a&7)===4||a===0)break;t.skip(a&7)}return r},fromJSON(e){return{enabled:c(e.enabled)?globalThis.Boolean(e.enabled):!1,enabledVariants:globalThis.Array.isArray(e?.enabledVariants)?e.enabledVariants.map(n=>D(n)):[],disabledVariants:globalThis.Array.isArray(e?.disabledVariants)?e.disabledVariants.map(n=>D(n)):[]}},toJSON(e){let n={};return e.enabled!==!1&&(n.enabled=e.enabled),e.enabledVariants?.length&&(n.enabledVariants=e.enabledVariants.map(t=>U(t))),e.disabledVariants?.length&&(n.disabledVariants=e.disabledVariants.map(t=>U(t))),n},create(e){return Ne.fromPartial(e??{})},fromPartial(e){let n=Kt();return n.enabled=e.enabled??!1,n.enabledVariants=e.enabledVariants?.map(t=>t)||[],n.disabledVariants=e.disabledVariants?.map(t=>t)||[],n}};function $t(){return{endpointType:"",metadataJson:"",trackIdToTrack:{}}}var V={encode(e,n=new I){return e.endpointType!==""&&n.uint32(18).string(e.endpointType),e.metadataJson!==""&&n.uint32(26).string(e.metadataJson),Object.entries(e.trackIdToTrack).forEach(([t,i])=>{gn.encode({key:t,value:i},n.uint32(34).fork()).join()}),n},decode(e,n){let t=e instanceof u?e:new u(e),i=n===void 0?t.len:t.pos+n,r=$t();for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 2:{if(a!==18)break;r.endpointType=t.string();continue}case 3:{if(a!==26)break;r.metadataJson=t.string();continue}case 4:{if(a!==34)break;let d=gn.decode(t,t.uint32());d.value!==void 0&&(r.trackIdToTrack[d.key]=d.value);continue}}if((a&7)===4||a===0)break;t.skip(a&7)}return r},fromJSON(e){return{endpointType:c(e.endpointType)?globalThis.String(e.endpointType):"",metadataJson:c(e.metadataJson)?globalThis.String(e.metadataJson):"",trackIdToTrack:rn(e.trackIdToTrack)?Object.entries(e.trackIdToTrack).reduce((n,[t,i])=>(n[t]=M.fromJSON(i),n),{}):{}}},toJSON(e){let n={};if(e.endpointType!==""&&(n.endpointType=e.endpointType),e.metadataJson!==""&&(n.metadataJson=e.metadataJson),e.trackIdToTrack){let t=Object.entries(e.trackIdToTrack);t.length>0&&(n.trackIdToTrack={},t.forEach(([i,r])=>{n.trackIdToTrack[i]=M.toJSON(r)}))}return n},create(e){return V.fromPartial(e??{})},fromPartial(e){let n=$t();return n.endpointType=e.endpointType??"",n.metadataJson=e.metadataJson??"",n.trackIdToTrack=Object.entries(e.trackIdToTrack??{}).reduce((t,[i,r])=>(r!==void 0&&(t[i]=M.fromPartial(r)),t),{}),n}};function Gt(){return{key:"",value:void 0}}var gn={encode(e,n=new I){return e.key!==""&&n.uint32(10).string(e.key),e.value!==void 0&&M.encode(e.value,n.uint32(18).fork()).join(),n},decode(e,n){let t=e instanceof u?e:new u(e),i=n===void 0?t.len:t.pos+n,r=Gt();for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{if(a!==10)break;r.key=t.string();continue}case 2:{if(a!==18)break;r.value=M.decode(t,t.uint32());continue}}if((a&7)===4||a===0)break;t.skip(a&7)}return r},fromJSON(e){return{key:c(e.key)?globalThis.String(e.key):"",value:c(e.value)?M.fromJSON(e.value):void 0}},toJSON(e){let n={};return e.key!==""&&(n.key=e.key),e.value!==void 0&&(n.value=M.toJSON(e.value)),n},create(e){return gn.fromPartial(e??{})},fromPartial(e){let n=Gt();return n.key=e.key??"",n.value=e.value!==void 0&&e.value!==null?M.fromPartial(e.value):void 0,n}};function Yt(){return{credential:"",urls:[],username:""}}var Je={encode(e,n=new I){e.credential!==""&&n.uint32(10).string(e.credential);for(let t of e.urls)n.uint32(18).string(t);return e.username!==""&&n.uint32(26).string(e.username),n},decode(e,n){let t=e instanceof u?e:new u(e),i=n===void 0?t.len:t.pos+n,r=Yt();for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{if(a!==10)break;r.credential=t.string();continue}case 2:{if(a!==18)break;r.urls.push(t.string());continue}case 3:{if(a!==26)break;r.username=t.string();continue}}if((a&7)===4||a===0)break;t.skip(a&7)}return r},fromJSON(e){return{credential:c(e.credential)?globalThis.String(e.credential):"",urls:globalThis.Array.isArray(e?.urls)?e.urls.map(n=>globalThis.String(n)):[],username:c(e.username)?globalThis.String(e.username):""}},toJSON(e){let n={};return e.credential!==""&&(n.credential=e.credential),e.urls?.length&&(n.urls=e.urls),e.username!==""&&(n.username=e.username),n},create(e){return Je.fromPartial(e??{})},fromPartial(e){let n=Yt();return n.credential=e.credential??"",n.urls=e.urls?.map(t=>t)||[],n.username=e.username??"",n}};function Zt(){return{endpointId:"",metadataJson:""}}var Re={encode(e,n=new I){return e.endpointId!==""&&n.uint32(10).string(e.endpointId),e.metadataJson!==""&&n.uint32(18).string(e.metadataJson),n},decode(e,n){let t=e instanceof u?e:new u(e),i=n===void 0?t.len:t.pos+n,r=Zt();for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{if(a!==10)break;r.endpointId=t.string();continue}case 2:{if(a!==18)break;r.metadataJson=t.string();continue}}if((a&7)===4||a===0)break;t.skip(a&7)}return r},fromJSON(e){return{endpointId:c(e.endpointId)?globalThis.String(e.endpointId):"",metadataJson:c(e.metadataJson)?globalThis.String(e.metadataJson):""}},toJSON(e){let n={};return e.endpointId!==""&&(n.endpointId=e.endpointId),e.metadataJson!==""&&(n.metadataJson=e.metadataJson),n},create(e){return Re.fromPartial(e??{})},fromPartial(e){let n=Zt();return n.endpointId=e.endpointId??"",n.metadataJson=e.metadataJson??"",n}};function zt(){return{endpointId:"",trackId:"",metadataJson:""}}var Ce={encode(e,n=new I){return e.endpointId!==""&&n.uint32(10).string(e.endpointId),e.trackId!==""&&n.uint32(18).string(e.trackId),e.metadataJson!==""&&n.uint32(26).string(e.metadataJson),n},decode(e,n){let t=e instanceof u?e:new u(e),i=n===void 0?t.len:t.pos+n,r=zt();for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{if(a!==10)break;r.endpointId=t.string();continue}case 2:{if(a!==18)break;r.trackId=t.string();continue}case 3:{if(a!==26)break;r.metadataJson=t.string();continue}}if((a&7)===4||a===0)break;t.skip(a&7)}return r},fromJSON(e){return{endpointId:c(e.endpointId)?globalThis.String(e.endpointId):"",trackId:c(e.trackId)?globalThis.String(e.trackId):"",metadataJson:c(e.metadataJson)?globalThis.String(e.metadataJson):""}},toJSON(e){let n={};return e.endpointId!==""&&(n.endpointId=e.endpointId),e.trackId!==""&&(n.trackId=e.trackId),e.metadataJson!==""&&(n.metadataJson=e.metadataJson),n},create(e){return Ce.fromPartial(e??{})},fromPartial(e){let n=zt();return n.endpointId=e.endpointId??"",n.trackId=e.trackId??"",n.metadataJson=e.metadataJson??"",n}};function Qt(){return{endpointId:"",trackIdToTrack:{}}}var xe={encode(e,n=new I){return e.endpointId!==""&&n.uint32(10).string(e.endpointId),Object.entries(e.trackIdToTrack).forEach(([t,i])=>{Sn.encode({key:t,value:i},n.uint32(18).fork()).join()}),n},decode(e,n){let t=e instanceof u?e:new u(e),i=n===void 0?t.len:t.pos+n,r=Qt();for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{if(a!==10)break;r.endpointId=t.string();continue}case 2:{if(a!==18)break;let d=Sn.decode(t,t.uint32());d.value!==void 0&&(r.trackIdToTrack[d.key]=d.value);continue}}if((a&7)===4||a===0)break;t.skip(a&7)}return r},fromJSON(e){return{endpointId:c(e.endpointId)?globalThis.String(e.endpointId):"",trackIdToTrack:rn(e.trackIdToTrack)?Object.entries(e.trackIdToTrack).reduce((n,[t,i])=>(n[t]=M.fromJSON(i),n),{}):{}}},toJSON(e){let n={};if(e.endpointId!==""&&(n.endpointId=e.endpointId),e.trackIdToTrack){let t=Object.entries(e.trackIdToTrack);t.length>0&&(n.trackIdToTrack={},t.forEach(([i,r])=>{n.trackIdToTrack[i]=M.toJSON(r)}))}return n},create(e){return xe.fromPartial(e??{})},fromPartial(e){let n=Qt();return n.endpointId=e.endpointId??"",n.trackIdToTrack=Object.entries(e.trackIdToTrack??{}).reduce((t,[i,r])=>(r!==void 0&&(t[i]=M.fromPartial(r)),t),{}),n}};function Xt(){return{key:"",value:void 0}}var Sn={encode(e,n=new I){return e.key!==""&&n.uint32(10).string(e.key),e.value!==void 0&&M.encode(e.value,n.uint32(18).fork()).join(),n},decode(e,n){let t=e instanceof u?e:new u(e),i=n===void 0?t.len:t.pos+n,r=Xt();for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{if(a!==10)break;r.key=t.string();continue}case 2:{if(a!==18)break;r.value=M.decode(t,t.uint32());continue}}if((a&7)===4||a===0)break;t.skip(a&7)}return r},fromJSON(e){return{key:c(e.key)?globalThis.String(e.key):"",value:c(e.value)?M.fromJSON(e.value):void 0}},toJSON(e){let n={};return e.key!==""&&(n.key=e.key),e.value!==void 0&&(n.value=M.toJSON(e.value)),n},create(e){return Sn.fromPartial(e??{})},fromPartial(e){let n=Xt();return n.key=e.key??"",n.value=e.value!==void 0&&e.value!==null?M.fromPartial(e.value):void 0,n}};function jt(){return{endpointId:"",trackIds:[]}}var Ae={encode(e,n=new I){e.endpointId!==""&&n.uint32(10).string(e.endpointId);for(let t of e.trackIds)n.uint32(18).string(t);return n},decode(e,n){let t=e instanceof u?e:new u(e),i=n===void 0?t.len:t.pos+n,r=jt();for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{if(a!==10)break;r.endpointId=t.string();continue}case 2:{if(a!==18)break;r.trackIds.push(t.string());continue}}if((a&7)===4||a===0)break;t.skip(a&7)}return r},fromJSON(e){return{endpointId:c(e.endpointId)?globalThis.String(e.endpointId):"",trackIds:globalThis.Array.isArray(e?.trackIds)?e.trackIds.map(n=>globalThis.String(n)):[]}},toJSON(e){let n={};return e.endpointId!==""&&(n.endpointId=e.endpointId),e.trackIds?.length&&(n.trackIds=e.trackIds),n},create(e){return Ae.fromPartial(e??{})},fromPartial(e){let n=jt();return n.endpointId=e.endpointId??"",n.trackIds=e.trackIds?.map(t=>t)||[],n}};function ea(){return{endpointId:"",metadataJson:""}}var Be={encode(e,n=new I){return e.endpointId!==""&&n.uint32(10).string(e.endpointId),e.metadataJson!==""&&n.uint32(18).string(e.metadataJson),n},decode(e,n){let t=e instanceof u?e:new u(e),i=n===void 0?t.len:t.pos+n,r=ea();for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{if(a!==10)break;r.endpointId=t.string();continue}case 2:{if(a!==18)break;r.metadataJson=t.string();continue}}if((a&7)===4||a===0)break;t.skip(a&7)}return r},fromJSON(e){return{endpointId:c(e.endpointId)?globalThis.String(e.endpointId):"",metadataJson:c(e.metadataJson)?globalThis.String(e.metadataJson):""}},toJSON(e){let n={};return e.endpointId!==""&&(n.endpointId=e.endpointId),e.metadataJson!==""&&(n.metadataJson=e.metadataJson),n},create(e){return Be.fromPartial(e??{})},fromPartial(e){let n=ea();return n.endpointId=e.endpointId??"",n.metadataJson=e.metadataJson??"",n}};function na(){return{endpointId:"",endpointIdToEndpoint:{},iceServers:[]}}var Ve={encode(e,n=new I){e.endpointId!==""&&n.uint32(10).string(e.endpointId),Object.entries(e.endpointIdToEndpoint).forEach(([t,i])=>{_n.encode({key:t,value:i},n.uint32(18).fork()).join()});for(let t of e.iceServers)Je.encode(t,n.uint32(26).fork()).join();return n},decode(e,n){let t=e instanceof u?e:new u(e),i=n===void 0?t.len:t.pos+n,r=na();for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{if(a!==10)break;r.endpointId=t.string();continue}case 2:{if(a!==18)break;let d=_n.decode(t,t.uint32());d.value!==void 0&&(r.endpointIdToEndpoint[d.key]=d.value);continue}case 3:{if(a!==26)break;r.iceServers.push(Je.decode(t,t.uint32()));continue}}if((a&7)===4||a===0)break;t.skip(a&7)}return r},fromJSON(e){return{endpointId:c(e.endpointId)?globalThis.String(e.endpointId):"",endpointIdToEndpoint:rn(e.endpointIdToEndpoint)?Object.entries(e.endpointIdToEndpoint).reduce((n,[t,i])=>(n[t]=V.fromJSON(i),n),{}):{},iceServers:globalThis.Array.isArray(e?.iceServers)?e.iceServers.map(n=>Je.fromJSON(n)):[]}},toJSON(e){let n={};if(e.endpointId!==""&&(n.endpointId=e.endpointId),e.endpointIdToEndpoint){let t=Object.entries(e.endpointIdToEndpoint);t.length>0&&(n.endpointIdToEndpoint={},t.forEach(([i,r])=>{n.endpointIdToEndpoint[i]=V.toJSON(r)}))}return e.iceServers?.length&&(n.iceServers=e.iceServers.map(t=>Je.toJSON(t))),n},create(e){return Ve.fromPartial(e??{})},fromPartial(e){let n=na();return n.endpointId=e.endpointId??"",n.endpointIdToEndpoint=Object.entries(e.endpointIdToEndpoint??{}).reduce((t,[i,r])=>(r!==void 0&&(t[i]=V.fromPartial(r)),t),{}),n.iceServers=e.iceServers?.map(t=>Je.fromPartial(t))||[],n}};function ta(){return{key:"",value:void 0}}var _n={encode(e,n=new I){return e.key!==""&&n.uint32(10).string(e.key),e.value!==void 0&&V.encode(e.value,n.uint32(18).fork()).join(),n},decode(e,n){let t=e instanceof u?e:new u(e),i=n===void 0?t.len:t.pos+n,r=ta();for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{if(a!==10)break;r.key=t.string();continue}case 2:{if(a!==18)break;r.value=V.decode(t,t.uint32());continue}}if((a&7)===4||a===0)break;t.skip(a&7)}return r},fromJSON(e){return{key:c(e.key)?globalThis.String(e.key):"",value:c(e.value)?V.fromJSON(e.value):void 0}},toJSON(e){let n={};return e.key!==""&&(n.key=e.key),e.value!==void 0&&(n.value=V.toJSON(e.value)),n},create(e){return _n.fromPartial(e??{})},fromPartial(e){let n=ta();return n.key=e.key??"",n.value=e.value!==void 0&&e.value!==null?V.fromPartial(e.value):void 0,n}};function aa(){return{endpointId:""}}var De={encode(e,n=new I){return e.endpointId!==""&&n.uint32(10).string(e.endpointId),n},decode(e,n){let t=e instanceof u?e:new u(e),i=n===void 0?t.len:t.pos+n,r=aa();for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{if(a!==10)break;r.endpointId=t.string();continue}}if((a&7)===4||a===0)break;t.skip(a&7)}return r},fromJSON(e){return{endpointId:c(e.endpointId)?globalThis.String(e.endpointId):""}},toJSON(e){let n={};return e.endpointId!==""&&(n.endpointId=e.endpointId),n},create(e){return De.fromPartial(e??{})},fromPartial(e){let n=aa();return n.endpointId=e.endpointId??"",n}};function ra(){return{message:""}}var Ue={encode(e,n=new I){return e.message!==""&&n.uint32(10).string(e.message),n},decode(e,n){let t=e instanceof u?e:new u(e),i=n===void 0?t.len:t.pos+n,r=ra();for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{if(a!==10)break;r.message=t.string();continue}}if((a&7)===4||a===0)break;t.skip(a&7)}return r},fromJSON(e){return{message:c(e.message)?globalThis.String(e.message):""}},toJSON(e){let n={};return e.message!==""&&(n.message=e.message),n},create(e){return Ue.fromPartial(e??{})},fromPartial(e){let n=ra();return n.message=e.message??"",n}};function ia(){return{tracksTypes:void 0}}var Le={encode(e,n=new I){return e.tracksTypes!==void 0&&Fe.encode(e.tracksTypes,n.uint32(10).fork()).join(),n},decode(e,n){let t=e instanceof u?e:new u(e),i=n===void 0?t.len:t.pos+n,r=ia();for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{if(a!==10)break;r.tracksTypes=Fe.decode(t,t.uint32());continue}}if((a&7)===4||a===0)break;t.skip(a&7)}return r},fromJSON(e){return{tracksTypes:c(e.tracksTypes)?Fe.fromJSON(e.tracksTypes):void 0}},toJSON(e){let n={};return e.tracksTypes!==void 0&&(n.tracksTypes=Fe.toJSON(e.tracksTypes)),n},create(e){return Le.fromPartial(e??{})},fromPartial(e){let n=ia();return n.tracksTypes=e.tracksTypes!==void 0&&e.tracksTypes!==null?Fe.fromPartial(e.tracksTypes):void 0,n}};function da(){return{audio:0,video:0}}var Fe={encode(e,n=new I){return e.audio!==0&&n.uint32(8).int32(e.audio),e.video!==0&&n.uint32(16).int32(e.video),n},decode(e,n){let t=e instanceof u?e:new u(e),i=n===void 0?t.len:t.pos+n,r=da();for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{if(a!==8)break;r.audio=t.int32();continue}case 2:{if(a!==16)break;r.video=t.int32();continue}}if((a&7)===4||a===0)break;t.skip(a&7)}return r},fromJSON(e){return{audio:c(e.audio)?globalThis.Number(e.audio):0,video:c(e.video)?globalThis.Number(e.video):0}},toJSON(e){let n={};return e.audio!==0&&(n.audio=Math.round(e.audio)),e.video!==0&&(n.video=Math.round(e.video)),n},create(e){return Fe.fromPartial(e??{})},fromPartial(e){let n=da();return n.audio=e.audio??0,n.video=e.video??0,n}};function oa(){return{sdp:"",midToTrackId:{}}}var We={encode(e,n=new I){return e.sdp!==""&&n.uint32(10).string(e.sdp),Object.entries(e.midToTrackId).forEach(([t,i])=>{On.encode({key:t,value:i},n.uint32(18).fork()).join()}),n},decode(e,n){let t=e instanceof u?e:new u(e),i=n===void 0?t.len:t.pos+n,r=oa();for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{if(a!==10)break;r.sdp=t.string();continue}case 2:{if(a!==18)break;let d=On.decode(t,t.uint32());d.value!==void 0&&(r.midToTrackId[d.key]=d.value);continue}}if((a&7)===4||a===0)break;t.skip(a&7)}return r},fromJSON(e){return{sdp:c(e.sdp)?globalThis.String(e.sdp):"",midToTrackId:rn(e.midToTrackId)?Object.entries(e.midToTrackId).reduce((n,[t,i])=>(n[t]=String(i),n),{}):{}}},toJSON(e){let n={};if(e.sdp!==""&&(n.sdp=e.sdp),e.midToTrackId){let t=Object.entries(e.midToTrackId);t.length>0&&(n.midToTrackId={},t.forEach(([i,r])=>{n.midToTrackId[i]=r}))}return n},create(e){return We.fromPartial(e??{})},fromPartial(e){let n=oa();return n.sdp=e.sdp??"",n.midToTrackId=Object.entries(e.midToTrackId??{}).reduce((t,[i,r])=>(r!==void 0&&(t[i]=globalThis.String(r)),t),{}),n}};function ca(){return{key:"",value:""}}var On={encode(e,n=new I){return e.key!==""&&n.uint32(10).string(e.key),e.value!==""&&n.uint32(18).string(e.value),n},decode(e,n){let t=e instanceof u?e:new u(e),i=n===void 0?t.len:t.pos+n,r=ca();for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{if(a!==10)break;r.key=t.string();continue}case 2:{if(a!==18)break;r.value=t.string();continue}}if((a&7)===4||a===0)break;t.skip(a&7)}return r},fromJSON(e){return{key:c(e.key)?globalThis.String(e.key):"",value:c(e.value)?globalThis.String(e.value):""}},toJSON(e){let n={};return e.key!==""&&(n.key=e.key),e.value!==""&&(n.value=e.value),n},create(e){return On.fromPartial(e??{})},fromPartial(e){let n=ca();return n.key=e.key??"",n.value=e.value??"",n}};function sa(){return{trackId:"",status:0}}var He={encode(e,n=new I){return e.trackId!==""&&n.uint32(10).string(e.trackId),e.status!==0&&n.uint32(16).int32(e.status),n},decode(e,n){let t=e instanceof u?e:new u(e),i=n===void 0?t.len:t.pos+n,r=sa();for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{if(a!==10)break;r.trackId=t.string();continue}case 2:{if(a!==16)break;r.status=t.int32();continue}}if((a&7)===4||a===0)break;t.skip(a&7)}return r},fromJSON(e){return{trackId:c(e.trackId)?globalThis.String(e.trackId):"",status:c(e.status)?Va(e.status):0}},toJSON(e){let n={};return e.trackId!==""&&(n.trackId=e.trackId),e.status!==0&&(n.status=Da(e.status)),n},create(e){return He.fromPartial(e??{})},fromPartial(e){let n=sa();return n.trackId=e.trackId??"",n.status=e.status??0,n}};function ua(){return{endpointId:"",trackId:"",variant:0}}var qe={encode(e,n=new I){return e.endpointId!==""&&n.uint32(10).string(e.endpointId),e.trackId!==""&&n.uint32(18).string(e.trackId),e.variant!==0&&n.uint32(24).int32(e.variant),n},decode(e,n){let t=e instanceof u?e:new u(e),i=n===void 0?t.len:t.pos+n,r=ua();for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{if(a!==10)break;r.endpointId=t.string();continue}case 2:{if(a!==18)break;r.trackId=t.string();continue}case 3:{if(a!==24)break;r.variant=t.int32();continue}}if((a&7)===4||a===0)break;t.skip(a&7)}return r},fromJSON(e){return{endpointId:c(e.endpointId)?globalThis.String(e.endpointId):"",trackId:c(e.trackId)?globalThis.String(e.trackId):"",variant:c(e.variant)?D(e.variant):0}},toJSON(e){let n={};return e.endpointId!==""&&(n.endpointId=e.endpointId),e.trackId!==""&&(n.trackId=e.trackId),e.variant!==0&&(n.variant=U(e.variant)),n},create(e){return qe.fromPartial(e??{})},fromPartial(e){let n=ua();return n.endpointId=e.endpointId??"",n.trackId=e.trackId??"",n.variant=e.variant??0,n}};function fa(){return{endpointId:"",trackId:"",variant:0}}var Ke={encode(e,n=new I){return e.endpointId!==""&&n.uint32(10).string(e.endpointId),e.trackId!==""&&n.uint32(18).string(e.trackId),e.variant!==0&&n.uint32(24).int32(e.variant),n},decode(e,n){let t=e instanceof u?e:new u(e),i=n===void 0?t.len:t.pos+n,r=fa();for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{if(a!==10)break;r.endpointId=t.string();continue}case 2:{if(a!==18)break;r.trackId=t.string();continue}case 3:{if(a!==24)break;r.variant=t.int32();continue}}if((a&7)===4||a===0)break;t.skip(a&7)}return r},fromJSON(e){return{endpointId:c(e.endpointId)?globalThis.String(e.endpointId):"",trackId:c(e.trackId)?globalThis.String(e.trackId):"",variant:c(e.variant)?D(e.variant):0}},toJSON(e){let n={};return e.endpointId!==""&&(n.endpointId=e.endpointId),e.trackId!==""&&(n.trackId=e.trackId),e.variant!==0&&(n.variant=U(e.variant)),n},create(e){return Ke.fromPartial(e??{})},fromPartial(e){let n=fa();return n.endpointId=e.endpointId??"",n.trackId=e.trackId??"",n.variant=e.variant??0,n}};function la(){return{endpointId:"",trackId:"",variant:0}}var $e={encode(e,n=new I){return e.endpointId!==""&&n.uint32(10).string(e.endpointId),e.trackId!==""&&n.uint32(18).string(e.trackId),e.variant!==0&&n.uint32(24).int32(e.variant),n},decode(e,n){let t=e instanceof u?e:new u(e),i=n===void 0?t.len:t.pos+n,r=la();for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{if(a!==10)break;r.endpointId=t.string();continue}case 2:{if(a!==18)break;r.trackId=t.string();continue}case 3:{if(a!==24)break;r.variant=t.int32();continue}}if((a&7)===4||a===0)break;t.skip(a&7)}return r},fromJSON(e){return{endpointId:c(e.endpointId)?globalThis.String(e.endpointId):"",trackId:c(e.trackId)?globalThis.String(e.trackId):"",variant:c(e.variant)?D(e.variant):0}},toJSON(e){let n={};return e.endpointId!==""&&(n.endpointId=e.endpointId),e.trackId!==""&&(n.trackId=e.trackId),e.variant!==0&&(n.variant=U(e.variant)),n},create(e){return $e.fromPartial(e??{})},fromPartial(e){let n=la();return n.endpointId=e.endpointId??"",n.trackId=e.trackId??"",n.variant=e.variant??0,n}};function rn(e){return typeof e=="object"&&e!==null}function c(e){return e!=null}function va(e){return Ge.encode(e).finish()}function Ua(e){return pa.decode(e)}var Ta=e=>e==="audio"||e==="video",Ea=class extends La{constructor(e,n,t,i={enabled:!1,enabledVariants:[],disabledVariants:[]}){super(),this.endpoint=e,this.trackId=n,this.track=null,this.trackKind=null,this.stream=null,this.metadata=t,this.simulcastConfig=i,this.maxBandwidth=0,this.vadStatus="silence",this.negotiationStatus="awaiting",this.pendingMetadataUpdate=!1}},ka={audio:5e4,video:25e5},Fa=0,Wa={3:25e5,2:5e5,1:15e4,0:0,[-1]:0},Ia=(e,n)=>{let t=n*1024;if(t===0)return e.map(d=>({...d,maxBitrate:void 0}));if(e.length===0)return console.error("Attempted to limit bandwidth of the track that doesn't have any encodings"),e.map(d=>({...d}));if(!e[0])throw new Error("RTCRtpEncodingParameters is in invalid state");let i=e[0].scaleResolutionDownBy||1,r=e.reduce((d,f)=>d+(i/(f.scaleResolutionDownBy||1))**2,0),a=t/r;return e.map(d=>({...d,maxBitrate:a*(i/(d.scaleResolutionDownBy||1))**2}))},Ha=(e,n)=>{let t=[{}];return e.encodings.length===0?t:Ia(e.encodings,n)},Xe={l:1,m:2,h:3};function hn(e,n,t){let i=e==="mute"?"localTrackMuted":"localTrackUnmuted";if(e=="unmute"){let r=Z.create({trackId:t});n.emit("sendMediaEvent",va({unmuteTrack:r}))}n.emit(i,{trackId:t})}function qa(e,n){return e&&!n?"mute":!e&&n?"unmute":"replace"}var Ka=e=>{if(!e.track)throw new Error("Cannot create transceiver config for ");return e.track.kind==="audio"?$a(e.stream):Ga(e,e.maxBandwidth)},$a=e=>({direction:"sendonly",streams:e?[e]:[]}),Ga=(e,n)=>{if(!e.simulcastConfig)throw new Error(`Simulcast config for track ${e.trackId} not found.`);if(e.simulcastConfig.enabled){let t;if(n===0)t=new Map([[1,0],[2,0],[3,0]]);else{if(typeof n=="number")throw new Error("Invalid bandwidth limit for simulcast track.");t=n}return Za(e,t)}if(typeof n=="number")return Ya(e,n);throw new Error("LocalTrack is in invalid state!")},Ya=(e,n)=>({direction:"sendonly",sendEncodings:Ia([{active:!0}],n),streams:e.stream?[e.stream]:[]}),Za=(e,n)=>{if(!e.simulcastConfig)throw new Error(`Simulcast config for track ${e.trackId} not found.`);let t=e.simulcastConfig.enabledVariants,i=[{rid:"l",active:t.includes(1),scaleResolutionDownBy:4},{rid:"m",active:t.includes(2),scaleResolutionDownBy:2},{rid:"h",active:t.includes(3)}];return{direction:"sendonly",sendEncodings:za(i,n)}},za=(e,n)=>e.filter(t=>t.rid).map(t=>{let i=!!t.rid&&Xe[t.rid]||0,r=n.get(i)||0;return{...t,maxBitrate:r>0?r*1024:void 0}}),Qa=class{id;mediaStreamTrackId=null;mLineId=null;trackContext;sender=null;encodings={[-1]:!1,0:!1,1:!1,2:!1,3:!1};connection;constructor(e,n,t){this.connection=e,this.id=n,this.trackContext=t,t.track?.id&&(this.mediaStreamTrackId=t.track?.id)}updateSender=()=>{this.mediaStreamTrackId&&this.connection&&(this.sender=this.connection.findSender(this.mediaStreamTrackId))};updateConnection=e=>{this.connection=e};disableTrackEncoding=async e=>{if(!this.sender)throw new Error(`RTCRtpSender for track ${this.id} not found`);let n=this.sender.getParameters(),i=n.encodings.find(r=>r.rid&&Xe[r.rid]===e);if(!i)throw new Error(`RTCRtpEncodingParameters for track ${this.id} not found`);i.active=!1,this.encodings[e]=!1,await this.sender.setParameters(n)};addTrackToConnection=()=>{if(!this.trackContext.track)throw Error(`MediaStreamTrack for track ${this.id} does not exist`);if(!this.connection)throw new Error("There is no active RTCPeerConnection");let e=Ka(this.trackContext);this.updateEncodings(),this.connection.addTransceiver(this.trackContext.track,e)};updateEncodings=()=>{let e=this.trackContext.simulcastConfig?.enabledVariants;this.trackContext?.track?.kind==="video"&&e&&(this.encodings[1]=e.some(n=>n===1),this.encodings[2]=e.some(n=>n===2),this.encodings[3]=e.some(n=>n===3))};removeFromConnection=()=>{if(!this.sender)throw new Error(`RTCRtpSender for track ${this.id} not found`);if(!this.connection)throw new Error("There is no active RTCPeerConnection");this.connection.removeTrack(this.sender)};replaceTrack=async(e,n)=>{let t=this.id,i=this.trackContext.stream,r=this.trackContext.track;if(!this.sender)throw Error("There is no RTCRtpSender for this track id!");i?.getTracks().forEach(d=>{i?.removeTrack(d)}),e&&i?.addTrack(e);let a=qa(this.trackContext.track,e);this.trackContext.track=e,this.mediaStreamTrackId=e?.id??null,(a==="mute"||a==="unmute")&&hn(a,n,t);try{await this.sender.replaceTrack(e)}catch{a==="mute"?hn("unmute",n,t):a==="unmute"&&hn("mute",n,t),this.trackContext.track=r,this.mediaStreamTrackId=r?.id??null}};setTrackBandwidth=e=>{if(!this.sender)throw new Error(`RTCRtpSender for track ${this.id} not found`);let n=this.sender.getParameters();return n.encodings=Ha(n,e),this.sender.setParameters(n)};setEncodingBandwidth(e,n){if(!this.sender)throw new Error(`RTCRtpSender for track ${this.id} not found`);let t=this.sender.getParameters(),i=t.encodings.find(r=>r.rid&&Xe[r.rid]===e);if(i)n===0?delete i.maxBitrate:i.maxBitrate=n*1024;else return Promise.reject(`Encoding with Variant '${e}' doesn't exist`);return this.sender.setParameters(t)}updateTrackMetadata=e=>{this.trackContext.metadata=e};enableTrackEncoding=e=>{if(!this.sender)throw new Error(`RTCRtpSender for track ${this.id} not found`);let n=this.sender.getParameters(),t=n.encodings.find(i=>i.rid&&Xe[i.rid]===e);if(!t)throw new Error(`RTCRtEncodingParameters ${e} for track ${this.id} not found`);return t.active=!0,this.encodings[e]=!0,this.sender.setParameters(n)};setMLineId=e=>{this.mLineId=e};isNotSimulcastTrack=e=>e.length===1&&!e[0].rid;getTrackBitrates=()=>{let e=this.trackContext,n=this.trackContext.track?.kind;if(!e.track){if(!e.trackKind)throw new Error("trackContext.trackKind is empty");return ka[e.trackKind]}if(!this.sender)return;let t=this.sender.getParameters().encodings;if(this.isNotSimulcastTrack(t))return t[0].maxBitrate||(n?ka[n]:Fa);if(n==="audio")throw"Audio track cannot have multiple encodings";return t.filter(i=>i.rid).reduce((i,r)=>{let a=Xe[r.rid]??0;return i[a]=r.maxBitrate||Wa[a],i},{})};createTrackVariantBitratesEvent=()=>{}},Xa=class{localTracks={};localEndpoint={id:"",type:"webrtc",metadata:void 0,tracks:new Map};emit;sendMediaEvent;connection=null;constructor(e,n){this.emit=e,this.sendMediaEvent=n}updateSenders=()=>{Object.values(this.localTracks).forEach(e=>{e.updateSender()})};updateMLineIds=e=>{Object.entries(e).forEach(([n,t])=>{this.localTracks[t]?.setMLineId(n)})};updateConnection=e=>{this.connection=e,Object.values(this.localTracks).forEach(n=>{n.updateConnection(e)})};createSdpOfferEvent=e=>{let n=this.getTrackIdToMetadataJson(),t=this.getTrackIdToTrackBitrates(),i=this.getMidToTrackId();return K.create({sdp:e.sdp,midToTrackId:i,trackIdToBitrates:t,trackIdToMetadataJson:n})};addTrack=(e,n,t,i,r,a,d)=>{let f=new Ea(this.localEndpoint,n,r,a);if(f.track=t,f.stream=i,f.maxBandwidth=d,!Ta(t.kind))throw new Error("Track has no kind");f.trackKind=t.kind,this.localEndpoint.tracks.set(n,f);let T=new Qa(e,n,f);return this.localTracks[n]=T,T};getTrackByMidOrNull=e=>Object.values(this.localTracks).find(n=>n.mLineId===e)??null;removeTrack=e=>{let n=this.localTracks[e];if(!n)throw new Error(`Cannot find ${e}`);n.removeFromConnection();let t=B.create({});this.sendMediaEvent({renegotiateTracks:t}),this.localEndpoint.tracks.delete(e),delete this.localTracks[e]};replaceTrack=async(e,n,t)=>{let i=this.localTracks[n];if(!i)throw new Error(`Cannot find ${n}`);await i.replaceTrack(t,e)};setEndpointMetadata=e=>{this.localEndpoint.metadata=e};getEndpoint=()=>this.localEndpoint;setTrackBandwidth=async(e,n)=>{let t=this.localTracks[e];if(!t)throw new Error(`Cannot find ${e}`);await t.setTrackBandwidth(n);let i=y.create({trackId:e,variantBitrates:[{variant:0,bitrate:n}]});this.sendMediaEvent(Ge.create({trackBitrates:i})),this.emit("localTrackBandwidthSet",{trackId:e,bandwidth:n})};getTrackIdToTrack=()=>{let e=Object.values(this.localTracks).map(n=>[n.id,n.trackContext]);return new Map(e)};setLocalEndpointId=e=>{this.localEndpoint.id=e};setEncodingBandwidth=async(e,n,t)=>{let i=this.localTracks[e];if(!i)throw new Error(`Cannot find ${e}`);await i.setEncodingBandwidth(n,t);let r=i.getTrackBitrates(),a=[];typeof r=="number"?a=[{variant:0,bitrate:r}]:r&&(a=Object.entries(r).map(([f,T])=>({variant:Number(f),bitrate:T})));let d=y.create({trackId:e,variantBitrates:a});this.sendMediaEvent(Ge.create({trackBitrates:d})),this.emit("localTrackEncodingBandwidthSet",{trackId:e,rid:n,bandwidth:t})};updateEndpointMetadata=e=>{this.localEndpoint.metadata=e;let n=q.create({metadataJson:JSON.stringify(this.localEndpoint.metadata)});this.sendMediaEvent({updateEndpointMetadata:n}),this.emit("localEndpointMetadataChanged",{metadata:this.localEndpoint.metadata})};updateLocalTrackMetadata=(e,n)=>{let t=this.localTracks[e];if(!t)throw new Error(`Cannot find ${e}`);t.updateTrackMetadata(n);let i=t.trackContext,r=F.create({trackId:e,metadataJson:n?JSON.stringify(n):void 0});switch(i.negotiationStatus){case"done":this.sendMediaEvent({updateTrackMetadata:r}),this.emit("localTrackMetadataChanged",{trackId:e,metadata:i.metadata});break;case"offered":i.pendingMetadataUpdate=!0;break;case"awaiting":break}};disableLocalTrackEncoding=async(e,n)=>{let t=this.localTracks[e];if(!t)throw new Error(`Track ${e} not found`);await t.disableTrackEncoding(n);let i=$.create({trackId:e,variant:n});this.sendMediaEvent(Ge.create({disableTrackVariant:i})),this.emit("localTrackEncodingEnabled",{trackId:e,encoding:n})};enableLocalTrackEncoding=async(e,n)=>{let t=this.localTracks[e];if(!t)throw new Error(`Cannot find ${e}`);await t.enableTrackEncoding(n);let i=G.create({trackId:e,variant:n});this.sendMediaEvent(Ge.create({enableTrackVariant:i})),this.emit("localTrackEncodingEnabled",{trackId:e,encoding:n})};getTrackIdToMetadataJson=()=>Object.values(this.localTracks).reduce((e,{id:n,trackContext:t})=>({...e,[n]:JSON.stringify(t.metadata)}),{});getTrackIdToTrackBitrates=()=>Object.values(this.localTracks).reduce((e,{id:n})=>({...e,[n]:{bitrate:15e5}}),{});getMidToTrackId=()=>{if(!this.connection)return{};let e=this.getTransceiverMapping(),n=Object.values(this.localTracks).filter(t=>!!t.mLineId).reduce((t,{id:i,mLineId:r})=>({...t,[r]:i}),{});return{...e,...n}};getTransceiverMapping=()=>this.connection?this.connection.getConnection().getTransceivers().filter(e=>!!(e.sender.track?.id&&e.mid)).reduce((e,{sender:n,mid:t})=>{let i=Object.values(this.localTracks).find(r=>r.mediaStreamTrackId===n.track.id);if(!i)throw new Error("Local track not found");return{...e,[t]:i.id}},{}):{};setLocalTrackStatusToOffered=()=>{Object.values(this.localTracks).forEach(e=>{e.trackContext.negotiationStatus="offered"})};addAllTracksToConnection=()=>{Object.values(this.localTracks).forEach(e=>{e.addTrackToConnection()})}},ja=class{connection;local;ongoingTrackReplacement=!1;ongoingRenegotiation=!1;sendMediaEvent;constructor(e,n){this.local=e,this.sendMediaEvent=n}isNegotiationInProgress=()=>this.ongoingRenegotiation||this.ongoingTrackReplacement;cleanUp=()=>{this.ongoingTrackReplacement=!1,this.ongoingRenegotiation=!1};parseAddTrack=(e,n,t)=>{if(this.getEndpointId()==="")throw new Error("Cannot add tracks before being accepted by the server");if(!n.enabled&&typeof t!="number")throw new Error("Invalid type of `maxBandwidth` argument for a non-simulcast track, expected: number");if(this.connection?.isTrackInUse(e))throw new Error("This track was already added to peerConnection, it can't be added again!")};addTrackHandler=(e,n,t,i,r,a)=>{this.ongoingRenegotiation=!0;let d=this.local.addTrack(this.connection,e,n,t,i,r,a);this.connection&&d.addTrackToConnection(),this.sendMediaEvent({renegotiateTracks:B.create()})};removeTrackHandler=e=>{if(!this.connection)throw new Error("There is no active RTCPeerConnection");this.ongoingRenegotiation=!0,this.local.removeTrack(e)};replaceTrackHandler=async(e,n,t)=>{this.ongoingTrackReplacement=!0;try{await this.local.replaceTrack(e,n,t)}finally{this.ongoingTrackReplacement=!1}};getEndpointId=()=>this.local.getEndpoint().id;updateConnection=e=>{this.connection=e};updateSenders=()=>{this.local.updateSenders()}},er=class{id;mLineId=null;trackContext;encodings={[-1]:!1,0:!1,1:!1,2:!1,3:!1};targetEncoding=null;constructor(e,n){this.id=e,this.trackContext=n}setMLineId=e=>{this.mLineId=e};setReady=(e,n)=>{if(!Ta(n.kind))throw new Error("Track has no kind");this.trackContext.stream=e,this.trackContext.track=n,this.trackContext.trackKind=n.kind};disableTrackEncoding=e=>{this.encodings[e]=!1};enableTrackEncoding=e=>{this.encodings[e]=!0};setTargetTrackEncoding=e=>{this.targetEncoding=e;let n=this.trackContext;if(!n.simulcastConfig?.enabled)throw new Error("The track does not support changing its target variant");if(!n.simulcastConfig.enabledVariants.includes(e))throw new Error(`The track does not support variant ${e}`)}},nr=class{remoteTracks={};remoteEndpoints={};emit;sendMediaEvent;constructor(e,n){this.emit=e,this.sendMediaEvent=n}getTrackByMid=e=>{let n=Object.values(this.remoteTracks).find(t=>t.mLineId===e);if(!n)throw new Error(`Remote track with ${e} not found`);return n};addTracks=(e,n)=>{let t=this.remoteEndpoints[e];if(!t)throw new Error(`Endpoint ${e} not found`);Object.entries(n).map(([i,{metadataJson:r,simulcastConfig:a}])=>{let d=r?JSON.parse(r):void 0,f=new Ea(t,i,d,a);return new er(i,f)}).forEach(i=>{this.remoteTracks[i.id]=i,t.tracks.set(i.id,i.trackContext),this.emit("trackAdded",i.trackContext)})};removeTracks=e=>{e.forEach(n=>{this.removeRemoteTrack(n)})};removeRemoteTrack=e=>{let n=this.remoteTracks[e];if(!n)throw new Error(`Track ${e} not found`);let t=this.remoteEndpoints[n.trackContext.endpoint.id];if(!t)throw new Error(`Endpoint ${n.trackContext.endpoint.id} not found`);t.tracks.delete(e),delete this.remoteTracks[e],this.emit("trackRemoved",n.trackContext)};addRemoteEndpoint=(e,n,t,i=!0)=>{let r={id:e,type:"exwebrtc",metadata:n?JSON.parse(n):void 0,tracks:new Map};this.addEndpoint(r),this.addTracks(r.id,t??{}),i&&this.emit("endpointAdded",r)};addEndpoint=e=>{this.remoteEndpoints[e.id]=e};updateRemoteEndpoint=(e,n)=>{let t=this.remoteEndpoints[e];if(!t)throw new Error(`Endpoint ${e} not found`);t.metadata=n?JSON.parse(n):void 0,this.emit("endpointUpdated",t)};removeRemoteEndpoint=e=>{let n=this.remoteEndpoints[e];if(!n)throw new Error(`Endpoint ${e} not found`);let t=[...n.tracks.values()].map(({trackId:i})=>i);this.removeTracks(t),delete this.remoteEndpoints[e],this.emit("endpointRemoved",n)};updateRemoteTrack=(e,n,t)=>{if(!this.remoteEndpoints[e])throw new Error(`Endpoint ${e} not found`);let i=this.remoteTracks[n];if(!i)throw new Error(`Track ${n} not found`);i.trackContext.metadata=t?JSON.parse(t):void 0,this.emit("trackUpdated",i.trackContext)};disableRemoteTrackEncoding=(e,n)=>{let t=this.remoteTracks[e];if(!t)throw new Error(`Track ${e} not found`);t.disableTrackEncoding(n),this.emit("trackEncodingDisabled",t.trackContext,n)};enableRemoteTrackEncoding=(e,n)=>{let t=this.remoteTracks[e];if(!t)throw new Error(`Track ${e} not found`);t.enableTrackEncoding(n),this.emit("trackEncodingEnabled",t.trackContext,n)};setRemoteTrackEncoding=(e,n,t)=>{let i=this.remoteTracks[e];if(!i)throw new Error(`Track ${e} not found`);i.trackContext.encoding=n,i.trackContext.encodingReason=t,i.trackContext.emit("encodingChanged",i.trackContext)};setRemoteTrackVadStatus=(e,n)=>{let t=this.remoteTracks[e];if(!t)throw new Error(`Track ${e} not found`);let i=null;n===1?i="silence":n===2&&(i="speech"),i?(t.trackContext.vadStatus=i,t.trackContext.emit("voiceActivityChanged",t.trackContext)):console.warn("Received unknown vad status: ",n)};getRemoteTrackContexts=()=>Object.values(this.remoteTracks).reduce((e,n)=>({...e,[n.trackContext.trackId]:n.trackContext}),{});getRemoteEndpoints=()=>Object.values(this.remoteEndpoints).reduce((e,n)=>({...e,[n.id]:n}),{});setTargetRemoteTrackEncoding=(e,n)=>{let t=this.remoteTracks[e];if(!t)throw new Error(`Track ${e} not found`);try{t.setTargetTrackEncoding(n);let i=Y.create({variant:n,trackId:e});this.sendMediaEvent({setTargetTrackVariant:i}),this.emit("targetTrackEncodingRequested",{trackId:e,variant:n})}catch(i){console.warn(i)}};updateMLineIds=e=>{Object.entries(e).forEach(([n,t])=>{this.remoteTracks[t]?.setMLineId(n)})}},ha=class extends Ca{localTrackManager;remote;local;commandsQueue;proposedIceServers=[];logger;bandwidthEstimation=BigInt(0);connectionManager;clearConnectionCallbacks=null;constructor(e={}){super(),this.logger=Pn(!!e.debug);let n=i=>this.sendMediaEvent(i),t=(i,...r)=>{this.emit(i,...r)};this.remote=new nr(t,n),this.local=new Xa(t,n),this.localTrackManager=new ja(this.local,n),this.commandsQueue=new Aa(this.localTrackManager)}connect=e=>{this.local.setEndpointMetadata(e);let n=W.create({metadataJson:JSON.stringify(e)});this.sendMediaEvent({connect:n})};receiveMediaEvent=async e=>{let n=Ua(e);if(n.connected){let t=n.connected;this.proposedIceServers=t.iceServers,this.local.setLocalEndpointId(t.endpointId);let i=t.endpointIdToEndpoint[t.endpointId]?.metadataJson;i&&this.local.setEndpointMetadata(JSON.parse(i));let r=t.endpointIdToEndpoint[t.endpointId];if(r?.metadataJson){let d=JSON.parse(r?.metadataJson);this.local.setEndpointMetadata(d)}Object.entries(t.endpointIdToEndpoint).filter(([d])=>d!==this.local.getEndpoint().id).forEach(([d,f])=>{this.remote.addRemoteEndpoint(d,f.metadataJson,f.trackIdToTrack)});let a=Object.values(this.remote.getRemoteEndpoints());this.emit("connected",this.local.getEndpoint().id,a);return}this.getEndpointId()&&await this.handleMediaEvent(n)};getEndpointId=()=>this.local.getEndpoint().id;onTrackReady=e=>{let n=e.streams[0];if(!n)throw new Error("Cannot find media stream");let t=e.transceiver.mid,i=this.remote.getTrackByMid(t);i.setReady(n,e.track),this.emit("trackReady",i.trackContext)};async getStatistics(e){return await this.connectionManager?.getConnection().getStats(e)??new Map}getRemoteTracks(){return this.remote.getRemoteTrackContexts()}getRemoteEndpoints(){return this.remote.getRemoteEndpoints()}getLocalEndpoint(){return this.local.getEndpoint()}getBandwidthEstimation(){return this.bandwidthEstimation}handleMediaEvent=async e=>{if(e.offerData)await this.onOfferData(e.offerData);else if(e.tracksAdded){this.localTrackManager.ongoingRenegotiation=!0;let{trackIdToTrack:n,endpointId:t}=e.tracksAdded;if(this.getEndpointId()===t)return;this.remote.addTracks(t,n)}else if(e.tracksRemoved){let{endpointId:n,trackIds:t}=e.tracksRemoved;if(this.getEndpointId()===n)return;this.remote.removeTracks(t)}else if(e.sdpAnswer)this.localTrackManager.ongoingRenegotiation=!1,await this.onSdpAnswer(e.sdpAnswer),this.commandsQueue.processNextCommand();else if(e.candidate)await this.onRemoteCandidate(e.candidate);else if(e.endpointAdded){let{endpointId:n,metadataJson:t}=e.endpointAdded;if(n===this.getEndpointId())return;this.remote.addRemoteEndpoint(n,t)}else if(e.endpointRemoved){let{endpointId:n}=e.endpointRemoved;if(n===this.local.getEndpoint().id){this.cleanUp(),this.emit("disconnected");return}if(this.getEndpointId()===n)return;this.remote.removeRemoteEndpoint(n)}else if(e.endpointUpdated){let{endpointId:n,metadataJson:t}=e.endpointUpdated;if(this.getEndpointId()===n)return;this.remote.updateRemoteEndpoint(n,t)}else if(e.trackUpdated){let{endpointId:n,trackId:t,metadataJson:i}=e.trackUpdated;if(this.getEndpointId()===n)return;this.remote.updateRemoteTrack(n,t,i)}else if(e.vadNotification){let{trackId:n,status:t}=e.vadNotification;this.remote.setRemoteTrackVadStatus(n,t)}else if(e.error)this.logger.warn("signaling error",{message:e.error.message}),this.emit("signalingError",{message:e.error.message}),this.disconnect();else if(e.trackVariantSwitched){let{trackId:n,variant:t}=e.trackVariantSwitched;this.remote.setRemoteTrackEncoding(n,t)}else if(e.trackVariantEnabled){let{trackId:n,variant:t}=e.trackVariantEnabled;this.remote.enableRemoteTrackEncoding(n,t)}else if(e.trackVariantDisabled){let{trackId:n,variant:t}=e.trackVariantDisabled;this.remote.disableRemoteTrackEncoding(n,t)}};onSdpAnswer=async e=>{if(this.remote.updateMLineIds(e.midToTrackId),this.local.updateMLineIds(e.midToTrackId),Object.keys(e.midToTrackId).map(n=>{if(!n)throw new Error("TrackId is not defined");return n}).map(n=>this.local.getTrackByMidOrNull(n)).filter(n=>n!==null).forEach(n=>{let t=n.trackContext;if(t.negotiationStatus="done",t.pendingMetadataUpdate){let i=F.create({trackId:n.id,metadataJson:JSON.stringify(t.metadata)});this.sendMediaEvent({updateTrackMetadata:i})}t.pendingMetadataUpdate=!1}),!this.connectionManager)throw new Error("There is no active RTCPeerConnection");this.connectionManager.setOnTrackReady(n=>{this.onTrackReady(n)});try{await this.connectionManager.setRemoteDescription({sdp:e.sdp,type:"answer"})}catch(n){this.logger.error(n)}};async addTrack(e,n,t={enabled:!1,enabledVariants:[],disabledVariants:[]},i=0){let r=new In,a=this.getTrackId(xa()),d=new MediaStream,f={enabled:!1,enabledVariants:[],disabledVariants:[]},T=typeof i=="number"&&i>0?i:0;try{d.addTrack(e),this.commandsQueue.pushCommand({handler:async()=>this.localTrackManager.addTrackHandler(a,e,d,n,f,T),parse:()=>this.localTrackManager.parseAddTrack(e,f,T),resolve:"after-renegotiation",resolutionNotifier:r})}catch(S){r.reject(S)}return await r.promise,this.emit("localTrackAdded",{trackId:a,track:e,stream:d,trackMetadata:n,simulcastConfig:f,maxBandwidth:T}),a}async replaceTrack(e,n){let t=new In;return this.commandsQueue.pushCommand({handler:()=>this.localTrackManager.replaceTrackHandler(this,e,n),resolutionNotifier:t,resolve:"on-handler-resolve"}),t.promise.then(()=>{this.emit("localTrackReplaced",{trackId:e,track:n})})}setTrackBandwidth(e,n){if(!this.connectionManager)throw new Error("There is no active RTCPeerConnection");return this.local.setTrackBandwidth(e,n)}async setEncodingBandwidth(e,n,t){if(!this.connectionManager)throw new Error("There is no active RTCPeerConnection");return await this.local.setEncodingBandwidth(e,n,t)}async removeTrack(e){let n=new In;this.commandsQueue.pushCommand({handler:async()=>this.localTrackManager.removeTrackHandler(e),resolutionNotifier:n,resolve:"after-renegotiation"}),await n.promise,this.emit("localTrackRemoved",{trackId:e})}setTargetTrackEncoding(e,n){this.remote.setTargetRemoteTrackEncoding(e,n)}enableTrackEncoding=async(e,n)=>{await this.local.enableLocalTrackEncoding(e,n)};disableTrackEncoding=async(e,n)=>{await this.local.disableLocalTrackEncoding(e,n)};updateEndpointMetadata=e=>{this.local.updateEndpointMetadata(e)};updateTrackMetadata=(e,n)=>{this.local.updateLocalTrackMetadata(e,n)};disconnect=()=>{let e=H.create();this.sendMediaEvent({disconnect:e}),this.emit("disconnectRequested",{}),this.cleanUp()};cleanUp=()=>{this.connectionManager&&(this.clearConnectionCallbacks?.(),this.connectionManager?.getConnection().close(),this.commandsQueue.cleanUp(),this.localTrackManager.cleanUp()),this.connectionManager=void 0};getTrackId(e){return`${this.getEndpointId()}:${e}`}sendMediaEvent=e=>{this.emit("sendMediaEvent",va(e))};async createAndSendOffer(){let e=this.connectionManager;if(e)try{this.localTrackManager.updateSenders();let n=await e.getConnection().createOffer();if(!this.connectionManager){this.logger.warn("RTCPeerConnection stopped or restarted");return}if(await e.getConnection().setLocalDescription(n),!this.connectionManager){this.logger.warn("RTCPeerConnection stopped or restarted");return}let t=this.local.createSdpOfferEvent(n);this.sendMediaEvent({sdpOffer:t}),this.local.setLocalTrackStatusToOffered()}catch(n){this.logger.error(n)}}onOfferData=async e=>{let n=this.connectionManager??this.createNewConnection();e.tracksTypes&&n.addTransceiversIfNeeded(e.tracksTypes),await this.createAndSendOffer()};setupConnectionListeners=e=>{let n=a=>this.onLocalCandidate(a),t=a=>this.onIceCandidateError(a),i=a=>this.onConnectionStateChange(a),r=a=>this.onIceConnectionStateChange(a);this.clearConnectionCallbacks=()=>{e.removeEventListener("icecandidate",n),e.removeEventListener("icecandidateerror",t),e.removeEventListener("connectionstatechange",i),e.removeEventListener("iceconnectionstatechange",r)},e.addEventListener("icecandidate",n),e.addEventListener("icecandidateerror",t),e.addEventListener("connectionstatechange",i),e.addEventListener("iceconnectionstatechange",r)};createNewConnection=()=>{let e=new Ba(this.proposedIceServers);return this.localTrackManager.updateConnection(e),this.local.updateConnection(e),this.setupConnectionListeners(e.getConnection()),this.commandsQueue.initConnection(e),this.local.addAllTracksToConnection(),this.connectionManager=e,e};onRemoteCandidate=async e=>{try{let n=new RTCIceCandidate(e);if(!this.connectionManager)throw new Error("Received new remote candidate but RTCConnection is undefined");await this.connectionManager.addIceCandidate(n)}catch(n){this.logger.error(n)}};onLocalCandidate=e=>{if(!e.candidate)return;let n=P.create({candidate:e.candidate.candidate,sdpMLineIndex:e.candidate.sdpMLineIndex??void 0,sdpMid:e.candidate.sdpMid??void 0,usernameFragment:e.candidate.usernameFragment??void 0});this.sendMediaEvent({candidate:n})};onIceCandidateError=e=>{this.logger.warn(e)};onConnectionStateChange=e=>{switch(this.localTrackManager.connection?.getConnection().connectionState){case"failed":this.emit("connectionError",{message:"RTCPeerConnection failed",event:e});break}};onIceConnectionStateChange=e=>{switch(this.localTrackManager.connection?.getConnection().iceConnectionState){case"disconnected":this.logger.warn("ICE connection: disconnected"),this.sendMediaEvent({renegotiateTracks:B.create()});break;case"failed":this.emit("connectionError",{message:"ICE connection failed",event:e});break}}};import{EventEmitter as ir}from"events";function Ma(e){return new Promise((n,t)=>{let i=()=>{a(),n()},r=()=>{a(),t()};e.on("joined",i),e.on("joinError",r),e.on("authError",r),e.on("socketError",r);let a=()=>{e.removeListener("joined",i),e.removeListener("joinError",r),e.removeListener("authError",r),e.removeListener("socketError",r)}})}var R=e=>e.type==="webrtc"||e.type==="exwebrtc",Ye=e=>e.type==="recording"||e.type==="hls"||e.type==="file"||e.type==="rtsp"||e.type==="sip",ma=["reached peers limit","room not found","node not found","Invalid SDK version"],je=e=>ma.some(n=>e.trim().toLowerCase().includes(n.trim().toLowerCase()));var dn=class{queuedMessages=[];checkIsReconnecting;sendMessage;constructor({checkIsReconnecting:n,sendMessage:t}){this.checkIsReconnecting=n,this.sendMessage=t}enqueueMessage(n){this.queuedMessages.push(n),this.attemptToSendAll()}attemptToSendAll(){if(!this.checkIsReconnecting())for(;this.queuedMessages.length>0;){let t=this.queuedMessages.shift();t&&this.sendMessage(t)}}};var tr={maxAttempts:0,initialDelay:0,delay:0,addTracksOnReconnect:!1},en={maxAttempts:3,initialDelay:500,delay:500,addTracksOnReconnect:!1},on=class{reconnectConfig;connect;client;initialPeerMetadata=void 0;reconnectAttempt=0;reconnectTimeoutId=null;status="idle";lastLocalEndpoint=null;removeEventListeners=()=>{};constructor(n,t,i){this.client=n,this.connect=t,this.reconnectConfig=ar(i);let r=()=>{this.reconnect()};this.client.on("socketError",r);let a=()=>{this.reconnect()};this.client.on("connectionError",a);let d=T=>{Ze(T.reason)||je(T.reason)||this.reconnect()};this.client.on("socketClose",d);let f=()=>{this.reset(this.initialPeerMetadata)};this.client.on("authSuccess",f),this.removeEventListeners=()=>{this.client.off("socketError",r),this.client.off("connectionError",a),this.client.off("socketClose",d),this.client.off("authSuccess",f)}}isReconnecting(){return this.status==="reconnecting"}reset(n){this.initialPeerMetadata=n,this.reconnectAttempt=0,this.reconnectTimeoutId&&clearTimeout(this.reconnectTimeoutId),this.reconnectTimeoutId=null}getLastPeerMetadata(){return this.lastLocalEndpoint?.metadata?.peer}reconnect(){if(this.reconnectTimeoutId)return;if(this.reconnectAttempt>=this.reconnectConfig.maxAttempts){this.status==="reconnecting"&&(this.status="error",this.client.emit("reconnectionRetriesLimitReached"));return}this.status!=="reconnecting"&&(this.status="reconnecting",this.client.emit("reconnectionStarted"),this.lastLocalEndpoint=this.client.getLocalPeer()||null);let n=this.reconnectConfig.initialDelay+this.reconnectAttempt*this.reconnectConfig.delay;this.reconnectAttempt+=1,this.reconnectTimeoutId=setTimeout(()=>{this.reconnectTimeoutId=null;let t=this.getLastPeerMetadata()??this.initialPeerMetadata;this.connect(t)},n)}async handleReconnect(){if(this.status==="reconnecting"){if(this.lastLocalEndpoint&&this.reconnectConfig.addTracksOnReconnect)for await(let n of this.lastLocalEndpoint.tracks){let[t,i]=n;if(!i.track||i.track.readyState!=="live")return;await this.client.addTrack(i.track,i.metadata,i.simulcastConfig,i.maxBandwidth)}this.lastLocalEndpoint=null,this.status="idle",this.client.emit("reconnected")}}cleanup(){this.removeEventListeners(),this.removeEventListeners=()=>{}}},ar=e=>e?e===!0?en:{maxAttempts:e?.maxAttempts??en.maxAttempts,initialDelay:e?.initialDelay??en.initialDelay,delay:e?.delay??en.delay,addTracksOnReconnect:e?.addTracksOnReconnect??en.addTracksOnReconnect}:tr;var ya="0.25.0-rc.3";var ga=ya;var dr=1e4,Sa="socket/peer/websocket",bn=class extends ir{websocket=null;webrtc=null;removeEventListeners=null;debug;logger;status="new";connectConfig=null;isAudioOnlyConnection=!1;reconnectManager;peerMessageQueue;sendStatisticsInterval=void 0;constructor(n){super(),this.debug=!!n?.debug,this.logger=Pn(this.debug),this.reconnectManager=new on(this,t=>this.initConnection(t),n?.reconnect??!0),this.peerMessageQueue=new dn({sendMessage:t=>this.websocket?.send(t),checkIsReconnecting:()=>this.reconnectManager.isReconnecting()}),this.on("reconnected",()=>this.peerMessageQueue.attemptToSendAll())}async connect(n){this.emit("connectionStarted");let t=Ma(this);return this.reconnectManager.reset(n.peerMetadata),this.connectConfig=n,this.initConnection(n.peerMetadata),t}async initConnection(n){this.status==="initialized"&&this.disconnect(),this.webrtc=new ha({debug:this.debug}),this.initWebsocket(n),this.setupCallbacks(),this.status="initialized"}getUrl(n){return n.endsWith("/")?`${n}${Sa}`:`${n}/${Sa}`}initWebsocket(n){if(!this.connectConfig)throw Error("ConnectConfig is null");let{token:t,url:i}=this.connectConfig,r=this.getUrl(i);this.websocket=new WebSocket(r),this.websocket.binaryType="arraybuffer";let a=S=>{this.emit("socketOpen",S);let cn=`web-${ga}`,L=be.encode({authRequest:{token:t,sdkVersion:cn}}).finish();this.websocket?.send(L)},d=S=>{this.emit("socketError",S)},f=S=>{Ze(S.reason)&&this.emit("authError",S.reason),je(S.reason)&&this.emit("joinError",S.reason),this.logger.warn(`Socket closed with reason: ${S.reason}`),this.emit("socketClose",S)};this.websocket.addEventListener("open",a),this.websocket.addEventListener("error",d),this.websocket.addEventListener("close",f);let T=S=>{let cn=new Uint8Array(S.data);try{let L=be.decode(cn),wn=L.serverMediaEvent;L.authenticated?(this.isAudioOnlyConnection=L.authenticated.roomType===2,this.emit("authSuccess"),this.webrtc?.connect(n)):L.authRequest?this.logger.warn("Received unexpected control message: authRequest"):wn&&this.webrtc?.receiveMediaEvent(A.encode(wn).finish())}catch(L){this.logger.warn(`Received invalid control message, error: ${L}`)}};this.websocket.addEventListener("message",T),this.removeEventListeners=()=>{this.websocket?.removeEventListener("open",a),this.websocket?.removeEventListener("error",d),this.websocket?.removeEventListener("close",f),this.websocket?.removeEventListener("message",T)}}async getStatistics(n){return await this.webrtc?.getStatistics(n)??new Map}getRemoteTracks(){return this.webrtc?.getRemoteTracks()??{}}getRemotePeers(){return Object.entries(this.webrtc?.getRemoteEndpoints()??{}).reduce((n,[t,i])=>R(i)?{...n,[t]:i}:n,{})}getRemoteComponents(){return Object.entries(this.webrtc?.getRemoteEndpoints()??{}).reduce((n,[t,i])=>Ye(i)?{...n,[t]:i}:n,{})}getLocalPeer(){return this.webrtc?.getLocalEndpoint()||null}getBandwidthEstimation(){if(!this.webrtc)throw Error("Webrtc not initialized");return this.webrtc?.getBandwidthEstimation()}isConnectingRelatedEvent(n){return!!(n.connect||n.renegotiateTracks||n.sdpOffer||n.candidate)}setupCallbacks(){this.webrtc?.on("sendMediaEvent",n=>{let t=C.decode(n),i=be.encode({peerMediaEvent:t}).finish();this.isConnectingRelatedEvent(t)?this.websocket?.send(i):this.peerMessageQueue.enqueueMessage(i)}),this.webrtc?.on("connected",async(n,t)=>{let i=t.filter(a=>R(a)).map(a=>a),r=t.filter(a=>Ye(a)).map(a=>a);await this.reconnectManager.handleReconnect(),this.sendStatisticsInterval=setInterval(()=>this.sendStatistics(),dr),this.emit("joined",n,i,r)}),this.webrtc?.on("disconnected",()=>{this.emit("disconnected"),clearInterval(this.sendStatisticsInterval)}),this.webrtc?.on("endpointAdded",n=>{R(n)&&this.emit("peerJoined",n),Ye(n)&&this.emit("componentAdded",n)}),this.webrtc?.on("endpointRemoved",n=>{R(n)&&this.emit("peerLeft",n),Ye(n)&&this.emit("componentRemoved",n)}),this.webrtc?.on("endpointUpdated",n=>{R(n)&&this.emit("peerUpdated",n),Ye(n)&&this.emit("componentUpdated",n)}),this.webrtc?.on("trackReady",n=>{R(n.endpoint)&&this.emit("trackReady",n)}),this.webrtc?.on("trackAdded",n=>{R(n.endpoint)&&this.emit("trackAdded",n)}),this.webrtc?.on("trackRemoved",n=>{R(n.endpoint)&&(this.emit("trackRemoved",n),n.removeAllListeners())}),this.webrtc?.on("trackUpdated",n=>{R(n.endpoint)&&this.emit("trackUpdated",n)}),this.webrtc?.on("tracksPriorityChanged",(n,t)=>{this.emit("tracksPriorityChanged",n,t)}),this.webrtc?.on("signalingError",n=>{this.emit("joinError",n)}),this.webrtc?.on("connectionError",n=>{this.emit("connectionError",n)}),this.webrtc?.on("bandwidthEstimationChanged",n=>{this.emit("bandwidthEstimationChanged",n)}),this.webrtc?.on("targetTrackEncodingRequested",n=>{this.emit("targetTrackEncodingRequested",n)}),this.webrtc?.on("localTrackAdded",n=>{this.emit("localTrackAdded",n)}),this.webrtc?.on("localTrackRemoved",n=>{this.emit("localTrackRemoved",n)}),this.webrtc?.on("localTrackReplaced",n=>{this.emit("localTrackReplaced",n)}),this.webrtc?.on("localTrackBandwidthSet",n=>{this.emit("localTrackBandwidthSet",n)}),this.webrtc?.on("localTrackMuted",n=>{this.emit("localTrackMuted",n)}),this.webrtc?.on("localTrackUnmuted",n=>{this.emit("localTrackUnmuted",n)}),this.webrtc?.on("localTrackBandwidthSet",n=>{this.emit("localTrackBandwidthSet",n)}),this.webrtc?.on("localTrackEncodingEnabled",n=>{this.emit("localTrackEncodingEnabled",n)}),this.webrtc?.on("localTrackEncodingDisabled",n=>{this.emit("localTrackEncodingDisabled",n)}),this.webrtc?.on("localEndpointMetadataChanged",n=>{this.emit("localPeerMetadataChanged",n)}),this.webrtc?.on("localTrackMetadataChanged",n=>{this.emit("localTrackMetadataChanged",n)}),this.webrtc?.on("disconnectRequested",n=>{this.emit("disconnectRequested",n)})}async sendStatistics(){let n=await this.getStatistics(),t={};n.forEach((r,a)=>{(r.type==="inbound-rtp"||r.type==="outbound-rtp")&&(t[a]=r)});let i=be.encode({rtcStatsReport:{data:JSON.stringify(t)}}).finish();this.peerMessageQueue.enqueueMessage(i)}on(n,t){return super.on(n,t)}off(n,t){return super.off(n,t)}handleWebRTCNotInitialized(){return new Error("WebRTC is not initialized")}addTrack(n,t,i={enabled:!1,enabledVariants:[],disabledVariants:[]},r=0){if(!this.webrtc)throw this.handleWebRTCNotInitialized();if(this.isAudioOnlyConnection&&n.kind!=="audio")throw new ze;return this.webrtc.addTrack(n,t,i,r)}async replaceTrack(n,t){if(!this.webrtc)throw this.handleWebRTCNotInitialized();return this.webrtc.replaceTrack(n,t)}async setTrackBandwidth(n,t){if(!this.webrtc)throw this.handleWebRTCNotInitialized();return await this.webrtc.setTrackBandwidth(n,t),!0}async setEncodingBandwidth(n,t,i){if(!this.webrtc)throw this.handleWebRTCNotInitialized();return await this.webrtc.setEncodingBandwidth(n,t,i),!0}removeTrack(n){if(!this.webrtc)throw this.handleWebRTCNotInitialized();return this.webrtc.removeTrack(n)}setTargetTrackEncoding(n,t){if(!this.webrtc)throw this.handleWebRTCNotInitialized();return this.webrtc.setTargetTrackEncoding(n,t)}enableTrackEncoding(n,t){if(!this.webrtc)throw this.handleWebRTCNotInitialized();return this.webrtc.enableTrackEncoding(n,t)}disableTrackEncoding(n,t){if(!this.webrtc)throw this.handleWebRTCNotInitialized();return this.webrtc.disableTrackEncoding(n,t)}updatePeerMetadata=n=>{if(!this.webrtc)throw this.handleWebRTCNotInitialized();this.webrtc.updateEndpointMetadata(n)};updateTrackMetadata=(n,t)=>{if(!this.webrtc)throw this.handleWebRTCNotInitialized();this.webrtc.updateTrackMetadata(n,t)};isReconnecting(){return this.reconnectManager.isReconnecting()}leave=()=>{if(!this.webrtc)throw this.handleWebRTCNotInitialized();this.webrtc.disconnect()};isOpen(n){return n?.readyState===1}disconnect(){try{this.webrtc?.removeAllListeners(),this.webrtc?.disconnect(),this.webrtc?.cleanUp()}catch(n){this.logger.warn(n)}this.removeEventListeners?.(),this.removeEventListeners=null,this.isOpen(this.websocket||null)&&this.websocket?.close(),this.websocket=null,this.webrtc=null,this.emit("disconnected")}cleanup(){this.reconnectManager.cleanup()}};import{WHEPClient as or}from"@binbat/whip-whep/whep";import{WHIPClient as cr}from"@binbat/whip-whep/whip";var _a=(r=>(r.UNAUTHORIZED="unauthorized",r.STREAM_NOT_FOUND="stream_not_found",r.UNKNOWN_ERROR="unknown_error",r.STREAMER_ALREADY_CONNECTED="streamer_already_connected",r))(_a||{});function sr(e,n,t){let i=new RTCPeerConnection({bundlePolicy:"max-bundle"});i.addTransceiver("video",{direction:"recvonly"}),i.addTransceiver("audio",{direction:"recvonly"}),i.onconnectionstatechange=a=>t?.onConnectionStateChange?.(i);let r=new or;return new Promise((a,d)=>{i.ontrack=f=>{let T=f.streams[0];T&&a({stream:T,stop:async()=>{await r.stop(),t?.onConnectionStateChange?.(i)}})},r.view(i,e,n).catch(f=>{if(f instanceof Error){let T="unknown_error";f.message.includes("401")?T="unauthorized":f.message.includes("404")&&(T="stream_not_found"),d(T)}})})}async function ur(e,n,t,i){let r=new RTCPeerConnection({bundlePolicy:"max-bundle"});r.onconnectionstatechange=T=>i?.onConnectionStateChange?.(r);let a=e.getVideoTracks().at(0),d=e.getAudioTracks().at(0);if(!a&&!d)throw Error("To publish a livestream with WHIP, you need to supply at least one video or audio track.");a&&r.addTransceiver(a,{direction:"sendonly"}),d&&r.addTransceiver(d,{direction:"sendonly"});let f=new cr;try{await f.publish(r,n,t)}catch(T){if(T instanceof Error){if(T.message.includes("401"))throw"unauthorized";if(T.message.includes("404"))throw"stream_not_found";if(T.message.includes("409"))throw"streamer_already_connected"}throw"unknown_error"}return{stopPublishing:async()=>{await f.stop(),i?.onConnectionStateChange?.(r)}}}export{Nn as AUTH_ERROR_REASONS,bn as FishjamClient,ma as JOIN_ERRORS,_a as LivestreamError,Ne as SimulcastConfig,ze as TrackTypeError,Ra as Variant,ha as WebRTCEndpoint,Pn as getLogger,Ze as isAuthError,je as isJoinError,ur as publishLivestream,sr as receiveLivestream};
|
|
1
|
+
var Bn=["missing token","invalid token","expired token","room not found","peer not found"],en=e=>Bn.includes(e);var nn=class extends Error{constructor(){super("Attempted to add video track to audio-only room. Please refer to the docs at https://docs.fishjam.io/audio-calls")}};import{BinaryReader as P,BinaryWriter as Re}from"@bufbuild/protobuf/wire";import{BinaryReader as p,BinaryWriter as m}from"@bufbuild/protobuf/wire";import{BinaryReader as X,BinaryWriter as kn}from"@bufbuild/protobuf/wire";function w(e){switch(e){case 0:case"VARIANT_UNSPECIFIED":return 0;case 1:case"VARIANT_LOW":return 1;case 2:case"VARIANT_MEDIUM":return 2;case 3:case"VARIANT_HIGH":return 3;case-1:case"UNRECOGNIZED":default:return-1}}function N(e){switch(e){case 0:return"VARIANT_UNSPECIFIED";case 1:return"VARIANT_LOW";case 2:return"VARIANT_MEDIUM";case 3:return"VARIANT_HIGH";case-1:default:return"UNRECOGNIZED"}}function Dn(){return{candidate:"",sdpMLineIndex:0,sdpMid:"",usernameFragment:""}}var b={encode(e,n=new kn){return e.candidate!==""&&n.uint32(10).string(e.candidate),e.sdpMLineIndex!==0&&n.uint32(16).int32(e.sdpMLineIndex),e.sdpMid!==""&&n.uint32(26).string(e.sdpMid),e.usernameFragment!==""&&n.uint32(34).string(e.usernameFragment),n},decode(e,n){let t=e instanceof X?e:new X(e),i=n===void 0?t.len:t.pos+n,r=Dn();for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{if(a!==10)break;r.candidate=t.string();continue}case 2:{if(a!==16)break;r.sdpMLineIndex=t.int32();continue}case 3:{if(a!==26)break;r.sdpMid=t.string();continue}case 4:{if(a!==34)break;r.usernameFragment=t.string();continue}}if((a&7)===4||a===0)break;t.skip(a&7)}return r},fromJSON(e){return{candidate:W(e.candidate)?globalThis.String(e.candidate):"",sdpMLineIndex:W(e.sdpMLineIndex)?globalThis.Number(e.sdpMLineIndex):0,sdpMid:W(e.sdpMid)?globalThis.String(e.sdpMid):"",usernameFragment:W(e.usernameFragment)?globalThis.String(e.usernameFragment):""}},toJSON(e){let n={};return e.candidate!==""&&(n.candidate=e.candidate),e.sdpMLineIndex!==0&&(n.sdpMLineIndex=Math.round(e.sdpMLineIndex)),e.sdpMid!==""&&(n.sdpMid=e.sdpMid),e.usernameFragment!==""&&(n.usernameFragment=e.usernameFragment),n},create(e){return b.fromPartial(e??{})},fromPartial(e){let n=Dn();return n.candidate=e.candidate??"",n.sdpMLineIndex=e.sdpMLineIndex??0,n.sdpMid=e.sdpMid??"",n.usernameFragment=e.usernameFragment??"",n}};function Vn(){return{data:new Uint8Array(0)}}var Q={encode(e,n=new kn){return e.data.length!==0&&n.uint32(10).bytes(e.data),n},decode(e,n){let t=e instanceof X?e:new X(e),i=n===void 0?t.len:t.pos+n,r=Vn();for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{if(a!==10)break;r.data=t.bytes();continue}}if((a&7)===4||a===0)break;t.skip(a&7)}return r},fromJSON(e){return{data:W(e.data)?Aa(e.data):new Uint8Array(0)}},toJSON(e){let n={};return e.data.length!==0&&(n.data=Ba(e.data)),n},create(e){return Q.fromPartial(e??{})},fromPartial(e){let n=Vn();return n.data=e.data??new Uint8Array(0),n}};function Un(){return{source:"",destinations:[],binary:void 0}}var dn={encode(e,n=new kn){e.source!==""&&n.uint32(10).string(e.source);for(let t of e.destinations)n.uint32(18).string(t);return e.binary!==void 0&&Q.encode(e.binary,n.uint32(26).fork()).join(),n},decode(e,n){let t=e instanceof X?e:new X(e),i=n===void 0?t.len:t.pos+n,r=Un();for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{if(a!==10)break;r.source=t.string();continue}case 2:{if(a!==18)break;r.destinations.push(t.string());continue}case 3:{if(a!==26)break;r.binary=Q.decode(t,t.uint32());continue}}if((a&7)===4||a===0)break;t.skip(a&7)}return r},fromJSON(e){return{source:W(e.source)?globalThis.String(e.source):"",destinations:globalThis.Array.isArray(e?.destinations)?e.destinations.map(n=>globalThis.String(n)):[],binary:W(e.binary)?Q.fromJSON(e.binary):void 0}},toJSON(e){let n={};return e.source!==""&&(n.source=e.source),e.destinations?.length&&(n.destinations=e.destinations),e.binary!==void 0&&(n.binary=Q.toJSON(e.binary)),n},create(e){return dn.fromPartial(e??{})},fromPartial(e){let n=Un();return n.source=e.source??"",n.destinations=e.destinations?.map(t=>t)||[],n.binary=e.binary!==void 0&&e.binary!==null?Q.fromPartial(e.binary):void 0,n}};function Aa(e){if(globalThis.Buffer)return Uint8Array.from(globalThis.Buffer.from(e,"base64"));{let n=globalThis.atob(e),t=new Uint8Array(n.length);for(let i=0;i<n.length;++i)t[i]=n.charCodeAt(i);return t}}function Ba(e){if(globalThis.Buffer)return globalThis.Buffer.from(e).toString("base64");{let n=[];return e.forEach(t=>{n.push(globalThis.String.fromCharCode(t))}),globalThis.btoa(n.join(""))}}function W(e){return e!=null}function Ln(){return{connect:void 0,disconnect:void 0,updateEndpointMetadata:void 0,updateTrackMetadata:void 0,renegotiateTracks:void 0,candidate:void 0,sdpOffer:void 0,trackBitrates:void 0,enableTrackVariant:void 0,disableTrackVariant:void 0,setTargetTrackVariant:void 0,unmuteTrack:void 0}}var x={encode(e,n=new m){return e.connect!==void 0&&ee.encode(e.connect,n.uint32(10).fork()).join(),e.disconnect!==void 0&&ne.encode(e.disconnect,n.uint32(18).fork()).join(),e.updateEndpointMetadata!==void 0&&te.encode(e.updateEndpointMetadata,n.uint32(26).fork()).join(),e.updateTrackMetadata!==void 0&&ae.encode(e.updateTrackMetadata,n.uint32(34).fork()).join(),e.renegotiateTracks!==void 0&&re.encode(e.renegotiateTracks,n.uint32(42).fork()).join(),e.candidate!==void 0&&b.encode(e.candidate,n.uint32(50).fork()).join(),e.sdpOffer!==void 0&&ie.encode(e.sdpOffer,n.uint32(58).fork()).join(),e.trackBitrates!==void 0&&_.encode(e.trackBitrates,n.uint32(66).fork()).join(),e.enableTrackVariant!==void 0&&oe.encode(e.enableTrackVariant,n.uint32(74).fork()).join(),e.disableTrackVariant!==void 0&&de.encode(e.disableTrackVariant,n.uint32(82).fork()).join(),e.setTargetTrackVariant!==void 0&&se.encode(e.setTargetTrackVariant,n.uint32(90).fork()).join(),e.unmuteTrack!==void 0&&ce.encode(e.unmuteTrack,n.uint32(98).fork()).join(),n},decode(e,n){let t=e instanceof p?e:new p(e),i=n===void 0?t.len:t.pos+n,r=Ln();for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{if(a!==10)break;r.connect=ee.decode(t,t.uint32());continue}case 2:{if(a!==18)break;r.disconnect=ne.decode(t,t.uint32());continue}case 3:{if(a!==26)break;r.updateEndpointMetadata=te.decode(t,t.uint32());continue}case 4:{if(a!==34)break;r.updateTrackMetadata=ae.decode(t,t.uint32());continue}case 5:{if(a!==42)break;r.renegotiateTracks=re.decode(t,t.uint32());continue}case 6:{if(a!==50)break;r.candidate=b.decode(t,t.uint32());continue}case 7:{if(a!==58)break;r.sdpOffer=ie.decode(t,t.uint32());continue}case 8:{if(a!==66)break;r.trackBitrates=_.decode(t,t.uint32());continue}case 9:{if(a!==74)break;r.enableTrackVariant=oe.decode(t,t.uint32());continue}case 10:{if(a!==82)break;r.disableTrackVariant=de.decode(t,t.uint32());continue}case 11:{if(a!==90)break;r.setTargetTrackVariant=se.decode(t,t.uint32());continue}case 12:{if(a!==98)break;r.unmuteTrack=ce.decode(t,t.uint32());continue}}if((a&7)===4||a===0)break;t.skip(a&7)}return r},fromJSON(e){return{connect:f(e.connect)?ee.fromJSON(e.connect):void 0,disconnect:f(e.disconnect)?ne.fromJSON(e.disconnect):void 0,updateEndpointMetadata:f(e.updateEndpointMetadata)?te.fromJSON(e.updateEndpointMetadata):void 0,updateTrackMetadata:f(e.updateTrackMetadata)?ae.fromJSON(e.updateTrackMetadata):void 0,renegotiateTracks:f(e.renegotiateTracks)?re.fromJSON(e.renegotiateTracks):void 0,candidate:f(e.candidate)?b.fromJSON(e.candidate):void 0,sdpOffer:f(e.sdpOffer)?ie.fromJSON(e.sdpOffer):void 0,trackBitrates:f(e.trackBitrates)?_.fromJSON(e.trackBitrates):void 0,enableTrackVariant:f(e.enableTrackVariant)?oe.fromJSON(e.enableTrackVariant):void 0,disableTrackVariant:f(e.disableTrackVariant)?de.fromJSON(e.disableTrackVariant):void 0,setTargetTrackVariant:f(e.setTargetTrackVariant)?se.fromJSON(e.setTargetTrackVariant):void 0,unmuteTrack:f(e.unmuteTrack)?ce.fromJSON(e.unmuteTrack):void 0}},toJSON(e){let n={};return e.connect!==void 0&&(n.connect=ee.toJSON(e.connect)),e.disconnect!==void 0&&(n.disconnect=ne.toJSON(e.disconnect)),e.updateEndpointMetadata!==void 0&&(n.updateEndpointMetadata=te.toJSON(e.updateEndpointMetadata)),e.updateTrackMetadata!==void 0&&(n.updateTrackMetadata=ae.toJSON(e.updateTrackMetadata)),e.renegotiateTracks!==void 0&&(n.renegotiateTracks=re.toJSON(e.renegotiateTracks)),e.candidate!==void 0&&(n.candidate=b.toJSON(e.candidate)),e.sdpOffer!==void 0&&(n.sdpOffer=ie.toJSON(e.sdpOffer)),e.trackBitrates!==void 0&&(n.trackBitrates=_.toJSON(e.trackBitrates)),e.enableTrackVariant!==void 0&&(n.enableTrackVariant=oe.toJSON(e.enableTrackVariant)),e.disableTrackVariant!==void 0&&(n.disableTrackVariant=de.toJSON(e.disableTrackVariant)),e.setTargetTrackVariant!==void 0&&(n.setTargetTrackVariant=se.toJSON(e.setTargetTrackVariant)),e.unmuteTrack!==void 0&&(n.unmuteTrack=ce.toJSON(e.unmuteTrack)),n},create(e){return x.fromPartial(e??{})},fromPartial(e){let n=Ln();return n.connect=e.connect!==void 0&&e.connect!==null?ee.fromPartial(e.connect):void 0,n.disconnect=e.disconnect!==void 0&&e.disconnect!==null?ne.fromPartial(e.disconnect):void 0,n.updateEndpointMetadata=e.updateEndpointMetadata!==void 0&&e.updateEndpointMetadata!==null?te.fromPartial(e.updateEndpointMetadata):void 0,n.updateTrackMetadata=e.updateTrackMetadata!==void 0&&e.updateTrackMetadata!==null?ae.fromPartial(e.updateTrackMetadata):void 0,n.renegotiateTracks=e.renegotiateTracks!==void 0&&e.renegotiateTracks!==null?re.fromPartial(e.renegotiateTracks):void 0,n.candidate=e.candidate!==void 0&&e.candidate!==null?b.fromPartial(e.candidate):void 0,n.sdpOffer=e.sdpOffer!==void 0&&e.sdpOffer!==null?ie.fromPartial(e.sdpOffer):void 0,n.trackBitrates=e.trackBitrates!==void 0&&e.trackBitrates!==null?_.fromPartial(e.trackBitrates):void 0,n.enableTrackVariant=e.enableTrackVariant!==void 0&&e.enableTrackVariant!==null?oe.fromPartial(e.enableTrackVariant):void 0,n.disableTrackVariant=e.disableTrackVariant!==void 0&&e.disableTrackVariant!==null?de.fromPartial(e.disableTrackVariant):void 0,n.setTargetTrackVariant=e.setTargetTrackVariant!==void 0&&e.setTargetTrackVariant!==null?se.fromPartial(e.setTargetTrackVariant):void 0,n.unmuteTrack=e.unmuteTrack!==void 0&&e.unmuteTrack!==null?ce.fromPartial(e.unmuteTrack):void 0,n}};function Fn(){return{variant:0,bitrate:0}}var j={encode(e,n=new m){return e.variant!==0&&n.uint32(8).int32(e.variant),e.bitrate!==0&&n.uint32(16).int32(e.bitrate),n},decode(e,n){let t=e instanceof p?e:new p(e),i=n===void 0?t.len:t.pos+n,r=Fn();for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{if(a!==8)break;r.variant=t.int32();continue}case 2:{if(a!==16)break;r.bitrate=t.int32();continue}}if((a&7)===4||a===0)break;t.skip(a&7)}return r},fromJSON(e){return{variant:f(e.variant)?w(e.variant):0,bitrate:f(e.bitrate)?globalThis.Number(e.bitrate):0}},toJSON(e){let n={};return e.variant!==0&&(n.variant=N(e.variant)),e.bitrate!==0&&(n.bitrate=Math.round(e.bitrate)),n},create(e){return j.fromPartial(e??{})},fromPartial(e){let n=Fn();return n.variant=e.variant??0,n.bitrate=e.bitrate??0,n}};function Wn(){return{metadataJson:""}}var ee={encode(e,n=new m){return e.metadataJson!==""&&n.uint32(10).string(e.metadataJson),n},decode(e,n){let t=e instanceof p?e:new p(e),i=n===void 0?t.len:t.pos+n,r=Wn();for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{if(a!==10)break;r.metadataJson=t.string();continue}}if((a&7)===4||a===0)break;t.skip(a&7)}return r},fromJSON(e){return{metadataJson:f(e.metadataJson)?globalThis.String(e.metadataJson):""}},toJSON(e){let n={};return e.metadataJson!==""&&(n.metadataJson=e.metadataJson),n},create(e){return ee.fromPartial(e??{})},fromPartial(e){let n=Wn();return n.metadataJson=e.metadataJson??"",n}};function $n(){return{}}var ne={encode(e,n=new m){return n},decode(e,n){let t=e instanceof p?e:new p(e),i=n===void 0?t.len:t.pos+n,r=$n();for(;t.pos<i;){let a=t.uint32();if(a>>>3,(a&7)===4||a===0)break;t.skip(a&7)}return r},fromJSON(e){return{}},toJSON(e){return{}},create(e){return ne.fromPartial(e??{})},fromPartial(e){return $n()}};function Hn(){return{metadataJson:""}}var te={encode(e,n=new m){return e.metadataJson!==""&&n.uint32(10).string(e.metadataJson),n},decode(e,n){let t=e instanceof p?e:new p(e),i=n===void 0?t.len:t.pos+n,r=Hn();for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{if(a!==10)break;r.metadataJson=t.string();continue}}if((a&7)===4||a===0)break;t.skip(a&7)}return r},fromJSON(e){return{metadataJson:f(e.metadataJson)?globalThis.String(e.metadataJson):""}},toJSON(e){let n={};return e.metadataJson!==""&&(n.metadataJson=e.metadataJson),n},create(e){return te.fromPartial(e??{})},fromPartial(e){let n=Hn();return n.metadataJson=e.metadataJson??"",n}};function qn(){return{trackId:"",metadataJson:""}}var ae={encode(e,n=new m){return e.trackId!==""&&n.uint32(10).string(e.trackId),e.metadataJson!==""&&n.uint32(18).string(e.metadataJson),n},decode(e,n){let t=e instanceof p?e:new p(e),i=n===void 0?t.len:t.pos+n,r=qn();for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{if(a!==10)break;r.trackId=t.string();continue}case 2:{if(a!==18)break;r.metadataJson=t.string();continue}}if((a&7)===4||a===0)break;t.skip(a&7)}return r},fromJSON(e){return{trackId:f(e.trackId)?globalThis.String(e.trackId):"",metadataJson:f(e.metadataJson)?globalThis.String(e.metadataJson):""}},toJSON(e){let n={};return e.trackId!==""&&(n.trackId=e.trackId),e.metadataJson!==""&&(n.metadataJson=e.metadataJson),n},create(e){return ae.fromPartial(e??{})},fromPartial(e){let n=qn();return n.trackId=e.trackId??"",n.metadataJson=e.metadataJson??"",n}};function Kn(){return{}}var re={encode(e,n=new m){return n},decode(e,n){let t=e instanceof p?e:new p(e),i=n===void 0?t.len:t.pos+n,r=Kn();for(;t.pos<i;){let a=t.uint32();if(a>>>3,(a&7)===4||a===0)break;t.skip(a&7)}return r},fromJSON(e){return{}},toJSON(e){return{}},create(e){return re.fromPartial(e??{})},fromPartial(e){return Kn()}};function Gn(){return{sdp:"",trackIdToMetadataJson:{},trackIdToBitrates:{},midToTrackId:{}}}var ie={encode(e,n=new m){return e.sdp!==""&&n.uint32(10).string(e.sdp),Object.entries(e.trackIdToMetadataJson).forEach(([t,i])=>{vn.encode({key:t,value:i},n.uint32(18).fork()).join()}),Object.entries(e.trackIdToBitrates).forEach(([t,i])=>{Tn.encode({key:t,value:i},n.uint32(26).fork()).join()}),Object.entries(e.midToTrackId).forEach(([t,i])=>{En.encode({key:t,value:i},n.uint32(34).fork()).join()}),n},decode(e,n){let t=e instanceof p?e:new p(e),i=n===void 0?t.len:t.pos+n,r=Gn();for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{if(a!==10)break;r.sdp=t.string();continue}case 2:{if(a!==18)break;let d=vn.decode(t,t.uint32());d.value!==void 0&&(r.trackIdToMetadataJson[d.key]=d.value);continue}case 3:{if(a!==26)break;let d=Tn.decode(t,t.uint32());d.value!==void 0&&(r.trackIdToBitrates[d.key]=d.value);continue}case 4:{if(a!==34)break;let d=En.decode(t,t.uint32());d.value!==void 0&&(r.midToTrackId[d.key]=d.value);continue}}if((a&7)===4||a===0)break;t.skip(a&7)}return r},fromJSON(e){return{sdp:f(e.sdp)?globalThis.String(e.sdp):"",trackIdToMetadataJson:pn(e.trackIdToMetadataJson)?Object.entries(e.trackIdToMetadataJson).reduce((n,[t,i])=>(n[t]=String(i),n),{}):{},trackIdToBitrates:pn(e.trackIdToBitrates)?Object.entries(e.trackIdToBitrates).reduce((n,[t,i])=>(n[t]=_.fromJSON(i),n),{}):{},midToTrackId:pn(e.midToTrackId)?Object.entries(e.midToTrackId).reduce((n,[t,i])=>(n[t]=String(i),n),{}):{}}},toJSON(e){let n={};if(e.sdp!==""&&(n.sdp=e.sdp),e.trackIdToMetadataJson){let t=Object.entries(e.trackIdToMetadataJson);t.length>0&&(n.trackIdToMetadataJson={},t.forEach(([i,r])=>{n.trackIdToMetadataJson[i]=r}))}if(e.trackIdToBitrates){let t=Object.entries(e.trackIdToBitrates);t.length>0&&(n.trackIdToBitrates={},t.forEach(([i,r])=>{n.trackIdToBitrates[i]=_.toJSON(r)}))}if(e.midToTrackId){let t=Object.entries(e.midToTrackId);t.length>0&&(n.midToTrackId={},t.forEach(([i,r])=>{n.midToTrackId[i]=r}))}return n},create(e){return ie.fromPartial(e??{})},fromPartial(e){let n=Gn();return n.sdp=e.sdp??"",n.trackIdToMetadataJson=Object.entries(e.trackIdToMetadataJson??{}).reduce((t,[i,r])=>(r!==void 0&&(t[i]=globalThis.String(r)),t),{}),n.trackIdToBitrates=Object.entries(e.trackIdToBitrates??{}).reduce((t,[i,r])=>(r!==void 0&&(t[i]=_.fromPartial(r)),t),{}),n.midToTrackId=Object.entries(e.midToTrackId??{}).reduce((t,[i,r])=>(r!==void 0&&(t[i]=globalThis.String(r)),t),{}),n}};function Yn(){return{key:"",value:""}}var vn={encode(e,n=new m){return e.key!==""&&n.uint32(10).string(e.key),e.value!==""&&n.uint32(18).string(e.value),n},decode(e,n){let t=e instanceof p?e:new p(e),i=n===void 0?t.len:t.pos+n,r=Yn();for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{if(a!==10)break;r.key=t.string();continue}case 2:{if(a!==18)break;r.value=t.string();continue}}if((a&7)===4||a===0)break;t.skip(a&7)}return r},fromJSON(e){return{key:f(e.key)?globalThis.String(e.key):"",value:f(e.value)?globalThis.String(e.value):""}},toJSON(e){let n={};return e.key!==""&&(n.key=e.key),e.value!==""&&(n.value=e.value),n},create(e){return vn.fromPartial(e??{})},fromPartial(e){let n=Yn();return n.key=e.key??"",n.value=e.value??"",n}};function Zn(){return{key:"",value:void 0}}var Tn={encode(e,n=new m){return e.key!==""&&n.uint32(10).string(e.key),e.value!==void 0&&_.encode(e.value,n.uint32(18).fork()).join(),n},decode(e,n){let t=e instanceof p?e:new p(e),i=n===void 0?t.len:t.pos+n,r=Zn();for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{if(a!==10)break;r.key=t.string();continue}case 2:{if(a!==18)break;r.value=_.decode(t,t.uint32());continue}}if((a&7)===4||a===0)break;t.skip(a&7)}return r},fromJSON(e){return{key:f(e.key)?globalThis.String(e.key):"",value:f(e.value)?_.fromJSON(e.value):void 0}},toJSON(e){let n={};return e.key!==""&&(n.key=e.key),e.value!==void 0&&(n.value=_.toJSON(e.value)),n},create(e){return Tn.fromPartial(e??{})},fromPartial(e){let n=Zn();return n.key=e.key??"",n.value=e.value!==void 0&&e.value!==null?_.fromPartial(e.value):void 0,n}};function zn(){return{key:"",value:""}}var En={encode(e,n=new m){return e.key!==""&&n.uint32(10).string(e.key),e.value!==""&&n.uint32(18).string(e.value),n},decode(e,n){let t=e instanceof p?e:new p(e),i=n===void 0?t.len:t.pos+n,r=zn();for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{if(a!==10)break;r.key=t.string();continue}case 2:{if(a!==18)break;r.value=t.string();continue}}if((a&7)===4||a===0)break;t.skip(a&7)}return r},fromJSON(e){return{key:f(e.key)?globalThis.String(e.key):"",value:f(e.value)?globalThis.String(e.value):""}},toJSON(e){let n={};return e.key!==""&&(n.key=e.key),e.value!==""&&(n.value=e.value),n},create(e){return En.fromPartial(e??{})},fromPartial(e){let n=zn();return n.key=e.key??"",n.value=e.value??"",n}};function Qn(){return{trackId:"",variantBitrates:[]}}var _={encode(e,n=new m){e.trackId!==""&&n.uint32(10).string(e.trackId);for(let t of e.variantBitrates)j.encode(t,n.uint32(18).fork()).join();return n},decode(e,n){let t=e instanceof p?e:new p(e),i=n===void 0?t.len:t.pos+n,r=Qn();for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{if(a!==10)break;r.trackId=t.string();continue}case 2:{if(a!==18)break;r.variantBitrates.push(j.decode(t,t.uint32()));continue}}if((a&7)===4||a===0)break;t.skip(a&7)}return r},fromJSON(e){return{trackId:f(e.trackId)?globalThis.String(e.trackId):"",variantBitrates:globalThis.Array.isArray(e?.variantBitrates)?e.variantBitrates.map(n=>j.fromJSON(n)):[]}},toJSON(e){let n={};return e.trackId!==""&&(n.trackId=e.trackId),e.variantBitrates?.length&&(n.variantBitrates=e.variantBitrates.map(t=>j.toJSON(t))),n},create(e){return _.fromPartial(e??{})},fromPartial(e){let n=Qn();return n.trackId=e.trackId??"",n.variantBitrates=e.variantBitrates?.map(t=>j.fromPartial(t))||[],n}};function Xn(){return{trackId:"",variant:0}}var de={encode(e,n=new m){return e.trackId!==""&&n.uint32(10).string(e.trackId),e.variant!==0&&n.uint32(16).int32(e.variant),n},decode(e,n){let t=e instanceof p?e:new p(e),i=n===void 0?t.len:t.pos+n,r=Xn();for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{if(a!==10)break;r.trackId=t.string();continue}case 2:{if(a!==16)break;r.variant=t.int32();continue}}if((a&7)===4||a===0)break;t.skip(a&7)}return r},fromJSON(e){return{trackId:f(e.trackId)?globalThis.String(e.trackId):"",variant:f(e.variant)?w(e.variant):0}},toJSON(e){let n={};return e.trackId!==""&&(n.trackId=e.trackId),e.variant!==0&&(n.variant=N(e.variant)),n},create(e){return de.fromPartial(e??{})},fromPartial(e){let n=Xn();return n.trackId=e.trackId??"",n.variant=e.variant??0,n}};function jn(){return{trackId:"",variant:0}}var oe={encode(e,n=new m){return e.trackId!==""&&n.uint32(10).string(e.trackId),e.variant!==0&&n.uint32(16).int32(e.variant),n},decode(e,n){let t=e instanceof p?e:new p(e),i=n===void 0?t.len:t.pos+n,r=jn();for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{if(a!==10)break;r.trackId=t.string();continue}case 2:{if(a!==16)break;r.variant=t.int32();continue}}if((a&7)===4||a===0)break;t.skip(a&7)}return r},fromJSON(e){return{trackId:f(e.trackId)?globalThis.String(e.trackId):"",variant:f(e.variant)?w(e.variant):0}},toJSON(e){let n={};return e.trackId!==""&&(n.trackId=e.trackId),e.variant!==0&&(n.variant=N(e.variant)),n},create(e){return oe.fromPartial(e??{})},fromPartial(e){let n=jn();return n.trackId=e.trackId??"",n.variant=e.variant??0,n}};function et(){return{trackId:"",variant:0}}var se={encode(e,n=new m){return e.trackId!==""&&n.uint32(10).string(e.trackId),e.variant!==0&&n.uint32(16).int32(e.variant),n},decode(e,n){let t=e instanceof p?e:new p(e),i=n===void 0?t.len:t.pos+n,r=et();for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{if(a!==10)break;r.trackId=t.string();continue}case 2:{if(a!==16)break;r.variant=t.int32();continue}}if((a&7)===4||a===0)break;t.skip(a&7)}return r},fromJSON(e){return{trackId:f(e.trackId)?globalThis.String(e.trackId):"",variant:f(e.variant)?w(e.variant):0}},toJSON(e){let n={};return e.trackId!==""&&(n.trackId=e.trackId),e.variant!==0&&(n.variant=N(e.variant)),n},create(e){return se.fromPartial(e??{})},fromPartial(e){let n=et();return n.trackId=e.trackId??"",n.variant=e.variant??0,n}};function nt(){return{trackId:""}}var ce={encode(e,n=new m){return e.trackId!==""&&n.uint32(10).string(e.trackId),n},decode(e,n){let t=e instanceof p?e:new p(e),i=n===void 0?t.len:t.pos+n,r=nt();for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{if(a!==10)break;r.trackId=t.string();continue}}if((a&7)===4||a===0)break;t.skip(a&7)}return r},fromJSON(e){return{trackId:f(e.trackId)?globalThis.String(e.trackId):""}},toJSON(e){let n={};return e.trackId!==""&&(n.trackId=e.trackId),n},create(e){return ce.fromPartial(e??{})},fromPartial(e){let n=nt();return n.trackId=e.trackId??"",n}};function pn(e){return typeof e=="object"&&e!==null}function f(e){return e!=null}import{BinaryReader as c,BinaryWriter as E}from"@bufbuild/protobuf/wire";function Da(e){switch(e){case 0:case"STATUS_UNSPECIFIED":return 0;case 1:case"STATUS_SILENCE":return 1;case 2:case"STATUS_SPEECH":return 2;case-1:case"UNRECOGNIZED":default:return-1}}function Va(e){switch(e){case 0:return"STATUS_UNSPECIFIED";case 1:return"STATUS_SILENCE";case 2:return"STATUS_SPEECH";case-1:default:return"UNRECOGNIZED"}}function tt(){return{endpointUpdated:void 0,trackUpdated:void 0,tracksAdded:void 0,tracksRemoved:void 0,endpointAdded:void 0,endpointRemoved:void 0,connected:void 0,error:void 0,offerData:void 0,candidate:void 0,sdpAnswer:void 0,vadNotification:void 0,trackVariantSwitched:void 0,trackVariantDisabled:void 0,trackVariantEnabled:void 0}}var B={encode(e,n=new E){return e.endpointUpdated!==void 0&&fe.encode(e.endpointUpdated,n.uint32(10).fork()).join(),e.trackUpdated!==void 0&&ke.encode(e.trackUpdated,n.uint32(18).fork()).join(),e.tracksAdded!==void 0&&pe.encode(e.tracksAdded,n.uint32(26).fork()).join(),e.tracksRemoved!==void 0&&ve.encode(e.tracksRemoved,n.uint32(34).fork()).join(),e.endpointAdded!==void 0&&Te.encode(e.endpointAdded,n.uint32(42).fork()).join(),e.endpointRemoved!==void 0&&he.encode(e.endpointRemoved,n.uint32(50).fork()).join(),e.connected!==void 0&&Ee.encode(e.connected,n.uint32(58).fork()).join(),e.error!==void 0&&Ie.encode(e.error,n.uint32(66).fork()).join(),e.offerData!==void 0&&Me.encode(e.offerData,n.uint32(74).fork()).join(),e.candidate!==void 0&&b.encode(e.candidate,n.uint32(82).fork()).join(),e.sdpAnswer!==void 0&&ye.encode(e.sdpAnswer,n.uint32(90).fork()).join(),e.vadNotification!==void 0&&ge.encode(e.vadNotification,n.uint32(98).fork()).join(),e.trackVariantSwitched!==void 0&&Se.encode(e.trackVariantSwitched,n.uint32(106).fork()).join(),e.trackVariantDisabled!==void 0&&_e.encode(e.trackVariantDisabled,n.uint32(114).fork()).join(),e.trackVariantEnabled!==void 0&&Oe.encode(e.trackVariantEnabled,n.uint32(122).fork()).join(),n},decode(e,n){let t=e instanceof c?e:new c(e),i=n===void 0?t.len:t.pos+n,r=tt();for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{if(a!==10)break;r.endpointUpdated=fe.decode(t,t.uint32());continue}case 2:{if(a!==18)break;r.trackUpdated=ke.decode(t,t.uint32());continue}case 3:{if(a!==26)break;r.tracksAdded=pe.decode(t,t.uint32());continue}case 4:{if(a!==34)break;r.tracksRemoved=ve.decode(t,t.uint32());continue}case 5:{if(a!==42)break;r.endpointAdded=Te.decode(t,t.uint32());continue}case 6:{if(a!==50)break;r.endpointRemoved=he.decode(t,t.uint32());continue}case 7:{if(a!==58)break;r.connected=Ee.decode(t,t.uint32());continue}case 8:{if(a!==66)break;r.error=Ie.decode(t,t.uint32());continue}case 9:{if(a!==74)break;r.offerData=Me.decode(t,t.uint32());continue}case 10:{if(a!==82)break;r.candidate=b.decode(t,t.uint32());continue}case 11:{if(a!==90)break;r.sdpAnswer=ye.decode(t,t.uint32());continue}case 12:{if(a!==98)break;r.vadNotification=ge.decode(t,t.uint32());continue}case 13:{if(a!==106)break;r.trackVariantSwitched=Se.decode(t,t.uint32());continue}case 14:{if(a!==114)break;r.trackVariantDisabled=_e.decode(t,t.uint32());continue}case 15:{if(a!==122)break;r.trackVariantEnabled=Oe.decode(t,t.uint32());continue}}if((a&7)===4||a===0)break;t.skip(a&7)}return r},fromJSON(e){return{endpointUpdated:o(e.endpointUpdated)?fe.fromJSON(e.endpointUpdated):void 0,trackUpdated:o(e.trackUpdated)?ke.fromJSON(e.trackUpdated):void 0,tracksAdded:o(e.tracksAdded)?pe.fromJSON(e.tracksAdded):void 0,tracksRemoved:o(e.tracksRemoved)?ve.fromJSON(e.tracksRemoved):void 0,endpointAdded:o(e.endpointAdded)?Te.fromJSON(e.endpointAdded):void 0,endpointRemoved:o(e.endpointRemoved)?he.fromJSON(e.endpointRemoved):void 0,connected:o(e.connected)?Ee.fromJSON(e.connected):void 0,error:o(e.error)?Ie.fromJSON(e.error):void 0,offerData:o(e.offerData)?Me.fromJSON(e.offerData):void 0,candidate:o(e.candidate)?b.fromJSON(e.candidate):void 0,sdpAnswer:o(e.sdpAnswer)?ye.fromJSON(e.sdpAnswer):void 0,vadNotification:o(e.vadNotification)?ge.fromJSON(e.vadNotification):void 0,trackVariantSwitched:o(e.trackVariantSwitched)?Se.fromJSON(e.trackVariantSwitched):void 0,trackVariantDisabled:o(e.trackVariantDisabled)?_e.fromJSON(e.trackVariantDisabled):void 0,trackVariantEnabled:o(e.trackVariantEnabled)?Oe.fromJSON(e.trackVariantEnabled):void 0}},toJSON(e){let n={};return e.endpointUpdated!==void 0&&(n.endpointUpdated=fe.toJSON(e.endpointUpdated)),e.trackUpdated!==void 0&&(n.trackUpdated=ke.toJSON(e.trackUpdated)),e.tracksAdded!==void 0&&(n.tracksAdded=pe.toJSON(e.tracksAdded)),e.tracksRemoved!==void 0&&(n.tracksRemoved=ve.toJSON(e.tracksRemoved)),e.endpointAdded!==void 0&&(n.endpointAdded=Te.toJSON(e.endpointAdded)),e.endpointRemoved!==void 0&&(n.endpointRemoved=he.toJSON(e.endpointRemoved)),e.connected!==void 0&&(n.connected=Ee.toJSON(e.connected)),e.error!==void 0&&(n.error=Ie.toJSON(e.error)),e.offerData!==void 0&&(n.offerData=Me.toJSON(e.offerData)),e.candidate!==void 0&&(n.candidate=b.toJSON(e.candidate)),e.sdpAnswer!==void 0&&(n.sdpAnswer=ye.toJSON(e.sdpAnswer)),e.vadNotification!==void 0&&(n.vadNotification=ge.toJSON(e.vadNotification)),e.trackVariantSwitched!==void 0&&(n.trackVariantSwitched=Se.toJSON(e.trackVariantSwitched)),e.trackVariantDisabled!==void 0&&(n.trackVariantDisabled=_e.toJSON(e.trackVariantDisabled)),e.trackVariantEnabled!==void 0&&(n.trackVariantEnabled=Oe.toJSON(e.trackVariantEnabled)),n},create(e){return B.fromPartial(e??{})},fromPartial(e){let n=tt();return n.endpointUpdated=e.endpointUpdated!==void 0&&e.endpointUpdated!==null?fe.fromPartial(e.endpointUpdated):void 0,n.trackUpdated=e.trackUpdated!==void 0&&e.trackUpdated!==null?ke.fromPartial(e.trackUpdated):void 0,n.tracksAdded=e.tracksAdded!==void 0&&e.tracksAdded!==null?pe.fromPartial(e.tracksAdded):void 0,n.tracksRemoved=e.tracksRemoved!==void 0&&e.tracksRemoved!==null?ve.fromPartial(e.tracksRemoved):void 0,n.endpointAdded=e.endpointAdded!==void 0&&e.endpointAdded!==null?Te.fromPartial(e.endpointAdded):void 0,n.endpointRemoved=e.endpointRemoved!==void 0&&e.endpointRemoved!==null?he.fromPartial(e.endpointRemoved):void 0,n.connected=e.connected!==void 0&&e.connected!==null?Ee.fromPartial(e.connected):void 0,n.error=e.error!==void 0&&e.error!==null?Ie.fromPartial(e.error):void 0,n.offerData=e.offerData!==void 0&&e.offerData!==null?Me.fromPartial(e.offerData):void 0,n.candidate=e.candidate!==void 0&&e.candidate!==null?b.fromPartial(e.candidate):void 0,n.sdpAnswer=e.sdpAnswer!==void 0&&e.sdpAnswer!==null?ye.fromPartial(e.sdpAnswer):void 0,n.vadNotification=e.vadNotification!==void 0&&e.vadNotification!==null?ge.fromPartial(e.vadNotification):void 0,n.trackVariantSwitched=e.trackVariantSwitched!==void 0&&e.trackVariantSwitched!==null?Se.fromPartial(e.trackVariantSwitched):void 0,n.trackVariantDisabled=e.trackVariantDisabled!==void 0&&e.trackVariantDisabled!==null?_e.fromPartial(e.trackVariantDisabled):void 0,n.trackVariantEnabled=e.trackVariantEnabled!==void 0&&e.trackVariantEnabled!==null?Oe.fromPartial(e.trackVariantEnabled):void 0,n}};function at(){return{metadataJson:"",simulcastConfig:void 0}}var I={encode(e,n=new E){return e.metadataJson!==""&&n.uint32(10).string(e.metadataJson),e.simulcastConfig!==void 0&&ue.encode(e.simulcastConfig,n.uint32(18).fork()).join(),n},decode(e,n){let t=e instanceof c?e:new c(e),i=n===void 0?t.len:t.pos+n,r=at();for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{if(a!==10)break;r.metadataJson=t.string();continue}case 2:{if(a!==18)break;r.simulcastConfig=ue.decode(t,t.uint32());continue}}if((a&7)===4||a===0)break;t.skip(a&7)}return r},fromJSON(e){return{metadataJson:o(e.metadataJson)?globalThis.String(e.metadataJson):"",simulcastConfig:o(e.simulcastConfig)?ue.fromJSON(e.simulcastConfig):void 0}},toJSON(e){let n={};return e.metadataJson!==""&&(n.metadataJson=e.metadataJson),e.simulcastConfig!==void 0&&(n.simulcastConfig=ue.toJSON(e.simulcastConfig)),n},create(e){return I.fromPartial(e??{})},fromPartial(e){let n=at();return n.metadataJson=e.metadataJson??"",n.simulcastConfig=e.simulcastConfig!==void 0&&e.simulcastConfig!==null?ue.fromPartial(e.simulcastConfig):void 0,n}};function rt(){return{enabled:!1,enabledVariants:[],disabledVariants:[]}}var ue={encode(e,n=new E){e.enabled!==!1&&n.uint32(8).bool(e.enabled),n.uint32(18).fork();for(let t of e.enabledVariants)n.int32(t);n.join(),n.uint32(26).fork();for(let t of e.disabledVariants)n.int32(t);return n.join(),n},decode(e,n){let t=e instanceof c?e:new c(e),i=n===void 0?t.len:t.pos+n,r=rt();for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{if(a!==8)break;r.enabled=t.bool();continue}case 2:{if(a===16){r.enabledVariants.push(t.int32());continue}if(a===18){let d=t.uint32()+t.pos;for(;t.pos<d;)r.enabledVariants.push(t.int32());continue}break}case 3:{if(a===24){r.disabledVariants.push(t.int32());continue}if(a===26){let d=t.uint32()+t.pos;for(;t.pos<d;)r.disabledVariants.push(t.int32());continue}break}}if((a&7)===4||a===0)break;t.skip(a&7)}return r},fromJSON(e){return{enabled:o(e.enabled)?globalThis.Boolean(e.enabled):!1,enabledVariants:globalThis.Array.isArray(e?.enabledVariants)?e.enabledVariants.map(n=>w(n)):[],disabledVariants:globalThis.Array.isArray(e?.disabledVariants)?e.disabledVariants.map(n=>w(n)):[]}},toJSON(e){let n={};return e.enabled!==!1&&(n.enabled=e.enabled),e.enabledVariants?.length&&(n.enabledVariants=e.enabledVariants.map(t=>N(t))),e.disabledVariants?.length&&(n.disabledVariants=e.disabledVariants.map(t=>N(t))),n},create(e){return ue.fromPartial(e??{})},fromPartial(e){let n=rt();return n.enabled=e.enabled??!1,n.enabledVariants=e.enabledVariants?.map(t=>t)||[],n.disabledVariants=e.disabledVariants?.map(t=>t)||[],n}};function it(){return{endpointType:"",metadataJson:"",trackIdToTrack:{}}}var A={encode(e,n=new E){return e.endpointType!==""&&n.uint32(18).string(e.endpointType),e.metadataJson!==""&&n.uint32(26).string(e.metadataJson),Object.entries(e.trackIdToTrack).forEach(([t,i])=>{hn.encode({key:t,value:i},n.uint32(34).fork()).join()}),n},decode(e,n){let t=e instanceof c?e:new c(e),i=n===void 0?t.len:t.pos+n,r=it();for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 2:{if(a!==18)break;r.endpointType=t.string();continue}case 3:{if(a!==26)break;r.metadataJson=t.string();continue}case 4:{if(a!==34)break;let d=hn.decode(t,t.uint32());d.value!==void 0&&(r.trackIdToTrack[d.key]=d.value);continue}}if((a&7)===4||a===0)break;t.skip(a&7)}return r},fromJSON(e){return{endpointType:o(e.endpointType)?globalThis.String(e.endpointType):"",metadataJson:o(e.metadataJson)?globalThis.String(e.metadataJson):"",trackIdToTrack:on(e.trackIdToTrack)?Object.entries(e.trackIdToTrack).reduce((n,[t,i])=>(n[t]=I.fromJSON(i),n),{}):{}}},toJSON(e){let n={};if(e.endpointType!==""&&(n.endpointType=e.endpointType),e.metadataJson!==""&&(n.metadataJson=e.metadataJson),e.trackIdToTrack){let t=Object.entries(e.trackIdToTrack);t.length>0&&(n.trackIdToTrack={},t.forEach(([i,r])=>{n.trackIdToTrack[i]=I.toJSON(r)}))}return n},create(e){return A.fromPartial(e??{})},fromPartial(e){let n=it();return n.endpointType=e.endpointType??"",n.metadataJson=e.metadataJson??"",n.trackIdToTrack=Object.entries(e.trackIdToTrack??{}).reduce((t,[i,r])=>(r!==void 0&&(t[i]=I.fromPartial(r)),t),{}),n}};function dt(){return{key:"",value:void 0}}var hn={encode(e,n=new E){return e.key!==""&&n.uint32(10).string(e.key),e.value!==void 0&&I.encode(e.value,n.uint32(18).fork()).join(),n},decode(e,n){let t=e instanceof c?e:new c(e),i=n===void 0?t.len:t.pos+n,r=dt();for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{if(a!==10)break;r.key=t.string();continue}case 2:{if(a!==18)break;r.value=I.decode(t,t.uint32());continue}}if((a&7)===4||a===0)break;t.skip(a&7)}return r},fromJSON(e){return{key:o(e.key)?globalThis.String(e.key):"",value:o(e.value)?I.fromJSON(e.value):void 0}},toJSON(e){let n={};return e.key!==""&&(n.key=e.key),e.value!==void 0&&(n.value=I.toJSON(e.value)),n},create(e){return hn.fromPartial(e??{})},fromPartial(e){let n=dt();return n.key=e.key??"",n.value=e.value!==void 0&&e.value!==null?I.fromPartial(e.value):void 0,n}};function ot(){return{credential:"",urls:[],username:""}}var le={encode(e,n=new E){e.credential!==""&&n.uint32(10).string(e.credential);for(let t of e.urls)n.uint32(18).string(t);return e.username!==""&&n.uint32(26).string(e.username),n},decode(e,n){let t=e instanceof c?e:new c(e),i=n===void 0?t.len:t.pos+n,r=ot();for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{if(a!==10)break;r.credential=t.string();continue}case 2:{if(a!==18)break;r.urls.push(t.string());continue}case 3:{if(a!==26)break;r.username=t.string();continue}}if((a&7)===4||a===0)break;t.skip(a&7)}return r},fromJSON(e){return{credential:o(e.credential)?globalThis.String(e.credential):"",urls:globalThis.Array.isArray(e?.urls)?e.urls.map(n=>globalThis.String(n)):[],username:o(e.username)?globalThis.String(e.username):""}},toJSON(e){let n={};return e.credential!==""&&(n.credential=e.credential),e.urls?.length&&(n.urls=e.urls),e.username!==""&&(n.username=e.username),n},create(e){return le.fromPartial(e??{})},fromPartial(e){let n=ot();return n.credential=e.credential??"",n.urls=e.urls?.map(t=>t)||[],n.username=e.username??"",n}};function st(){return{endpointId:"",metadataJson:""}}var fe={encode(e,n=new E){return e.endpointId!==""&&n.uint32(10).string(e.endpointId),e.metadataJson!==""&&n.uint32(18).string(e.metadataJson),n},decode(e,n){let t=e instanceof c?e:new c(e),i=n===void 0?t.len:t.pos+n,r=st();for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{if(a!==10)break;r.endpointId=t.string();continue}case 2:{if(a!==18)break;r.metadataJson=t.string();continue}}if((a&7)===4||a===0)break;t.skip(a&7)}return r},fromJSON(e){return{endpointId:o(e.endpointId)?globalThis.String(e.endpointId):"",metadataJson:o(e.metadataJson)?globalThis.String(e.metadataJson):""}},toJSON(e){let n={};return e.endpointId!==""&&(n.endpointId=e.endpointId),e.metadataJson!==""&&(n.metadataJson=e.metadataJson),n},create(e){return fe.fromPartial(e??{})},fromPartial(e){let n=st();return n.endpointId=e.endpointId??"",n.metadataJson=e.metadataJson??"",n}};function ct(){return{endpointId:"",trackId:"",metadataJson:""}}var ke={encode(e,n=new E){return e.endpointId!==""&&n.uint32(10).string(e.endpointId),e.trackId!==""&&n.uint32(18).string(e.trackId),e.metadataJson!==""&&n.uint32(26).string(e.metadataJson),n},decode(e,n){let t=e instanceof c?e:new c(e),i=n===void 0?t.len:t.pos+n,r=ct();for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{if(a!==10)break;r.endpointId=t.string();continue}case 2:{if(a!==18)break;r.trackId=t.string();continue}case 3:{if(a!==26)break;r.metadataJson=t.string();continue}}if((a&7)===4||a===0)break;t.skip(a&7)}return r},fromJSON(e){return{endpointId:o(e.endpointId)?globalThis.String(e.endpointId):"",trackId:o(e.trackId)?globalThis.String(e.trackId):"",metadataJson:o(e.metadataJson)?globalThis.String(e.metadataJson):""}},toJSON(e){let n={};return e.endpointId!==""&&(n.endpointId=e.endpointId),e.trackId!==""&&(n.trackId=e.trackId),e.metadataJson!==""&&(n.metadataJson=e.metadataJson),n},create(e){return ke.fromPartial(e??{})},fromPartial(e){let n=ct();return n.endpointId=e.endpointId??"",n.trackId=e.trackId??"",n.metadataJson=e.metadataJson??"",n}};function ut(){return{endpointId:"",trackIdToTrack:{}}}var pe={encode(e,n=new E){return e.endpointId!==""&&n.uint32(10).string(e.endpointId),Object.entries(e.trackIdToTrack).forEach(([t,i])=>{In.encode({key:t,value:i},n.uint32(18).fork()).join()}),n},decode(e,n){let t=e instanceof c?e:new c(e),i=n===void 0?t.len:t.pos+n,r=ut();for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{if(a!==10)break;r.endpointId=t.string();continue}case 2:{if(a!==18)break;let d=In.decode(t,t.uint32());d.value!==void 0&&(r.trackIdToTrack[d.key]=d.value);continue}}if((a&7)===4||a===0)break;t.skip(a&7)}return r},fromJSON(e){return{endpointId:o(e.endpointId)?globalThis.String(e.endpointId):"",trackIdToTrack:on(e.trackIdToTrack)?Object.entries(e.trackIdToTrack).reduce((n,[t,i])=>(n[t]=I.fromJSON(i),n),{}):{}}},toJSON(e){let n={};if(e.endpointId!==""&&(n.endpointId=e.endpointId),e.trackIdToTrack){let t=Object.entries(e.trackIdToTrack);t.length>0&&(n.trackIdToTrack={},t.forEach(([i,r])=>{n.trackIdToTrack[i]=I.toJSON(r)}))}return n},create(e){return pe.fromPartial(e??{})},fromPartial(e){let n=ut();return n.endpointId=e.endpointId??"",n.trackIdToTrack=Object.entries(e.trackIdToTrack??{}).reduce((t,[i,r])=>(r!==void 0&&(t[i]=I.fromPartial(r)),t),{}),n}};function lt(){return{key:"",value:void 0}}var In={encode(e,n=new E){return e.key!==""&&n.uint32(10).string(e.key),e.value!==void 0&&I.encode(e.value,n.uint32(18).fork()).join(),n},decode(e,n){let t=e instanceof c?e:new c(e),i=n===void 0?t.len:t.pos+n,r=lt();for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{if(a!==10)break;r.key=t.string();continue}case 2:{if(a!==18)break;r.value=I.decode(t,t.uint32());continue}}if((a&7)===4||a===0)break;t.skip(a&7)}return r},fromJSON(e){return{key:o(e.key)?globalThis.String(e.key):"",value:o(e.value)?I.fromJSON(e.value):void 0}},toJSON(e){let n={};return e.key!==""&&(n.key=e.key),e.value!==void 0&&(n.value=I.toJSON(e.value)),n},create(e){return In.fromPartial(e??{})},fromPartial(e){let n=lt();return n.key=e.key??"",n.value=e.value!==void 0&&e.value!==null?I.fromPartial(e.value):void 0,n}};function ft(){return{endpointId:"",trackIds:[]}}var ve={encode(e,n=new E){e.endpointId!==""&&n.uint32(10).string(e.endpointId);for(let t of e.trackIds)n.uint32(18).string(t);return n},decode(e,n){let t=e instanceof c?e:new c(e),i=n===void 0?t.len:t.pos+n,r=ft();for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{if(a!==10)break;r.endpointId=t.string();continue}case 2:{if(a!==18)break;r.trackIds.push(t.string());continue}}if((a&7)===4||a===0)break;t.skip(a&7)}return r},fromJSON(e){return{endpointId:o(e.endpointId)?globalThis.String(e.endpointId):"",trackIds:globalThis.Array.isArray(e?.trackIds)?e.trackIds.map(n=>globalThis.String(n)):[]}},toJSON(e){let n={};return e.endpointId!==""&&(n.endpointId=e.endpointId),e.trackIds?.length&&(n.trackIds=e.trackIds),n},create(e){return ve.fromPartial(e??{})},fromPartial(e){let n=ft();return n.endpointId=e.endpointId??"",n.trackIds=e.trackIds?.map(t=>t)||[],n}};function kt(){return{endpointId:"",metadataJson:""}}var Te={encode(e,n=new E){return e.endpointId!==""&&n.uint32(10).string(e.endpointId),e.metadataJson!==""&&n.uint32(18).string(e.metadataJson),n},decode(e,n){let t=e instanceof c?e:new c(e),i=n===void 0?t.len:t.pos+n,r=kt();for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{if(a!==10)break;r.endpointId=t.string();continue}case 2:{if(a!==18)break;r.metadataJson=t.string();continue}}if((a&7)===4||a===0)break;t.skip(a&7)}return r},fromJSON(e){return{endpointId:o(e.endpointId)?globalThis.String(e.endpointId):"",metadataJson:o(e.metadataJson)?globalThis.String(e.metadataJson):""}},toJSON(e){let n={};return e.endpointId!==""&&(n.endpointId=e.endpointId),e.metadataJson!==""&&(n.metadataJson=e.metadataJson),n},create(e){return Te.fromPartial(e??{})},fromPartial(e){let n=kt();return n.endpointId=e.endpointId??"",n.metadataJson=e.metadataJson??"",n}};function pt(){return{endpointId:"",endpointIdToEndpoint:{},iceServers:[]}}var Ee={encode(e,n=new E){e.endpointId!==""&&n.uint32(10).string(e.endpointId),Object.entries(e.endpointIdToEndpoint).forEach(([t,i])=>{Mn.encode({key:t,value:i},n.uint32(18).fork()).join()});for(let t of e.iceServers)le.encode(t,n.uint32(26).fork()).join();return n},decode(e,n){let t=e instanceof c?e:new c(e),i=n===void 0?t.len:t.pos+n,r=pt();for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{if(a!==10)break;r.endpointId=t.string();continue}case 2:{if(a!==18)break;let d=Mn.decode(t,t.uint32());d.value!==void 0&&(r.endpointIdToEndpoint[d.key]=d.value);continue}case 3:{if(a!==26)break;r.iceServers.push(le.decode(t,t.uint32()));continue}}if((a&7)===4||a===0)break;t.skip(a&7)}return r},fromJSON(e){return{endpointId:o(e.endpointId)?globalThis.String(e.endpointId):"",endpointIdToEndpoint:on(e.endpointIdToEndpoint)?Object.entries(e.endpointIdToEndpoint).reduce((n,[t,i])=>(n[t]=A.fromJSON(i),n),{}):{},iceServers:globalThis.Array.isArray(e?.iceServers)?e.iceServers.map(n=>le.fromJSON(n)):[]}},toJSON(e){let n={};if(e.endpointId!==""&&(n.endpointId=e.endpointId),e.endpointIdToEndpoint){let t=Object.entries(e.endpointIdToEndpoint);t.length>0&&(n.endpointIdToEndpoint={},t.forEach(([i,r])=>{n.endpointIdToEndpoint[i]=A.toJSON(r)}))}return e.iceServers?.length&&(n.iceServers=e.iceServers.map(t=>le.toJSON(t))),n},create(e){return Ee.fromPartial(e??{})},fromPartial(e){let n=pt();return n.endpointId=e.endpointId??"",n.endpointIdToEndpoint=Object.entries(e.endpointIdToEndpoint??{}).reduce((t,[i,r])=>(r!==void 0&&(t[i]=A.fromPartial(r)),t),{}),n.iceServers=e.iceServers?.map(t=>le.fromPartial(t))||[],n}};function vt(){return{key:"",value:void 0}}var Mn={encode(e,n=new E){return e.key!==""&&n.uint32(10).string(e.key),e.value!==void 0&&A.encode(e.value,n.uint32(18).fork()).join(),n},decode(e,n){let t=e instanceof c?e:new c(e),i=n===void 0?t.len:t.pos+n,r=vt();for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{if(a!==10)break;r.key=t.string();continue}case 2:{if(a!==18)break;r.value=A.decode(t,t.uint32());continue}}if((a&7)===4||a===0)break;t.skip(a&7)}return r},fromJSON(e){return{key:o(e.key)?globalThis.String(e.key):"",value:o(e.value)?A.fromJSON(e.value):void 0}},toJSON(e){let n={};return e.key!==""&&(n.key=e.key),e.value!==void 0&&(n.value=A.toJSON(e.value)),n},create(e){return Mn.fromPartial(e??{})},fromPartial(e){let n=vt();return n.key=e.key??"",n.value=e.value!==void 0&&e.value!==null?A.fromPartial(e.value):void 0,n}};function Tt(){return{endpointId:""}}var he={encode(e,n=new E){return e.endpointId!==""&&n.uint32(10).string(e.endpointId),n},decode(e,n){let t=e instanceof c?e:new c(e),i=n===void 0?t.len:t.pos+n,r=Tt();for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{if(a!==10)break;r.endpointId=t.string();continue}}if((a&7)===4||a===0)break;t.skip(a&7)}return r},fromJSON(e){return{endpointId:o(e.endpointId)?globalThis.String(e.endpointId):""}},toJSON(e){let n={};return e.endpointId!==""&&(n.endpointId=e.endpointId),n},create(e){return he.fromPartial(e??{})},fromPartial(e){let n=Tt();return n.endpointId=e.endpointId??"",n}};function Et(){return{message:""}}var Ie={encode(e,n=new E){return e.message!==""&&n.uint32(10).string(e.message),n},decode(e,n){let t=e instanceof c?e:new c(e),i=n===void 0?t.len:t.pos+n,r=Et();for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{if(a!==10)break;r.message=t.string();continue}}if((a&7)===4||a===0)break;t.skip(a&7)}return r},fromJSON(e){return{message:o(e.message)?globalThis.String(e.message):""}},toJSON(e){let n={};return e.message!==""&&(n.message=e.message),n},create(e){return Ie.fromPartial(e??{})},fromPartial(e){let n=Et();return n.message=e.message??"",n}};function ht(){return{tracksTypes:void 0}}var Me={encode(e,n=new E){return e.tracksTypes!==void 0&&me.encode(e.tracksTypes,n.uint32(10).fork()).join(),n},decode(e,n){let t=e instanceof c?e:new c(e),i=n===void 0?t.len:t.pos+n,r=ht();for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{if(a!==10)break;r.tracksTypes=me.decode(t,t.uint32());continue}}if((a&7)===4||a===0)break;t.skip(a&7)}return r},fromJSON(e){return{tracksTypes:o(e.tracksTypes)?me.fromJSON(e.tracksTypes):void 0}},toJSON(e){let n={};return e.tracksTypes!==void 0&&(n.tracksTypes=me.toJSON(e.tracksTypes)),n},create(e){return Me.fromPartial(e??{})},fromPartial(e){let n=ht();return n.tracksTypes=e.tracksTypes!==void 0&&e.tracksTypes!==null?me.fromPartial(e.tracksTypes):void 0,n}};function It(){return{audio:0,video:0}}var me={encode(e,n=new E){return e.audio!==0&&n.uint32(8).int32(e.audio),e.video!==0&&n.uint32(16).int32(e.video),n},decode(e,n){let t=e instanceof c?e:new c(e),i=n===void 0?t.len:t.pos+n,r=It();for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{if(a!==8)break;r.audio=t.int32();continue}case 2:{if(a!==16)break;r.video=t.int32();continue}}if((a&7)===4||a===0)break;t.skip(a&7)}return r},fromJSON(e){return{audio:o(e.audio)?globalThis.Number(e.audio):0,video:o(e.video)?globalThis.Number(e.video):0}},toJSON(e){let n={};return e.audio!==0&&(n.audio=Math.round(e.audio)),e.video!==0&&(n.video=Math.round(e.video)),n},create(e){return me.fromPartial(e??{})},fromPartial(e){let n=It();return n.audio=e.audio??0,n.video=e.video??0,n}};function Mt(){return{sdp:"",midToTrackId:{}}}var ye={encode(e,n=new E){return e.sdp!==""&&n.uint32(10).string(e.sdp),Object.entries(e.midToTrackId).forEach(([t,i])=>{mn.encode({key:t,value:i},n.uint32(18).fork()).join()}),n},decode(e,n){let t=e instanceof c?e:new c(e),i=n===void 0?t.len:t.pos+n,r=Mt();for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{if(a!==10)break;r.sdp=t.string();continue}case 2:{if(a!==18)break;let d=mn.decode(t,t.uint32());d.value!==void 0&&(r.midToTrackId[d.key]=d.value);continue}}if((a&7)===4||a===0)break;t.skip(a&7)}return r},fromJSON(e){return{sdp:o(e.sdp)?globalThis.String(e.sdp):"",midToTrackId:on(e.midToTrackId)?Object.entries(e.midToTrackId).reduce((n,[t,i])=>(n[t]=String(i),n),{}):{}}},toJSON(e){let n={};if(e.sdp!==""&&(n.sdp=e.sdp),e.midToTrackId){let t=Object.entries(e.midToTrackId);t.length>0&&(n.midToTrackId={},t.forEach(([i,r])=>{n.midToTrackId[i]=r}))}return n},create(e){return ye.fromPartial(e??{})},fromPartial(e){let n=Mt();return n.sdp=e.sdp??"",n.midToTrackId=Object.entries(e.midToTrackId??{}).reduce((t,[i,r])=>(r!==void 0&&(t[i]=globalThis.String(r)),t),{}),n}};function mt(){return{key:"",value:""}}var mn={encode(e,n=new E){return e.key!==""&&n.uint32(10).string(e.key),e.value!==""&&n.uint32(18).string(e.value),n},decode(e,n){let t=e instanceof c?e:new c(e),i=n===void 0?t.len:t.pos+n,r=mt();for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{if(a!==10)break;r.key=t.string();continue}case 2:{if(a!==18)break;r.value=t.string();continue}}if((a&7)===4||a===0)break;t.skip(a&7)}return r},fromJSON(e){return{key:o(e.key)?globalThis.String(e.key):"",value:o(e.value)?globalThis.String(e.value):""}},toJSON(e){let n={};return e.key!==""&&(n.key=e.key),e.value!==""&&(n.value=e.value),n},create(e){return mn.fromPartial(e??{})},fromPartial(e){let n=mt();return n.key=e.key??"",n.value=e.value??"",n}};function yt(){return{trackId:"",status:0}}var ge={encode(e,n=new E){return e.trackId!==""&&n.uint32(10).string(e.trackId),e.status!==0&&n.uint32(16).int32(e.status),n},decode(e,n){let t=e instanceof c?e:new c(e),i=n===void 0?t.len:t.pos+n,r=yt();for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{if(a!==10)break;r.trackId=t.string();continue}case 2:{if(a!==16)break;r.status=t.int32();continue}}if((a&7)===4||a===0)break;t.skip(a&7)}return r},fromJSON(e){return{trackId:o(e.trackId)?globalThis.String(e.trackId):"",status:o(e.status)?Da(e.status):0}},toJSON(e){let n={};return e.trackId!==""&&(n.trackId=e.trackId),e.status!==0&&(n.status=Va(e.status)),n},create(e){return ge.fromPartial(e??{})},fromPartial(e){let n=yt();return n.trackId=e.trackId??"",n.status=e.status??0,n}};function gt(){return{endpointId:"",trackId:"",variant:0}}var Se={encode(e,n=new E){return e.endpointId!==""&&n.uint32(10).string(e.endpointId),e.trackId!==""&&n.uint32(18).string(e.trackId),e.variant!==0&&n.uint32(24).int32(e.variant),n},decode(e,n){let t=e instanceof c?e:new c(e),i=n===void 0?t.len:t.pos+n,r=gt();for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{if(a!==10)break;r.endpointId=t.string();continue}case 2:{if(a!==18)break;r.trackId=t.string();continue}case 3:{if(a!==24)break;r.variant=t.int32();continue}}if((a&7)===4||a===0)break;t.skip(a&7)}return r},fromJSON(e){return{endpointId:o(e.endpointId)?globalThis.String(e.endpointId):"",trackId:o(e.trackId)?globalThis.String(e.trackId):"",variant:o(e.variant)?w(e.variant):0}},toJSON(e){let n={};return e.endpointId!==""&&(n.endpointId=e.endpointId),e.trackId!==""&&(n.trackId=e.trackId),e.variant!==0&&(n.variant=N(e.variant)),n},create(e){return Se.fromPartial(e??{})},fromPartial(e){let n=gt();return n.endpointId=e.endpointId??"",n.trackId=e.trackId??"",n.variant=e.variant??0,n}};function St(){return{endpointId:"",trackId:"",variant:0}}var _e={encode(e,n=new E){return e.endpointId!==""&&n.uint32(10).string(e.endpointId),e.trackId!==""&&n.uint32(18).string(e.trackId),e.variant!==0&&n.uint32(24).int32(e.variant),n},decode(e,n){let t=e instanceof c?e:new c(e),i=n===void 0?t.len:t.pos+n,r=St();for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{if(a!==10)break;r.endpointId=t.string();continue}case 2:{if(a!==18)break;r.trackId=t.string();continue}case 3:{if(a!==24)break;r.variant=t.int32();continue}}if((a&7)===4||a===0)break;t.skip(a&7)}return r},fromJSON(e){return{endpointId:o(e.endpointId)?globalThis.String(e.endpointId):"",trackId:o(e.trackId)?globalThis.String(e.trackId):"",variant:o(e.variant)?w(e.variant):0}},toJSON(e){let n={};return e.endpointId!==""&&(n.endpointId=e.endpointId),e.trackId!==""&&(n.trackId=e.trackId),e.variant!==0&&(n.variant=N(e.variant)),n},create(e){return _e.fromPartial(e??{})},fromPartial(e){let n=St();return n.endpointId=e.endpointId??"",n.trackId=e.trackId??"",n.variant=e.variant??0,n}};function _t(){return{endpointId:"",trackId:"",variant:0}}var Oe={encode(e,n=new E){return e.endpointId!==""&&n.uint32(10).string(e.endpointId),e.trackId!==""&&n.uint32(18).string(e.trackId),e.variant!==0&&n.uint32(24).int32(e.variant),n},decode(e,n){let t=e instanceof c?e:new c(e),i=n===void 0?t.len:t.pos+n,r=_t();for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{if(a!==10)break;r.endpointId=t.string();continue}case 2:{if(a!==18)break;r.trackId=t.string();continue}case 3:{if(a!==24)break;r.variant=t.int32();continue}}if((a&7)===4||a===0)break;t.skip(a&7)}return r},fromJSON(e){return{endpointId:o(e.endpointId)?globalThis.String(e.endpointId):"",trackId:o(e.trackId)?globalThis.String(e.trackId):"",variant:o(e.variant)?w(e.variant):0}},toJSON(e){let n={};return e.endpointId!==""&&(n.endpointId=e.endpointId),e.trackId!==""&&(n.trackId=e.trackId),e.variant!==0&&(n.variant=N(e.variant)),n},create(e){return Oe.fromPartial(e??{})},fromPartial(e){let n=_t();return n.endpointId=e.endpointId??"",n.trackId=e.trackId??"",n.variant=e.variant??0,n}};function on(e){return typeof e=="object"&&e!==null}function o(e){return e!=null}function Ua(e){switch(e){case 0:case"ROOM_TYPE_UNSPECIFIED":return 0;case 1:case"ROOM_TYPE_CONFERENCE":return 1;case 2:case"ROOM_TYPE_AUDIO_ONLY":return 2;case 3:case"ROOM_TYPE_LIVESTREAM":return 3;case-1:case"UNRECOGNIZED":default:return-1}}function La(e){switch(e){case 0:return"ROOM_TYPE_UNSPECIFIED";case 1:return"ROOM_TYPE_CONFERENCE";case 2:return"ROOM_TYPE_AUDIO_ONLY";case 3:return"ROOM_TYPE_LIVESTREAM";case-1:default:return"UNRECOGNIZED"}}function Fa(e){switch(e){case 0:case"STATUS_UNSPECIFIED":return 0;case 1:case"STATUS_UP_TO_DATE":return 1;case 2:case"STATUS_DEPRECATED":return 2;case 3:case"STATUS_UNSUPPORTED":return 3;case-1:case"UNRECOGNIZED":default:return-1}}function Wa(e){switch(e){case 0:return"STATUS_UNSPECIFIED";case 1:return"STATUS_UP_TO_DATE";case 2:return"STATUS_DEPRECATED";case 3:return"STATUS_UNSUPPORTED";case-1:default:return"UNRECOGNIZED"}}function Ot(){return{authenticated:void 0,authRequest:void 0,mediaEvent:void 0,rtcStatsReport:void 0,peerMediaEvent:void 0,serverMediaEvent:void 0}}var Je={encode(e,n=new Re){return e.authenticated!==void 0&&Pe.encode(e.authenticated,n.uint32(10).fork()).join(),e.authRequest!==void 0&&Ce.encode(e.authRequest,n.uint32(18).fork()).join(),e.mediaEvent!==void 0&&Ne.encode(e.mediaEvent,n.uint32(26).fork()).join(),e.rtcStatsReport!==void 0&&we.encode(e.rtcStatsReport,n.uint32(34).fork()).join(),e.peerMediaEvent!==void 0&&x.encode(e.peerMediaEvent,n.uint32(42).fork()).join(),e.serverMediaEvent!==void 0&&B.encode(e.serverMediaEvent,n.uint32(50).fork()).join(),n},decode(e,n){let t=e instanceof P?e:new P(e),i=n===void 0?t.len:t.pos+n,r=Ot();for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{if(a!==10)break;r.authenticated=Pe.decode(t,t.uint32());continue}case 2:{if(a!==18)break;r.authRequest=Ce.decode(t,t.uint32());continue}case 3:{if(a!==26)break;r.mediaEvent=Ne.decode(t,t.uint32());continue}case 4:{if(a!==34)break;r.rtcStatsReport=we.decode(t,t.uint32());continue}case 5:{if(a!==42)break;r.peerMediaEvent=x.decode(t,t.uint32());continue}case 6:{if(a!==50)break;r.serverMediaEvent=B.decode(t,t.uint32());continue}}if((a&7)===4||a===0)break;t.skip(a&7)}return r},fromJSON(e){return{authenticated:O(e.authenticated)?Pe.fromJSON(e.authenticated):void 0,authRequest:O(e.authRequest)?Ce.fromJSON(e.authRequest):void 0,mediaEvent:O(e.mediaEvent)?Ne.fromJSON(e.mediaEvent):void 0,rtcStatsReport:O(e.rtcStatsReport)?we.fromJSON(e.rtcStatsReport):void 0,peerMediaEvent:O(e.peerMediaEvent)?x.fromJSON(e.peerMediaEvent):void 0,serverMediaEvent:O(e.serverMediaEvent)?B.fromJSON(e.serverMediaEvent):void 0}},toJSON(e){let n={};return e.authenticated!==void 0&&(n.authenticated=Pe.toJSON(e.authenticated)),e.authRequest!==void 0&&(n.authRequest=Ce.toJSON(e.authRequest)),e.mediaEvent!==void 0&&(n.mediaEvent=Ne.toJSON(e.mediaEvent)),e.rtcStatsReport!==void 0&&(n.rtcStatsReport=we.toJSON(e.rtcStatsReport)),e.peerMediaEvent!==void 0&&(n.peerMediaEvent=x.toJSON(e.peerMediaEvent)),e.serverMediaEvent!==void 0&&(n.serverMediaEvent=B.toJSON(e.serverMediaEvent)),n},create(e){return Je.fromPartial(e??{})},fromPartial(e){let n=Ot();return n.authenticated=e.authenticated!==void 0&&e.authenticated!==null?Pe.fromPartial(e.authenticated):void 0,n.authRequest=e.authRequest!==void 0&&e.authRequest!==null?Ce.fromPartial(e.authRequest):void 0,n.mediaEvent=e.mediaEvent!==void 0&&e.mediaEvent!==null?Ne.fromPartial(e.mediaEvent):void 0,n.rtcStatsReport=e.rtcStatsReport!==void 0&&e.rtcStatsReport!==null?we.fromPartial(e.rtcStatsReport):void 0,n.peerMediaEvent=e.peerMediaEvent!==void 0&&e.peerMediaEvent!==null?x.fromPartial(e.peerMediaEvent):void 0,n.serverMediaEvent=e.serverMediaEvent!==void 0&&e.serverMediaEvent!==null?B.fromPartial(e.serverMediaEvent):void 0,n}};function bt(){return{status:0,message:""}}var be={encode(e,n=new Re){return e.status!==0&&n.uint32(8).int32(e.status),e.message!==""&&n.uint32(18).string(e.message),n},decode(e,n){let t=e instanceof P?e:new P(e),i=n===void 0?t.len:t.pos+n,r=bt();for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{if(a!==8)break;r.status=t.int32();continue}case 2:{if(a!==18)break;r.message=t.string();continue}}if((a&7)===4||a===0)break;t.skip(a&7)}return r},fromJSON(e){return{status:O(e.status)?Fa(e.status):0,message:O(e.message)?globalThis.String(e.message):""}},toJSON(e){let n={};return e.status!==0&&(n.status=Wa(e.status)),e.message!==""&&(n.message=e.message),n},create(e){return be.fromPartial(e??{})},fromPartial(e){let n=bt();return n.status=e.status??0,n.message=e.message??"",n}};function Pt(){return{roomType:0,sdkDeprecation:void 0}}var Pe={encode(e,n=new Re){return e.roomType!==0&&n.uint32(8).int32(e.roomType),e.sdkDeprecation!==void 0&&be.encode(e.sdkDeprecation,n.uint32(18).fork()).join(),n},decode(e,n){let t=e instanceof P?e:new P(e),i=n===void 0?t.len:t.pos+n,r=Pt();for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{if(a!==8)break;r.roomType=t.int32();continue}case 2:{if(a!==18)break;r.sdkDeprecation=be.decode(t,t.uint32());continue}}if((a&7)===4||a===0)break;t.skip(a&7)}return r},fromJSON(e){return{roomType:O(e.roomType)?Ua(e.roomType):0,sdkDeprecation:O(e.sdkDeprecation)?be.fromJSON(e.sdkDeprecation):void 0}},toJSON(e){let n={};return e.roomType!==0&&(n.roomType=La(e.roomType)),e.sdkDeprecation!==void 0&&(n.sdkDeprecation=be.toJSON(e.sdkDeprecation)),n},create(e){return Pe.fromPartial(e??{})},fromPartial(e){let n=Pt();return n.roomType=e.roomType??0,n.sdkDeprecation=e.sdkDeprecation!==void 0&&e.sdkDeprecation!==null?be.fromPartial(e.sdkDeprecation):void 0,n}};function Ct(){return{token:"",sdkVersion:""}}var Ce={encode(e,n=new Re){return e.token!==""&&n.uint32(10).string(e.token),e.sdkVersion!==""&&n.uint32(18).string(e.sdkVersion),n},decode(e,n){let t=e instanceof P?e:new P(e),i=n===void 0?t.len:t.pos+n,r=Ct();for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{if(a!==10)break;r.token=t.string();continue}case 2:{if(a!==18)break;r.sdkVersion=t.string();continue}}if((a&7)===4||a===0)break;t.skip(a&7)}return r},fromJSON(e){return{token:O(e.token)?globalThis.String(e.token):"",sdkVersion:O(e.sdkVersion)?globalThis.String(e.sdkVersion):""}},toJSON(e){let n={};return e.token!==""&&(n.token=e.token),e.sdkVersion!==""&&(n.sdkVersion=e.sdkVersion),n},create(e){return Ce.fromPartial(e??{})},fromPartial(e){let n=Ct();return n.token=e.token??"",n.sdkVersion=e.sdkVersion??"",n}};function wt(){return{data:""}}var we={encode(e,n=new Re){return e.data!==""&&n.uint32(10).string(e.data),n},decode(e,n){let t=e instanceof P?e:new P(e),i=n===void 0?t.len:t.pos+n,r=wt();for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{if(a!==10)break;r.data=t.string();continue}}if((a&7)===4||a===0)break;t.skip(a&7)}return r},fromJSON(e){return{data:O(e.data)?globalThis.String(e.data):""}},toJSON(e){let n={};return e.data!==""&&(n.data=e.data),n},create(e){return we.fromPartial(e??{})},fromPartial(e){let n=wt();return n.data=e.data??"",n}};function Nt(){return{data:""}}var Ne={encode(e,n=new Re){return e.data!==""&&n.uint32(10).string(e.data),n},decode(e,n){let t=e instanceof P?e:new P(e),i=n===void 0?t.len:t.pos+n,r=Nt();for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{if(a!==10)break;r.data=t.string();continue}}if((a&7)===4||a===0)break;t.skip(a&7)}return r},fromJSON(e){return{data:O(e.data)?globalThis.String(e.data):""}},toJSON(e){let n={};return e.data!==""&&(n.data=e.data),n},create(e){return Ne.fromPartial(e??{})},fromPartial(e){let n=Nt();return n.data=e.data??"",n}};function O(e){return e!=null}import{BinaryReader as v,BinaryWriter as g}from"@bufbuild/protobuf/wire";import{BinaryReader as Rt,BinaryWriter as $a}from"@bufbuild/protobuf/wire";import qa from"events";import{v4 as Ka}from"uuid";import{EventEmitter as Ya}from"events";import{BinaryReader as u,BinaryWriter as h}from"@bufbuild/protobuf/wire";import ja from"events";var yn="[FISHJAM]",Jn=e=>({debug:(n,...t)=>{e&&console.debug(yn,n,...t)},warn:(n,...t)=>{e&&console.warn(yn,n,...t)},error:(n,...t)=>{e&&console.error(yn,n,...t)}}),Ha=(e=>(e[e.VARIANT_UNSPECIFIED=0]="VARIANT_UNSPECIFIED",e[e.VARIANT_LOW=1]="VARIANT_LOW",e[e.VARIANT_MEDIUM=2]="VARIANT_MEDIUM",e[e.VARIANT_HIGH=3]="VARIANT_HIGH",e[e.UNRECOGNIZED=-1]="UNRECOGNIZED",e))(Ha||{});function V(e){switch(e){case 0:case"VARIANT_UNSPECIFIED":return 0;case 1:case"VARIANT_LOW":return 1;case 2:case"VARIANT_MEDIUM":return 2;case 3:case"VARIANT_HIGH":return 3;case-1:case"UNRECOGNIZED":default:return-1}}function U(e){switch(e){case 0:return"VARIANT_UNSPECIFIED";case 1:return"VARIANT_LOW";case 2:return"VARIANT_MEDIUM";case 3:return"VARIANT_HIGH";case-1:default:return"UNRECOGNIZED"}}function Jt(){return{candidate:"",sdpMLineIndex:0,sdpMid:"",usernameFragment:""}}var C={encode(e,n=new $a){return e.candidate!==""&&n.uint32(10).string(e.candidate),e.sdpMLineIndex!==0&&n.uint32(16).int32(e.sdpMLineIndex),e.sdpMid!==""&&n.uint32(26).string(e.sdpMid),e.usernameFragment!==""&&n.uint32(34).string(e.usernameFragment),n},decode(e,n){let t=e instanceof Rt?e:new Rt(e),i=n===void 0?t.len:t.pos+n,r=Jt();for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{if(a!==10)break;r.candidate=t.string();continue}case 2:{if(a!==16)break;r.sdpMLineIndex=t.int32();continue}case 3:{if(a!==26)break;r.sdpMid=t.string();continue}case 4:{if(a!==34)break;r.usernameFragment=t.string();continue}}if((a&7)===4||a===0)break;t.skip(a&7)}return r},fromJSON(e){return{candidate:sn(e.candidate)?globalThis.String(e.candidate):"",sdpMLineIndex:sn(e.sdpMLineIndex)?globalThis.Number(e.sdpMLineIndex):0,sdpMid:sn(e.sdpMid)?globalThis.String(e.sdpMid):"",usernameFragment:sn(e.usernameFragment)?globalThis.String(e.usernameFragment):""}},toJSON(e){let n={};return e.candidate!==""&&(n.candidate=e.candidate),e.sdpMLineIndex!==0&&(n.sdpMLineIndex=Math.round(e.sdpMLineIndex)),e.sdpMid!==""&&(n.sdpMid=e.sdpMid),e.usernameFragment!==""&&(n.usernameFragment=e.usernameFragment),n},create(e){return C.fromPartial(e??{})},fromPartial(e){let n=Jt();return n.candidate=e.candidate??"",n.sdpMLineIndex=e.sdpMLineIndex??0,n.sdpMid=e.sdpMid??"",n.usernameFragment=e.usernameFragment??"",n}};function sn(e){return e!=null}function xt(){return{connect:void 0,disconnect:void 0,updateEndpointMetadata:void 0,updateTrackMetadata:void 0,renegotiateTracks:void 0,candidate:void 0,sdpOffer:void 0,trackBitrates:void 0,enableTrackVariant:void 0,disableTrackVariant:void 0,setTargetTrackVariant:void 0,unmuteTrack:void 0}}var Xe={encode(e,n=new g){return e.connect!==void 0&&$.encode(e.connect,n.uint32(10).fork()).join(),e.disconnect!==void 0&&H.encode(e.disconnect,n.uint32(18).fork()).join(),e.updateEndpointMetadata!==void 0&&q.encode(e.updateEndpointMetadata,n.uint32(26).fork()).join(),e.updateTrackMetadata!==void 0&&F.encode(e.updateTrackMetadata,n.uint32(34).fork()).join(),e.renegotiateTracks!==void 0&&R.encode(e.renegotiateTracks,n.uint32(42).fork()).join(),e.candidate!==void 0&&C.encode(e.candidate,n.uint32(50).fork()).join(),e.sdpOffer!==void 0&&K.encode(e.sdpOffer,n.uint32(58).fork()).join(),e.trackBitrates!==void 0&&y.encode(e.trackBitrates,n.uint32(66).fork()).join(),e.enableTrackVariant!==void 0&&Y.encode(e.enableTrackVariant,n.uint32(74).fork()).join(),e.disableTrackVariant!==void 0&&G.encode(e.disableTrackVariant,n.uint32(82).fork()).join(),e.setTargetTrackVariant!==void 0&&Z.encode(e.setTargetTrackVariant,n.uint32(90).fork()).join(),e.unmuteTrack!==void 0&&z.encode(e.unmuteTrack,n.uint32(98).fork()).join(),n},decode(e,n){let t=e instanceof v?e:new v(e),i=n===void 0?t.len:t.pos+n,r=xt();for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{if(a!==10)break;r.connect=$.decode(t,t.uint32());continue}case 2:{if(a!==18)break;r.disconnect=H.decode(t,t.uint32());continue}case 3:{if(a!==26)break;r.updateEndpointMetadata=q.decode(t,t.uint32());continue}case 4:{if(a!==34)break;r.updateTrackMetadata=F.decode(t,t.uint32());continue}case 5:{if(a!==42)break;r.renegotiateTracks=R.decode(t,t.uint32());continue}case 6:{if(a!==50)break;r.candidate=C.decode(t,t.uint32());continue}case 7:{if(a!==58)break;r.sdpOffer=K.decode(t,t.uint32());continue}case 8:{if(a!==66)break;r.trackBitrates=y.decode(t,t.uint32());continue}case 9:{if(a!==74)break;r.enableTrackVariant=Y.decode(t,t.uint32());continue}case 10:{if(a!==82)break;r.disableTrackVariant=G.decode(t,t.uint32());continue}case 11:{if(a!==90)break;r.setTargetTrackVariant=Z.decode(t,t.uint32());continue}case 12:{if(a!==98)break;r.unmuteTrack=z.decode(t,t.uint32());continue}}if((a&7)===4||a===0)break;t.skip(a&7)}return r},fromJSON(e){return{connect:k(e.connect)?$.fromJSON(e.connect):void 0,disconnect:k(e.disconnect)?H.fromJSON(e.disconnect):void 0,updateEndpointMetadata:k(e.updateEndpointMetadata)?q.fromJSON(e.updateEndpointMetadata):void 0,updateTrackMetadata:k(e.updateTrackMetadata)?F.fromJSON(e.updateTrackMetadata):void 0,renegotiateTracks:k(e.renegotiateTracks)?R.fromJSON(e.renegotiateTracks):void 0,candidate:k(e.candidate)?C.fromJSON(e.candidate):void 0,sdpOffer:k(e.sdpOffer)?K.fromJSON(e.sdpOffer):void 0,trackBitrates:k(e.trackBitrates)?y.fromJSON(e.trackBitrates):void 0,enableTrackVariant:k(e.enableTrackVariant)?Y.fromJSON(e.enableTrackVariant):void 0,disableTrackVariant:k(e.disableTrackVariant)?G.fromJSON(e.disableTrackVariant):void 0,setTargetTrackVariant:k(e.setTargetTrackVariant)?Z.fromJSON(e.setTargetTrackVariant):void 0,unmuteTrack:k(e.unmuteTrack)?z.fromJSON(e.unmuteTrack):void 0}},toJSON(e){let n={};return e.connect!==void 0&&(n.connect=$.toJSON(e.connect)),e.disconnect!==void 0&&(n.disconnect=H.toJSON(e.disconnect)),e.updateEndpointMetadata!==void 0&&(n.updateEndpointMetadata=q.toJSON(e.updateEndpointMetadata)),e.updateTrackMetadata!==void 0&&(n.updateTrackMetadata=F.toJSON(e.updateTrackMetadata)),e.renegotiateTracks!==void 0&&(n.renegotiateTracks=R.toJSON(e.renegotiateTracks)),e.candidate!==void 0&&(n.candidate=C.toJSON(e.candidate)),e.sdpOffer!==void 0&&(n.sdpOffer=K.toJSON(e.sdpOffer)),e.trackBitrates!==void 0&&(n.trackBitrates=y.toJSON(e.trackBitrates)),e.enableTrackVariant!==void 0&&(n.enableTrackVariant=Y.toJSON(e.enableTrackVariant)),e.disableTrackVariant!==void 0&&(n.disableTrackVariant=G.toJSON(e.disableTrackVariant)),e.setTargetTrackVariant!==void 0&&(n.setTargetTrackVariant=Z.toJSON(e.setTargetTrackVariant)),e.unmuteTrack!==void 0&&(n.unmuteTrack=z.toJSON(e.unmuteTrack)),n},create(e){return Xe.fromPartial(e??{})},fromPartial(e){let n=xt();return n.connect=e.connect!==void 0&&e.connect!==null?$.fromPartial(e.connect):void 0,n.disconnect=e.disconnect!==void 0&&e.disconnect!==null?H.fromPartial(e.disconnect):void 0,n.updateEndpointMetadata=e.updateEndpointMetadata!==void 0&&e.updateEndpointMetadata!==null?q.fromPartial(e.updateEndpointMetadata):void 0,n.updateTrackMetadata=e.updateTrackMetadata!==void 0&&e.updateTrackMetadata!==null?F.fromPartial(e.updateTrackMetadata):void 0,n.renegotiateTracks=e.renegotiateTracks!==void 0&&e.renegotiateTracks!==null?R.fromPartial(e.renegotiateTracks):void 0,n.candidate=e.candidate!==void 0&&e.candidate!==null?C.fromPartial(e.candidate):void 0,n.sdpOffer=e.sdpOffer!==void 0&&e.sdpOffer!==null?K.fromPartial(e.sdpOffer):void 0,n.trackBitrates=e.trackBitrates!==void 0&&e.trackBitrates!==null?y.fromPartial(e.trackBitrates):void 0,n.enableTrackVariant=e.enableTrackVariant!==void 0&&e.enableTrackVariant!==null?Y.fromPartial(e.enableTrackVariant):void 0,n.disableTrackVariant=e.disableTrackVariant!==void 0&&e.disableTrackVariant!==null?G.fromPartial(e.disableTrackVariant):void 0,n.setTargetTrackVariant=e.setTargetTrackVariant!==void 0&&e.setTargetTrackVariant!==null?Z.fromPartial(e.setTargetTrackVariant):void 0,n.unmuteTrack=e.unmuteTrack!==void 0&&e.unmuteTrack!==null?z.fromPartial(e.unmuteTrack):void 0,n}};function At(){return{variant:0,bitrate:0}}var xe={encode(e,n=new g){return e.variant!==0&&n.uint32(8).int32(e.variant),e.bitrate!==0&&n.uint32(16).int32(e.bitrate),n},decode(e,n){let t=e instanceof v?e:new v(e),i=n===void 0?t.len:t.pos+n,r=At();for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{if(a!==8)break;r.variant=t.int32();continue}case 2:{if(a!==16)break;r.bitrate=t.int32();continue}}if((a&7)===4||a===0)break;t.skip(a&7)}return r},fromJSON(e){return{variant:k(e.variant)?V(e.variant):0,bitrate:k(e.bitrate)?globalThis.Number(e.bitrate):0}},toJSON(e){let n={};return e.variant!==0&&(n.variant=U(e.variant)),e.bitrate!==0&&(n.bitrate=Math.round(e.bitrate)),n},create(e){return xe.fromPartial(e??{})},fromPartial(e){let n=At();return n.variant=e.variant??0,n.bitrate=e.bitrate??0,n}};function Bt(){return{metadataJson:""}}var $={encode(e,n=new g){return e.metadataJson!==""&&n.uint32(10).string(e.metadataJson),n},decode(e,n){let t=e instanceof v?e:new v(e),i=n===void 0?t.len:t.pos+n,r=Bt();for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{if(a!==10)break;r.metadataJson=t.string();continue}}if((a&7)===4||a===0)break;t.skip(a&7)}return r},fromJSON(e){return{metadataJson:k(e.metadataJson)?globalThis.String(e.metadataJson):""}},toJSON(e){let n={};return e.metadataJson!==""&&(n.metadataJson=e.metadataJson),n},create(e){return $.fromPartial(e??{})},fromPartial(e){let n=Bt();return n.metadataJson=e.metadataJson??"",n}};function Dt(){return{}}var H={encode(e,n=new g){return n},decode(e,n){let t=e instanceof v?e:new v(e),i=n===void 0?t.len:t.pos+n,r=Dt();for(;t.pos<i;){let a=t.uint32();if(a>>>3,(a&7)===4||a===0)break;t.skip(a&7)}return r},fromJSON(e){return{}},toJSON(e){return{}},create(e){return H.fromPartial(e??{})},fromPartial(e){return Dt()}};function Vt(){return{metadataJson:""}}var q={encode(e,n=new g){return e.metadataJson!==""&&n.uint32(10).string(e.metadataJson),n},decode(e,n){let t=e instanceof v?e:new v(e),i=n===void 0?t.len:t.pos+n,r=Vt();for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{if(a!==10)break;r.metadataJson=t.string();continue}}if((a&7)===4||a===0)break;t.skip(a&7)}return r},fromJSON(e){return{metadataJson:k(e.metadataJson)?globalThis.String(e.metadataJson):""}},toJSON(e){let n={};return e.metadataJson!==""&&(n.metadataJson=e.metadataJson),n},create(e){return q.fromPartial(e??{})},fromPartial(e){let n=Vt();return n.metadataJson=e.metadataJson??"",n}};function Ut(){return{trackId:"",metadataJson:""}}var F={encode(e,n=new g){return e.trackId!==""&&n.uint32(10).string(e.trackId),e.metadataJson!==""&&n.uint32(18).string(e.metadataJson),n},decode(e,n){let t=e instanceof v?e:new v(e),i=n===void 0?t.len:t.pos+n,r=Ut();for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{if(a!==10)break;r.trackId=t.string();continue}case 2:{if(a!==18)break;r.metadataJson=t.string();continue}}if((a&7)===4||a===0)break;t.skip(a&7)}return r},fromJSON(e){return{trackId:k(e.trackId)?globalThis.String(e.trackId):"",metadataJson:k(e.metadataJson)?globalThis.String(e.metadataJson):""}},toJSON(e){let n={};return e.trackId!==""&&(n.trackId=e.trackId),e.metadataJson!==""&&(n.metadataJson=e.metadataJson),n},create(e){return F.fromPartial(e??{})},fromPartial(e){let n=Ut();return n.trackId=e.trackId??"",n.metadataJson=e.metadataJson??"",n}};function Lt(){return{}}var R={encode(e,n=new g){return n},decode(e,n){let t=e instanceof v?e:new v(e),i=n===void 0?t.len:t.pos+n,r=Lt();for(;t.pos<i;){let a=t.uint32();if(a>>>3,(a&7)===4||a===0)break;t.skip(a&7)}return r},fromJSON(e){return{}},toJSON(e){return{}},create(e){return R.fromPartial(e??{})},fromPartial(e){return Lt()}};function Ft(){return{sdp:"",trackIdToMetadataJson:{},trackIdToBitrates:{},midToTrackId:{}}}var K={encode(e,n=new g){return e.sdp!==""&&n.uint32(10).string(e.sdp),Object.entries(e.trackIdToMetadataJson).forEach(([t,i])=>{On.encode({key:t,value:i},n.uint32(18).fork()).join()}),Object.entries(e.trackIdToBitrates).forEach(([t,i])=>{bn.encode({key:t,value:i},n.uint32(26).fork()).join()}),Object.entries(e.midToTrackId).forEach(([t,i])=>{Pn.encode({key:t,value:i},n.uint32(34).fork()).join()}),n},decode(e,n){let t=e instanceof v?e:new v(e),i=n===void 0?t.len:t.pos+n,r=Ft();for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{if(a!==10)break;r.sdp=t.string();continue}case 2:{if(a!==18)break;let d=On.decode(t,t.uint32());d.value!==void 0&&(r.trackIdToMetadataJson[d.key]=d.value);continue}case 3:{if(a!==26)break;let d=bn.decode(t,t.uint32());d.value!==void 0&&(r.trackIdToBitrates[d.key]=d.value);continue}case 4:{if(a!==34)break;let d=Pn.decode(t,t.uint32());d.value!==void 0&&(r.midToTrackId[d.key]=d.value);continue}}if((a&7)===4||a===0)break;t.skip(a&7)}return r},fromJSON(e){return{sdp:k(e.sdp)?globalThis.String(e.sdp):"",trackIdToMetadataJson:gn(e.trackIdToMetadataJson)?Object.entries(e.trackIdToMetadataJson).reduce((n,[t,i])=>(n[t]=String(i),n),{}):{},trackIdToBitrates:gn(e.trackIdToBitrates)?Object.entries(e.trackIdToBitrates).reduce((n,[t,i])=>(n[t]=y.fromJSON(i),n),{}):{},midToTrackId:gn(e.midToTrackId)?Object.entries(e.midToTrackId).reduce((n,[t,i])=>(n[t]=String(i),n),{}):{}}},toJSON(e){let n={};if(e.sdp!==""&&(n.sdp=e.sdp),e.trackIdToMetadataJson){let t=Object.entries(e.trackIdToMetadataJson);t.length>0&&(n.trackIdToMetadataJson={},t.forEach(([i,r])=>{n.trackIdToMetadataJson[i]=r}))}if(e.trackIdToBitrates){let t=Object.entries(e.trackIdToBitrates);t.length>0&&(n.trackIdToBitrates={},t.forEach(([i,r])=>{n.trackIdToBitrates[i]=y.toJSON(r)}))}if(e.midToTrackId){let t=Object.entries(e.midToTrackId);t.length>0&&(n.midToTrackId={},t.forEach(([i,r])=>{n.midToTrackId[i]=r}))}return n},create(e){return K.fromPartial(e??{})},fromPartial(e){let n=Ft();return n.sdp=e.sdp??"",n.trackIdToMetadataJson=Object.entries(e.trackIdToMetadataJson??{}).reduce((t,[i,r])=>(r!==void 0&&(t[i]=globalThis.String(r)),t),{}),n.trackIdToBitrates=Object.entries(e.trackIdToBitrates??{}).reduce((t,[i,r])=>(r!==void 0&&(t[i]=y.fromPartial(r)),t),{}),n.midToTrackId=Object.entries(e.midToTrackId??{}).reduce((t,[i,r])=>(r!==void 0&&(t[i]=globalThis.String(r)),t),{}),n}};function Wt(){return{key:"",value:""}}var On={encode(e,n=new g){return e.key!==""&&n.uint32(10).string(e.key),e.value!==""&&n.uint32(18).string(e.value),n},decode(e,n){let t=e instanceof v?e:new v(e),i=n===void 0?t.len:t.pos+n,r=Wt();for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{if(a!==10)break;r.key=t.string();continue}case 2:{if(a!==18)break;r.value=t.string();continue}}if((a&7)===4||a===0)break;t.skip(a&7)}return r},fromJSON(e){return{key:k(e.key)?globalThis.String(e.key):"",value:k(e.value)?globalThis.String(e.value):""}},toJSON(e){let n={};return e.key!==""&&(n.key=e.key),e.value!==""&&(n.value=e.value),n},create(e){return On.fromPartial(e??{})},fromPartial(e){let n=Wt();return n.key=e.key??"",n.value=e.value??"",n}};function $t(){return{key:"",value:void 0}}var bn={encode(e,n=new g){return e.key!==""&&n.uint32(10).string(e.key),e.value!==void 0&&y.encode(e.value,n.uint32(18).fork()).join(),n},decode(e,n){let t=e instanceof v?e:new v(e),i=n===void 0?t.len:t.pos+n,r=$t();for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{if(a!==10)break;r.key=t.string();continue}case 2:{if(a!==18)break;r.value=y.decode(t,t.uint32());continue}}if((a&7)===4||a===0)break;t.skip(a&7)}return r},fromJSON(e){return{key:k(e.key)?globalThis.String(e.key):"",value:k(e.value)?y.fromJSON(e.value):void 0}},toJSON(e){let n={};return e.key!==""&&(n.key=e.key),e.value!==void 0&&(n.value=y.toJSON(e.value)),n},create(e){return bn.fromPartial(e??{})},fromPartial(e){let n=$t();return n.key=e.key??"",n.value=e.value!==void 0&&e.value!==null?y.fromPartial(e.value):void 0,n}};function Ht(){return{key:"",value:""}}var Pn={encode(e,n=new g){return e.key!==""&&n.uint32(10).string(e.key),e.value!==""&&n.uint32(18).string(e.value),n},decode(e,n){let t=e instanceof v?e:new v(e),i=n===void 0?t.len:t.pos+n,r=Ht();for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{if(a!==10)break;r.key=t.string();continue}case 2:{if(a!==18)break;r.value=t.string();continue}}if((a&7)===4||a===0)break;t.skip(a&7)}return r},fromJSON(e){return{key:k(e.key)?globalThis.String(e.key):"",value:k(e.value)?globalThis.String(e.value):""}},toJSON(e){let n={};return e.key!==""&&(n.key=e.key),e.value!==""&&(n.value=e.value),n},create(e){return Pn.fromPartial(e??{})},fromPartial(e){let n=Ht();return n.key=e.key??"",n.value=e.value??"",n}};function qt(){return{trackId:"",variantBitrates:[]}}var y={encode(e,n=new g){e.trackId!==""&&n.uint32(10).string(e.trackId);for(let t of e.variantBitrates)xe.encode(t,n.uint32(18).fork()).join();return n},decode(e,n){let t=e instanceof v?e:new v(e),i=n===void 0?t.len:t.pos+n,r=qt();for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{if(a!==10)break;r.trackId=t.string();continue}case 2:{if(a!==18)break;r.variantBitrates.push(xe.decode(t,t.uint32()));continue}}if((a&7)===4||a===0)break;t.skip(a&7)}return r},fromJSON(e){return{trackId:k(e.trackId)?globalThis.String(e.trackId):"",variantBitrates:globalThis.Array.isArray(e?.variantBitrates)?e.variantBitrates.map(n=>xe.fromJSON(n)):[]}},toJSON(e){let n={};return e.trackId!==""&&(n.trackId=e.trackId),e.variantBitrates?.length&&(n.variantBitrates=e.variantBitrates.map(t=>xe.toJSON(t))),n},create(e){return y.fromPartial(e??{})},fromPartial(e){let n=qt();return n.trackId=e.trackId??"",n.variantBitrates=e.variantBitrates?.map(t=>xe.fromPartial(t))||[],n}};function Kt(){return{trackId:"",variant:0}}var G={encode(e,n=new g){return e.trackId!==""&&n.uint32(10).string(e.trackId),e.variant!==0&&n.uint32(16).int32(e.variant),n},decode(e,n){let t=e instanceof v?e:new v(e),i=n===void 0?t.len:t.pos+n,r=Kt();for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{if(a!==10)break;r.trackId=t.string();continue}case 2:{if(a!==16)break;r.variant=t.int32();continue}}if((a&7)===4||a===0)break;t.skip(a&7)}return r},fromJSON(e){return{trackId:k(e.trackId)?globalThis.String(e.trackId):"",variant:k(e.variant)?V(e.variant):0}},toJSON(e){let n={};return e.trackId!==""&&(n.trackId=e.trackId),e.variant!==0&&(n.variant=U(e.variant)),n},create(e){return G.fromPartial(e??{})},fromPartial(e){let n=Kt();return n.trackId=e.trackId??"",n.variant=e.variant??0,n}};function Gt(){return{trackId:"",variant:0}}var Y={encode(e,n=new g){return e.trackId!==""&&n.uint32(10).string(e.trackId),e.variant!==0&&n.uint32(16).int32(e.variant),n},decode(e,n){let t=e instanceof v?e:new v(e),i=n===void 0?t.len:t.pos+n,r=Gt();for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{if(a!==10)break;r.trackId=t.string();continue}case 2:{if(a!==16)break;r.variant=t.int32();continue}}if((a&7)===4||a===0)break;t.skip(a&7)}return r},fromJSON(e){return{trackId:k(e.trackId)?globalThis.String(e.trackId):"",variant:k(e.variant)?V(e.variant):0}},toJSON(e){let n={};return e.trackId!==""&&(n.trackId=e.trackId),e.variant!==0&&(n.variant=U(e.variant)),n},create(e){return Y.fromPartial(e??{})},fromPartial(e){let n=Gt();return n.trackId=e.trackId??"",n.variant=e.variant??0,n}};function Yt(){return{trackId:"",variant:0}}var Z={encode(e,n=new g){return e.trackId!==""&&n.uint32(10).string(e.trackId),e.variant!==0&&n.uint32(16).int32(e.variant),n},decode(e,n){let t=e instanceof v?e:new v(e),i=n===void 0?t.len:t.pos+n,r=Yt();for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{if(a!==10)break;r.trackId=t.string();continue}case 2:{if(a!==16)break;r.variant=t.int32();continue}}if((a&7)===4||a===0)break;t.skip(a&7)}return r},fromJSON(e){return{trackId:k(e.trackId)?globalThis.String(e.trackId):"",variant:k(e.variant)?V(e.variant):0}},toJSON(e){let n={};return e.trackId!==""&&(n.trackId=e.trackId),e.variant!==0&&(n.variant=U(e.variant)),n},create(e){return Z.fromPartial(e??{})},fromPartial(e){let n=Yt();return n.trackId=e.trackId??"",n.variant=e.variant??0,n}};function Zt(){return{trackId:""}}var z={encode(e,n=new g){return e.trackId!==""&&n.uint32(10).string(e.trackId),n},decode(e,n){let t=e instanceof v?e:new v(e),i=n===void 0?t.len:t.pos+n,r=Zt();for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{if(a!==10)break;r.trackId=t.string();continue}}if((a&7)===4||a===0)break;t.skip(a&7)}return r},fromJSON(e){return{trackId:k(e.trackId)?globalThis.String(e.trackId):""}},toJSON(e){let n={};return e.trackId!==""&&(n.trackId=e.trackId),n},create(e){return z.fromPartial(e??{})},fromPartial(e){let n=Zt();return n.trackId=e.trackId??"",n}};function gn(e){return typeof e=="object"&&e!==null}function k(e){return e!=null}var Ga=class{localTrackManager;connection=null;clearConnectionCallbacks=null;constructor(e){this.localTrackManager=e}initConnection=e=>{this.connection=e;let n=()=>{e.getConnection().signalingState==="stable"&&this.processNextCommand()},t=()=>{e.getConnection().iceGatheringState==="complete"&&this.processNextCommand()},i=()=>{e.getConnection().connectionState==="connected"&&this.processNextCommand()},r=()=>{e.getConnection().iceConnectionState==="connected"&&this.processNextCommand()};this.clearConnectionCallbacks=()=>{e.getConnection().removeEventListener("signalingstatechange",n),e.getConnection().removeEventListener("icegatheringstatechange",t),e.getConnection().removeEventListener("connectionstatechange",i),e.getConnection().removeEventListener("iceconnectionstatechange",r)},e.getConnection().addEventListener("icegatheringstatechange",r),e.getConnection().addEventListener("connectionstatechange",i),e.getConnection().addEventListener("iceconnectionstatechange",r),e.getConnection().addEventListener("signalingstatechange",n)};commandsQueue=[];commandResolutionNotifier=null;pushCommand=e=>{this.commandsQueue.push(e),this.processNextCommand()};processNextCommand=()=>{if(this.localTrackManager.isNegotiationInProgress()||this.connection?.isConnectionUnstable())return;this.resolvePreviousCommand();let e=this.commandsQueue.shift();e&&(this.commandResolutionNotifier=e.resolutionNotifier,this.handleCommand(e))};handleCommand=async e=>{try{e.parse?.();let n=e.handler();e.resolve==="on-handler-resolve"&&(await n,this.resolvePreviousCommand(),this.processNextCommand())}catch(n){this.commandResolutionNotifier?.reject(n),this.commandResolutionNotifier=null,this.processNextCommand()}};resolvePreviousCommand=()=>{this.commandResolutionNotifier&&(this.commandResolutionNotifier.resolve(),this.commandResolutionNotifier=null)};cleanUp=()=>{this.commandResolutionNotifier?.reject("Disconnected"),this.commandResolutionNotifier=null,this.commandsQueue=[],this.clearConnectionCallbacks?.()}},zt=class{connection;constructor(e){this.connection=new RTCPeerConnection({bundlePolicy:"max-bundle",iceServers:e,iceTransportPolicy:"all"})}isConnectionUnstable=()=>{if(!this.connection)return!1;let e=this.connection.signalingState!=="stable",n=this.connection.connectionState!=="connected",t=this.connection.iceConnectionState!=="connected";return e&&n&&t};getConnection=()=>this.connection;addTransceiversIfNeeded=e=>{let n=this.connection.getTransceivers().filter(d=>d.direction==="recvonly"),t=n.filter(d=>d.receiver.track.kind==="video").length,i=n.filter(d=>d.receiver.track.kind==="audio").length,r=Array(e.video-t).fill("video"),a=Array(e.audio-i).fill("audio");[...r,...a].forEach(d=>this.connection.addTransceiver(d,{direction:"recvonly"}))};addTransceiver=(e,n)=>{this.connection.addTransceiver(e,n)};setOnTrackReady=e=>{this.connection.ontrack=e};setRemoteDescription=async e=>{await this.connection.setRemoteDescription(e)};isTrackInUse=e=>this.connection.getSenders().some(n=>n.track===e);removeTrack=e=>{this.connection.removeTrack(e)};findSender=e=>this.connection.getSenders().find(n=>n.track&&n.track.id===e);addIceCandidate=async e=>{await this.connection.addIceCandidate(e)};createDataChannel=(e,n)=>this.connection.createDataChannel(e,n)},Qt=class{constructor(e,n){this.type=e,this.logger=n}channel=null;dataCallback=null;openCallback=null;errorCallback=null;_status="init";get status(){return this._status}setChannel(e){this._status="creating",this.channel=e,this.setupListeners()}setOnOpen(e){this.openCallback=e}setOnError(e){this.errorCallback=e}send(e){if(!this.channel||this._status!=="open"){this.logger.warn(`Cannot send data on ${this.type} channel: channel not ready (status: ${this._status})`);return}try{this.channel.send(e)}catch(n){this.logger.error(`Error sending data on ${this.type} channel:`,n)}}setCallback(e){this.dataCallback=e}close(){this.channel&&this.channel.close(),this._status="closed",this.dataCallback=null}setupListeners(){this.channel&&(this.channel.onopen=()=>{this._status="open",this.logger.debug(`Data channel ${this.type} opened`),this.openCallback?.()},this.channel.onclose=()=>{this._status="closed",this.logger.debug(`Data channel ${this.type} closed`)},this.channel.onerror=e=>{this.logger.error(`Data channel ${this.type} error:`,e),this.errorCallback?.(e)},this.channel.onmessage=e=>{this.handleMessage(e.data)})}handleMessage(e){if(!this.dataCallback){this.logger.warn(`Received data on ${this.type} channel but no callback is set`);return}try{let n;if(e instanceof ArrayBuffer)n=new Uint8Array(e);else if(e instanceof Uint8Array)n=e;else if(typeof e=="string")n=new TextEncoder().encode(e);else if(e instanceof Blob){let t=new FileReader;t.onload=()=>{t.result instanceof ArrayBuffer&&this.dataCallback?.(new Uint8Array(t.result))},t.readAsArrayBuffer(e);return}else{this.logger.warn(`Received unsupported data type on ${this.type} channel:`,typeof e);return}this.dataCallback(n)}catch(n){this.logger.error(`Error handling message on ${this.type} channel:`,n)}}},Za=class extends Ya{constructor(e,n,t){super(),this.createDataChannel=e,this.triggerRenegotiation=n,this.logger=t}reliableChannel=null;lossyChannel=null;async connect(){this.getChannelsReadiness()||(this.createChannels(),this.triggerRenegotiation(),await this.waitForChannelsReady())}waitForChannelsReady(){return this.getChannelsReadiness()?Promise.resolve():new Promise((e,n)=>{let t=()=>{r(),e()},i=(a,d)=>{r(),n(new Error(`Data channel ${a} error: ${d}`))},r=()=>{this.removeListener("ready",t),this.removeListener("error",i)};this.on("ready",t),this.on("error",i)})}publishData(e,n){let t=n.reliable?"reliable":"lossy",i=t==="reliable"?this.reliableChannel:this.lossyChannel;if(!i)throw new Error(`Cannot publish data: ${t} channel not created. Call connectDataPublishers() first or enable negotiateOnConnect.`);if(i.status!=="open")throw new Error(`Cannot publish data: ${t} channel not ready (status: ${i.status}). Wait for dataChannelsReady event.`);i.send(e)}cleanup(){this.logger.warn("Cleaning up data channels"),this.reliableChannel&&(this.reliableChannel.close(),this.reliableChannel=null),this.lossyChannel&&(this.lossyChannel.close(),this.lossyChannel=null),this.removeAllListeners()}getChannelsReadiness(){return this.reliableChannel?.status==="open"&&this.lossyChannel?.status==="open"}createChannels(){this.createChannel("reliable"),this.createChannel("lossy")}createChannel(e){let n=this.getOrCreateChannelWrapper(e);if(n.status!=="init")return;let t=e,i=e==="reliable"?{ordered:!0}:{ordered:!1,maxRetransmits:0},r=this.createDataChannel(t,i);n.setOnOpen(()=>this.onChannelOpen(e)),n.setOnError(a=>this.onChannelError(e,a)),n.setChannel(r),this.logger.warn(`Created ${e} data channel`)}onChannelOpen(e){this.logger.warn(`Data channel ${e} opened`),this.emit("channelOpen",e),this.reliableChannel&&this.reliableChannel.status==="open"&&this.lossyChannel&&this.lossyChannel.status==="open"&&(this.logger.warn("All data publishers ready"),this.emit("ready"))}onChannelError(e,n){this.logger.error(`Data channel ${e} error:`,n),this.emit("error",e,n)}onDataReceived(e,n){let t={channelType:e,data:n};this.emit("data",t)}getOrCreateChannelWrapper(e){return e==="reliable"?(this.reliableChannel||(this.reliableChannel=new Qt(e,this.logger),this.reliableChannel.setCallback(n=>this.onDataReceived(e,n))),this.reliableChannel):(this.lossyChannel||(this.lossyChannel=new Qt(e,this.logger),this.lossyChannel.setCallback(n=>this.onDataReceived(e,n))),this.lossyChannel)}},Sn=class{promise;resolveFn=()=>null;rejectFn=()=>null;constructor(){this.promise=new Promise((e,n)=>{this.resolveFn=e,this.rejectFn=n})}resolve(e){this.resolveFn(e)}reject(e){this.rejectFn(e)}};function za(e){switch(e){case 0:case"STATUS_UNSPECIFIED":return 0;case 1:case"STATUS_SILENCE":return 1;case 2:case"STATUS_SPEECH":return 2;case-1:case"UNRECOGNIZED":default:return-1}}function Qa(e){switch(e){case 0:return"STATUS_UNSPECIFIED";case 1:return"STATUS_SILENCE";case 2:return"STATUS_SPEECH";case-1:default:return"UNRECOGNIZED"}}function Xt(){return{endpointUpdated:void 0,trackUpdated:void 0,tracksAdded:void 0,tracksRemoved:void 0,endpointAdded:void 0,endpointRemoved:void 0,connected:void 0,error:void 0,offerData:void 0,candidate:void 0,sdpAnswer:void 0,vadNotification:void 0,trackVariantSwitched:void 0,trackVariantDisabled:void 0,trackVariantEnabled:void 0}}var ga={encode(e,n=new h){return e.endpointUpdated!==void 0&&De.encode(e.endpointUpdated,n.uint32(10).fork()).join(),e.trackUpdated!==void 0&&Ve.encode(e.trackUpdated,n.uint32(18).fork()).join(),e.tracksAdded!==void 0&&Ue.encode(e.tracksAdded,n.uint32(26).fork()).join(),e.tracksRemoved!==void 0&&Le.encode(e.tracksRemoved,n.uint32(34).fork()).join(),e.endpointAdded!==void 0&&Fe.encode(e.endpointAdded,n.uint32(42).fork()).join(),e.endpointRemoved!==void 0&&$e.encode(e.endpointRemoved,n.uint32(50).fork()).join(),e.connected!==void 0&&We.encode(e.connected,n.uint32(58).fork()).join(),e.error!==void 0&&He.encode(e.error,n.uint32(66).fork()).join(),e.offerData!==void 0&&qe.encode(e.offerData,n.uint32(74).fork()).join(),e.candidate!==void 0&&C.encode(e.candidate,n.uint32(82).fork()).join(),e.sdpAnswer!==void 0&&Ge.encode(e.sdpAnswer,n.uint32(90).fork()).join(),e.vadNotification!==void 0&&Ye.encode(e.vadNotification,n.uint32(98).fork()).join(),e.trackVariantSwitched!==void 0&&Ze.encode(e.trackVariantSwitched,n.uint32(106).fork()).join(),e.trackVariantDisabled!==void 0&&ze.encode(e.trackVariantDisabled,n.uint32(114).fork()).join(),e.trackVariantEnabled!==void 0&&Qe.encode(e.trackVariantEnabled,n.uint32(122).fork()).join(),n},decode(e,n){let t=e instanceof u?e:new u(e),i=n===void 0?t.len:t.pos+n,r=Xt();for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{if(a!==10)break;r.endpointUpdated=De.decode(t,t.uint32());continue}case 2:{if(a!==18)break;r.trackUpdated=Ve.decode(t,t.uint32());continue}case 3:{if(a!==26)break;r.tracksAdded=Ue.decode(t,t.uint32());continue}case 4:{if(a!==34)break;r.tracksRemoved=Le.decode(t,t.uint32());continue}case 5:{if(a!==42)break;r.endpointAdded=Fe.decode(t,t.uint32());continue}case 6:{if(a!==50)break;r.endpointRemoved=$e.decode(t,t.uint32());continue}case 7:{if(a!==58)break;r.connected=We.decode(t,t.uint32());continue}case 8:{if(a!==66)break;r.error=He.decode(t,t.uint32());continue}case 9:{if(a!==74)break;r.offerData=qe.decode(t,t.uint32());continue}case 10:{if(a!==82)break;r.candidate=C.decode(t,t.uint32());continue}case 11:{if(a!==90)break;r.sdpAnswer=Ge.decode(t,t.uint32());continue}case 12:{if(a!==98)break;r.vadNotification=Ye.decode(t,t.uint32());continue}case 13:{if(a!==106)break;r.trackVariantSwitched=Ze.decode(t,t.uint32());continue}case 14:{if(a!==114)break;r.trackVariantDisabled=ze.decode(t,t.uint32());continue}case 15:{if(a!==122)break;r.trackVariantEnabled=Qe.decode(t,t.uint32());continue}}if((a&7)===4||a===0)break;t.skip(a&7)}return r},fromJSON(e){return{endpointUpdated:s(e.endpointUpdated)?De.fromJSON(e.endpointUpdated):void 0,trackUpdated:s(e.trackUpdated)?Ve.fromJSON(e.trackUpdated):void 0,tracksAdded:s(e.tracksAdded)?Ue.fromJSON(e.tracksAdded):void 0,tracksRemoved:s(e.tracksRemoved)?Le.fromJSON(e.tracksRemoved):void 0,endpointAdded:s(e.endpointAdded)?Fe.fromJSON(e.endpointAdded):void 0,endpointRemoved:s(e.endpointRemoved)?$e.fromJSON(e.endpointRemoved):void 0,connected:s(e.connected)?We.fromJSON(e.connected):void 0,error:s(e.error)?He.fromJSON(e.error):void 0,offerData:s(e.offerData)?qe.fromJSON(e.offerData):void 0,candidate:s(e.candidate)?C.fromJSON(e.candidate):void 0,sdpAnswer:s(e.sdpAnswer)?Ge.fromJSON(e.sdpAnswer):void 0,vadNotification:s(e.vadNotification)?Ye.fromJSON(e.vadNotification):void 0,trackVariantSwitched:s(e.trackVariantSwitched)?Ze.fromJSON(e.trackVariantSwitched):void 0,trackVariantDisabled:s(e.trackVariantDisabled)?ze.fromJSON(e.trackVariantDisabled):void 0,trackVariantEnabled:s(e.trackVariantEnabled)?Qe.fromJSON(e.trackVariantEnabled):void 0}},toJSON(e){let n={};return e.endpointUpdated!==void 0&&(n.endpointUpdated=De.toJSON(e.endpointUpdated)),e.trackUpdated!==void 0&&(n.trackUpdated=Ve.toJSON(e.trackUpdated)),e.tracksAdded!==void 0&&(n.tracksAdded=Ue.toJSON(e.tracksAdded)),e.tracksRemoved!==void 0&&(n.tracksRemoved=Le.toJSON(e.tracksRemoved)),e.endpointAdded!==void 0&&(n.endpointAdded=Fe.toJSON(e.endpointAdded)),e.endpointRemoved!==void 0&&(n.endpointRemoved=$e.toJSON(e.endpointRemoved)),e.connected!==void 0&&(n.connected=We.toJSON(e.connected)),e.error!==void 0&&(n.error=He.toJSON(e.error)),e.offerData!==void 0&&(n.offerData=qe.toJSON(e.offerData)),e.candidate!==void 0&&(n.candidate=C.toJSON(e.candidate)),e.sdpAnswer!==void 0&&(n.sdpAnswer=Ge.toJSON(e.sdpAnswer)),e.vadNotification!==void 0&&(n.vadNotification=Ye.toJSON(e.vadNotification)),e.trackVariantSwitched!==void 0&&(n.trackVariantSwitched=Ze.toJSON(e.trackVariantSwitched)),e.trackVariantDisabled!==void 0&&(n.trackVariantDisabled=ze.toJSON(e.trackVariantDisabled)),e.trackVariantEnabled!==void 0&&(n.trackVariantEnabled=Qe.toJSON(e.trackVariantEnabled)),n},create(e){return ga.fromPartial(e??{})},fromPartial(e){let n=Xt();return n.endpointUpdated=e.endpointUpdated!==void 0&&e.endpointUpdated!==null?De.fromPartial(e.endpointUpdated):void 0,n.trackUpdated=e.trackUpdated!==void 0&&e.trackUpdated!==null?Ve.fromPartial(e.trackUpdated):void 0,n.tracksAdded=e.tracksAdded!==void 0&&e.tracksAdded!==null?Ue.fromPartial(e.tracksAdded):void 0,n.tracksRemoved=e.tracksRemoved!==void 0&&e.tracksRemoved!==null?Le.fromPartial(e.tracksRemoved):void 0,n.endpointAdded=e.endpointAdded!==void 0&&e.endpointAdded!==null?Fe.fromPartial(e.endpointAdded):void 0,n.endpointRemoved=e.endpointRemoved!==void 0&&e.endpointRemoved!==null?$e.fromPartial(e.endpointRemoved):void 0,n.connected=e.connected!==void 0&&e.connected!==null?We.fromPartial(e.connected):void 0,n.error=e.error!==void 0&&e.error!==null?He.fromPartial(e.error):void 0,n.offerData=e.offerData!==void 0&&e.offerData!==null?qe.fromPartial(e.offerData):void 0,n.candidate=e.candidate!==void 0&&e.candidate!==null?C.fromPartial(e.candidate):void 0,n.sdpAnswer=e.sdpAnswer!==void 0&&e.sdpAnswer!==null?Ge.fromPartial(e.sdpAnswer):void 0,n.vadNotification=e.vadNotification!==void 0&&e.vadNotification!==null?Ye.fromPartial(e.vadNotification):void 0,n.trackVariantSwitched=e.trackVariantSwitched!==void 0&&e.trackVariantSwitched!==null?Ze.fromPartial(e.trackVariantSwitched):void 0,n.trackVariantDisabled=e.trackVariantDisabled!==void 0&&e.trackVariantDisabled!==null?ze.fromPartial(e.trackVariantDisabled):void 0,n.trackVariantEnabled=e.trackVariantEnabled!==void 0&&e.trackVariantEnabled!==null?Qe.fromPartial(e.trackVariantEnabled):void 0,n}};function jt(){return{metadataJson:"",simulcastConfig:void 0}}var M={encode(e,n=new h){return e.metadataJson!==""&&n.uint32(10).string(e.metadataJson),e.simulcastConfig!==void 0&&Ae.encode(e.simulcastConfig,n.uint32(18).fork()).join(),n},decode(e,n){let t=e instanceof u?e:new u(e),i=n===void 0?t.len:t.pos+n,r=jt();for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{if(a!==10)break;r.metadataJson=t.string();continue}case 2:{if(a!==18)break;r.simulcastConfig=Ae.decode(t,t.uint32());continue}}if((a&7)===4||a===0)break;t.skip(a&7)}return r},fromJSON(e){return{metadataJson:s(e.metadataJson)?globalThis.String(e.metadataJson):"",simulcastConfig:s(e.simulcastConfig)?Ae.fromJSON(e.simulcastConfig):void 0}},toJSON(e){let n={};return e.metadataJson!==""&&(n.metadataJson=e.metadataJson),e.simulcastConfig!==void 0&&(n.simulcastConfig=Ae.toJSON(e.simulcastConfig)),n},create(e){return M.fromPartial(e??{})},fromPartial(e){let n=jt();return n.metadataJson=e.metadataJson??"",n.simulcastConfig=e.simulcastConfig!==void 0&&e.simulcastConfig!==null?Ae.fromPartial(e.simulcastConfig):void 0,n}};function ea(){return{enabled:!1,enabledVariants:[],disabledVariants:[]}}var Ae={encode(e,n=new h){e.enabled!==!1&&n.uint32(8).bool(e.enabled),n.uint32(18).fork();for(let t of e.enabledVariants)n.int32(t);n.join(),n.uint32(26).fork();for(let t of e.disabledVariants)n.int32(t);return n.join(),n},decode(e,n){let t=e instanceof u?e:new u(e),i=n===void 0?t.len:t.pos+n,r=ea();for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{if(a!==8)break;r.enabled=t.bool();continue}case 2:{if(a===16){r.enabledVariants.push(t.int32());continue}if(a===18){let d=t.uint32()+t.pos;for(;t.pos<d;)r.enabledVariants.push(t.int32());continue}break}case 3:{if(a===24){r.disabledVariants.push(t.int32());continue}if(a===26){let d=t.uint32()+t.pos;for(;t.pos<d;)r.disabledVariants.push(t.int32());continue}break}}if((a&7)===4||a===0)break;t.skip(a&7)}return r},fromJSON(e){return{enabled:s(e.enabled)?globalThis.Boolean(e.enabled):!1,enabledVariants:globalThis.Array.isArray(e?.enabledVariants)?e.enabledVariants.map(n=>V(n)):[],disabledVariants:globalThis.Array.isArray(e?.disabledVariants)?e.disabledVariants.map(n=>V(n)):[]}},toJSON(e){let n={};return e.enabled!==!1&&(n.enabled=e.enabled),e.enabledVariants?.length&&(n.enabledVariants=e.enabledVariants.map(t=>U(t))),e.disabledVariants?.length&&(n.disabledVariants=e.disabledVariants.map(t=>U(t))),n},create(e){return Ae.fromPartial(e??{})},fromPartial(e){let n=ea();return n.enabled=e.enabled??!1,n.enabledVariants=e.enabledVariants?.map(t=>t)||[],n.disabledVariants=e.disabledVariants?.map(t=>t)||[],n}};function na(){return{endpointType:"",metadataJson:"",trackIdToTrack:{}}}var D={encode(e,n=new h){return e.endpointType!==""&&n.uint32(18).string(e.endpointType),e.metadataJson!==""&&n.uint32(26).string(e.metadataJson),Object.entries(e.trackIdToTrack).forEach(([t,i])=>{Cn.encode({key:t,value:i},n.uint32(34).fork()).join()}),n},decode(e,n){let t=e instanceof u?e:new u(e),i=n===void 0?t.len:t.pos+n,r=na();for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 2:{if(a!==18)break;r.endpointType=t.string();continue}case 3:{if(a!==26)break;r.metadataJson=t.string();continue}case 4:{if(a!==34)break;let d=Cn.decode(t,t.uint32());d.value!==void 0&&(r.trackIdToTrack[d.key]=d.value);continue}}if((a&7)===4||a===0)break;t.skip(a&7)}return r},fromJSON(e){return{endpointType:s(e.endpointType)?globalThis.String(e.endpointType):"",metadataJson:s(e.metadataJson)?globalThis.String(e.metadataJson):"",trackIdToTrack:cn(e.trackIdToTrack)?Object.entries(e.trackIdToTrack).reduce((n,[t,i])=>(n[t]=M.fromJSON(i),n),{}):{}}},toJSON(e){let n={};if(e.endpointType!==""&&(n.endpointType=e.endpointType),e.metadataJson!==""&&(n.metadataJson=e.metadataJson),e.trackIdToTrack){let t=Object.entries(e.trackIdToTrack);t.length>0&&(n.trackIdToTrack={},t.forEach(([i,r])=>{n.trackIdToTrack[i]=M.toJSON(r)}))}return n},create(e){return D.fromPartial(e??{})},fromPartial(e){let n=na();return n.endpointType=e.endpointType??"",n.metadataJson=e.metadataJson??"",n.trackIdToTrack=Object.entries(e.trackIdToTrack??{}).reduce((t,[i,r])=>(r!==void 0&&(t[i]=M.fromPartial(r)),t),{}),n}};function ta(){return{key:"",value:void 0}}var Cn={encode(e,n=new h){return e.key!==""&&n.uint32(10).string(e.key),e.value!==void 0&&M.encode(e.value,n.uint32(18).fork()).join(),n},decode(e,n){let t=e instanceof u?e:new u(e),i=n===void 0?t.len:t.pos+n,r=ta();for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{if(a!==10)break;r.key=t.string();continue}case 2:{if(a!==18)break;r.value=M.decode(t,t.uint32());continue}}if((a&7)===4||a===0)break;t.skip(a&7)}return r},fromJSON(e){return{key:s(e.key)?globalThis.String(e.key):"",value:s(e.value)?M.fromJSON(e.value):void 0}},toJSON(e){let n={};return e.key!==""&&(n.key=e.key),e.value!==void 0&&(n.value=M.toJSON(e.value)),n},create(e){return Cn.fromPartial(e??{})},fromPartial(e){let n=ta();return n.key=e.key??"",n.value=e.value!==void 0&&e.value!==null?M.fromPartial(e.value):void 0,n}};function aa(){return{credential:"",urls:[],username:""}}var Be={encode(e,n=new h){e.credential!==""&&n.uint32(10).string(e.credential);for(let t of e.urls)n.uint32(18).string(t);return e.username!==""&&n.uint32(26).string(e.username),n},decode(e,n){let t=e instanceof u?e:new u(e),i=n===void 0?t.len:t.pos+n,r=aa();for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{if(a!==10)break;r.credential=t.string();continue}case 2:{if(a!==18)break;r.urls.push(t.string());continue}case 3:{if(a!==26)break;r.username=t.string();continue}}if((a&7)===4||a===0)break;t.skip(a&7)}return r},fromJSON(e){return{credential:s(e.credential)?globalThis.String(e.credential):"",urls:globalThis.Array.isArray(e?.urls)?e.urls.map(n=>globalThis.String(n)):[],username:s(e.username)?globalThis.String(e.username):""}},toJSON(e){let n={};return e.credential!==""&&(n.credential=e.credential),e.urls?.length&&(n.urls=e.urls),e.username!==""&&(n.username=e.username),n},create(e){return Be.fromPartial(e??{})},fromPartial(e){let n=aa();return n.credential=e.credential??"",n.urls=e.urls?.map(t=>t)||[],n.username=e.username??"",n}};function ra(){return{endpointId:"",metadataJson:""}}var De={encode(e,n=new h){return e.endpointId!==""&&n.uint32(10).string(e.endpointId),e.metadataJson!==""&&n.uint32(18).string(e.metadataJson),n},decode(e,n){let t=e instanceof u?e:new u(e),i=n===void 0?t.len:t.pos+n,r=ra();for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{if(a!==10)break;r.endpointId=t.string();continue}case 2:{if(a!==18)break;r.metadataJson=t.string();continue}}if((a&7)===4||a===0)break;t.skip(a&7)}return r},fromJSON(e){return{endpointId:s(e.endpointId)?globalThis.String(e.endpointId):"",metadataJson:s(e.metadataJson)?globalThis.String(e.metadataJson):""}},toJSON(e){let n={};return e.endpointId!==""&&(n.endpointId=e.endpointId),e.metadataJson!==""&&(n.metadataJson=e.metadataJson),n},create(e){return De.fromPartial(e??{})},fromPartial(e){let n=ra();return n.endpointId=e.endpointId??"",n.metadataJson=e.metadataJson??"",n}};function ia(){return{endpointId:"",trackId:"",metadataJson:""}}var Ve={encode(e,n=new h){return e.endpointId!==""&&n.uint32(10).string(e.endpointId),e.trackId!==""&&n.uint32(18).string(e.trackId),e.metadataJson!==""&&n.uint32(26).string(e.metadataJson),n},decode(e,n){let t=e instanceof u?e:new u(e),i=n===void 0?t.len:t.pos+n,r=ia();for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{if(a!==10)break;r.endpointId=t.string();continue}case 2:{if(a!==18)break;r.trackId=t.string();continue}case 3:{if(a!==26)break;r.metadataJson=t.string();continue}}if((a&7)===4||a===0)break;t.skip(a&7)}return r},fromJSON(e){return{endpointId:s(e.endpointId)?globalThis.String(e.endpointId):"",trackId:s(e.trackId)?globalThis.String(e.trackId):"",metadataJson:s(e.metadataJson)?globalThis.String(e.metadataJson):""}},toJSON(e){let n={};return e.endpointId!==""&&(n.endpointId=e.endpointId),e.trackId!==""&&(n.trackId=e.trackId),e.metadataJson!==""&&(n.metadataJson=e.metadataJson),n},create(e){return Ve.fromPartial(e??{})},fromPartial(e){let n=ia();return n.endpointId=e.endpointId??"",n.trackId=e.trackId??"",n.metadataJson=e.metadataJson??"",n}};function da(){return{endpointId:"",trackIdToTrack:{}}}var Ue={encode(e,n=new h){return e.endpointId!==""&&n.uint32(10).string(e.endpointId),Object.entries(e.trackIdToTrack).forEach(([t,i])=>{wn.encode({key:t,value:i},n.uint32(18).fork()).join()}),n},decode(e,n){let t=e instanceof u?e:new u(e),i=n===void 0?t.len:t.pos+n,r=da();for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{if(a!==10)break;r.endpointId=t.string();continue}case 2:{if(a!==18)break;let d=wn.decode(t,t.uint32());d.value!==void 0&&(r.trackIdToTrack[d.key]=d.value);continue}}if((a&7)===4||a===0)break;t.skip(a&7)}return r},fromJSON(e){return{endpointId:s(e.endpointId)?globalThis.String(e.endpointId):"",trackIdToTrack:cn(e.trackIdToTrack)?Object.entries(e.trackIdToTrack).reduce((n,[t,i])=>(n[t]=M.fromJSON(i),n),{}):{}}},toJSON(e){let n={};if(e.endpointId!==""&&(n.endpointId=e.endpointId),e.trackIdToTrack){let t=Object.entries(e.trackIdToTrack);t.length>0&&(n.trackIdToTrack={},t.forEach(([i,r])=>{n.trackIdToTrack[i]=M.toJSON(r)}))}return n},create(e){return Ue.fromPartial(e??{})},fromPartial(e){let n=da();return n.endpointId=e.endpointId??"",n.trackIdToTrack=Object.entries(e.trackIdToTrack??{}).reduce((t,[i,r])=>(r!==void 0&&(t[i]=M.fromPartial(r)),t),{}),n}};function oa(){return{key:"",value:void 0}}var wn={encode(e,n=new h){return e.key!==""&&n.uint32(10).string(e.key),e.value!==void 0&&M.encode(e.value,n.uint32(18).fork()).join(),n},decode(e,n){let t=e instanceof u?e:new u(e),i=n===void 0?t.len:t.pos+n,r=oa();for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{if(a!==10)break;r.key=t.string();continue}case 2:{if(a!==18)break;r.value=M.decode(t,t.uint32());continue}}if((a&7)===4||a===0)break;t.skip(a&7)}return r},fromJSON(e){return{key:s(e.key)?globalThis.String(e.key):"",value:s(e.value)?M.fromJSON(e.value):void 0}},toJSON(e){let n={};return e.key!==""&&(n.key=e.key),e.value!==void 0&&(n.value=M.toJSON(e.value)),n},create(e){return wn.fromPartial(e??{})},fromPartial(e){let n=oa();return n.key=e.key??"",n.value=e.value!==void 0&&e.value!==null?M.fromPartial(e.value):void 0,n}};function sa(){return{endpointId:"",trackIds:[]}}var Le={encode(e,n=new h){e.endpointId!==""&&n.uint32(10).string(e.endpointId);for(let t of e.trackIds)n.uint32(18).string(t);return n},decode(e,n){let t=e instanceof u?e:new u(e),i=n===void 0?t.len:t.pos+n,r=sa();for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{if(a!==10)break;r.endpointId=t.string();continue}case 2:{if(a!==18)break;r.trackIds.push(t.string());continue}}if((a&7)===4||a===0)break;t.skip(a&7)}return r},fromJSON(e){return{endpointId:s(e.endpointId)?globalThis.String(e.endpointId):"",trackIds:globalThis.Array.isArray(e?.trackIds)?e.trackIds.map(n=>globalThis.String(n)):[]}},toJSON(e){let n={};return e.endpointId!==""&&(n.endpointId=e.endpointId),e.trackIds?.length&&(n.trackIds=e.trackIds),n},create(e){return Le.fromPartial(e??{})},fromPartial(e){let n=sa();return n.endpointId=e.endpointId??"",n.trackIds=e.trackIds?.map(t=>t)||[],n}};function ca(){return{endpointId:"",metadataJson:""}}var Fe={encode(e,n=new h){return e.endpointId!==""&&n.uint32(10).string(e.endpointId),e.metadataJson!==""&&n.uint32(18).string(e.metadataJson),n},decode(e,n){let t=e instanceof u?e:new u(e),i=n===void 0?t.len:t.pos+n,r=ca();for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{if(a!==10)break;r.endpointId=t.string();continue}case 2:{if(a!==18)break;r.metadataJson=t.string();continue}}if((a&7)===4||a===0)break;t.skip(a&7)}return r},fromJSON(e){return{endpointId:s(e.endpointId)?globalThis.String(e.endpointId):"",metadataJson:s(e.metadataJson)?globalThis.String(e.metadataJson):""}},toJSON(e){let n={};return e.endpointId!==""&&(n.endpointId=e.endpointId),e.metadataJson!==""&&(n.metadataJson=e.metadataJson),n},create(e){return Fe.fromPartial(e??{})},fromPartial(e){let n=ca();return n.endpointId=e.endpointId??"",n.metadataJson=e.metadataJson??"",n}};function ua(){return{endpointId:"",endpointIdToEndpoint:{},iceServers:[]}}var We={encode(e,n=new h){e.endpointId!==""&&n.uint32(10).string(e.endpointId),Object.entries(e.endpointIdToEndpoint).forEach(([t,i])=>{Nn.encode({key:t,value:i},n.uint32(18).fork()).join()});for(let t of e.iceServers)Be.encode(t,n.uint32(26).fork()).join();return n},decode(e,n){let t=e instanceof u?e:new u(e),i=n===void 0?t.len:t.pos+n,r=ua();for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{if(a!==10)break;r.endpointId=t.string();continue}case 2:{if(a!==18)break;let d=Nn.decode(t,t.uint32());d.value!==void 0&&(r.endpointIdToEndpoint[d.key]=d.value);continue}case 3:{if(a!==26)break;r.iceServers.push(Be.decode(t,t.uint32()));continue}}if((a&7)===4||a===0)break;t.skip(a&7)}return r},fromJSON(e){return{endpointId:s(e.endpointId)?globalThis.String(e.endpointId):"",endpointIdToEndpoint:cn(e.endpointIdToEndpoint)?Object.entries(e.endpointIdToEndpoint).reduce((n,[t,i])=>(n[t]=D.fromJSON(i),n),{}):{},iceServers:globalThis.Array.isArray(e?.iceServers)?e.iceServers.map(n=>Be.fromJSON(n)):[]}},toJSON(e){let n={};if(e.endpointId!==""&&(n.endpointId=e.endpointId),e.endpointIdToEndpoint){let t=Object.entries(e.endpointIdToEndpoint);t.length>0&&(n.endpointIdToEndpoint={},t.forEach(([i,r])=>{n.endpointIdToEndpoint[i]=D.toJSON(r)}))}return e.iceServers?.length&&(n.iceServers=e.iceServers.map(t=>Be.toJSON(t))),n},create(e){return We.fromPartial(e??{})},fromPartial(e){let n=ua();return n.endpointId=e.endpointId??"",n.endpointIdToEndpoint=Object.entries(e.endpointIdToEndpoint??{}).reduce((t,[i,r])=>(r!==void 0&&(t[i]=D.fromPartial(r)),t),{}),n.iceServers=e.iceServers?.map(t=>Be.fromPartial(t))||[],n}};function la(){return{key:"",value:void 0}}var Nn={encode(e,n=new h){return e.key!==""&&n.uint32(10).string(e.key),e.value!==void 0&&D.encode(e.value,n.uint32(18).fork()).join(),n},decode(e,n){let t=e instanceof u?e:new u(e),i=n===void 0?t.len:t.pos+n,r=la();for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{if(a!==10)break;r.key=t.string();continue}case 2:{if(a!==18)break;r.value=D.decode(t,t.uint32());continue}}if((a&7)===4||a===0)break;t.skip(a&7)}return r},fromJSON(e){return{key:s(e.key)?globalThis.String(e.key):"",value:s(e.value)?D.fromJSON(e.value):void 0}},toJSON(e){let n={};return e.key!==""&&(n.key=e.key),e.value!==void 0&&(n.value=D.toJSON(e.value)),n},create(e){return Nn.fromPartial(e??{})},fromPartial(e){let n=la();return n.key=e.key??"",n.value=e.value!==void 0&&e.value!==null?D.fromPartial(e.value):void 0,n}};function fa(){return{endpointId:""}}var $e={encode(e,n=new h){return e.endpointId!==""&&n.uint32(10).string(e.endpointId),n},decode(e,n){let t=e instanceof u?e:new u(e),i=n===void 0?t.len:t.pos+n,r=fa();for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{if(a!==10)break;r.endpointId=t.string();continue}}if((a&7)===4||a===0)break;t.skip(a&7)}return r},fromJSON(e){return{endpointId:s(e.endpointId)?globalThis.String(e.endpointId):""}},toJSON(e){let n={};return e.endpointId!==""&&(n.endpointId=e.endpointId),n},create(e){return $e.fromPartial(e??{})},fromPartial(e){let n=fa();return n.endpointId=e.endpointId??"",n}};function ka(){return{message:""}}var He={encode(e,n=new h){return e.message!==""&&n.uint32(10).string(e.message),n},decode(e,n){let t=e instanceof u?e:new u(e),i=n===void 0?t.len:t.pos+n,r=ka();for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{if(a!==10)break;r.message=t.string();continue}}if((a&7)===4||a===0)break;t.skip(a&7)}return r},fromJSON(e){return{message:s(e.message)?globalThis.String(e.message):""}},toJSON(e){let n={};return e.message!==""&&(n.message=e.message),n},create(e){return He.fromPartial(e??{})},fromPartial(e){let n=ka();return n.message=e.message??"",n}};function pa(){return{tracksTypes:void 0}}var qe={encode(e,n=new h){return e.tracksTypes!==void 0&&Ke.encode(e.tracksTypes,n.uint32(10).fork()).join(),n},decode(e,n){let t=e instanceof u?e:new u(e),i=n===void 0?t.len:t.pos+n,r=pa();for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{if(a!==10)break;r.tracksTypes=Ke.decode(t,t.uint32());continue}}if((a&7)===4||a===0)break;t.skip(a&7)}return r},fromJSON(e){return{tracksTypes:s(e.tracksTypes)?Ke.fromJSON(e.tracksTypes):void 0}},toJSON(e){let n={};return e.tracksTypes!==void 0&&(n.tracksTypes=Ke.toJSON(e.tracksTypes)),n},create(e){return qe.fromPartial(e??{})},fromPartial(e){let n=pa();return n.tracksTypes=e.tracksTypes!==void 0&&e.tracksTypes!==null?Ke.fromPartial(e.tracksTypes):void 0,n}};function va(){return{audio:0,video:0}}var Ke={encode(e,n=new h){return e.audio!==0&&n.uint32(8).int32(e.audio),e.video!==0&&n.uint32(16).int32(e.video),n},decode(e,n){let t=e instanceof u?e:new u(e),i=n===void 0?t.len:t.pos+n,r=va();for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{if(a!==8)break;r.audio=t.int32();continue}case 2:{if(a!==16)break;r.video=t.int32();continue}}if((a&7)===4||a===0)break;t.skip(a&7)}return r},fromJSON(e){return{audio:s(e.audio)?globalThis.Number(e.audio):0,video:s(e.video)?globalThis.Number(e.video):0}},toJSON(e){let n={};return e.audio!==0&&(n.audio=Math.round(e.audio)),e.video!==0&&(n.video=Math.round(e.video)),n},create(e){return Ke.fromPartial(e??{})},fromPartial(e){let n=va();return n.audio=e.audio??0,n.video=e.video??0,n}};function Ta(){return{sdp:"",midToTrackId:{}}}var Ge={encode(e,n=new h){return e.sdp!==""&&n.uint32(10).string(e.sdp),Object.entries(e.midToTrackId).forEach(([t,i])=>{Rn.encode({key:t,value:i},n.uint32(18).fork()).join()}),n},decode(e,n){let t=e instanceof u?e:new u(e),i=n===void 0?t.len:t.pos+n,r=Ta();for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{if(a!==10)break;r.sdp=t.string();continue}case 2:{if(a!==18)break;let d=Rn.decode(t,t.uint32());d.value!==void 0&&(r.midToTrackId[d.key]=d.value);continue}}if((a&7)===4||a===0)break;t.skip(a&7)}return r},fromJSON(e){return{sdp:s(e.sdp)?globalThis.String(e.sdp):"",midToTrackId:cn(e.midToTrackId)?Object.entries(e.midToTrackId).reduce((n,[t,i])=>(n[t]=String(i),n),{}):{}}},toJSON(e){let n={};if(e.sdp!==""&&(n.sdp=e.sdp),e.midToTrackId){let t=Object.entries(e.midToTrackId);t.length>0&&(n.midToTrackId={},t.forEach(([i,r])=>{n.midToTrackId[i]=r}))}return n},create(e){return Ge.fromPartial(e??{})},fromPartial(e){let n=Ta();return n.sdp=e.sdp??"",n.midToTrackId=Object.entries(e.midToTrackId??{}).reduce((t,[i,r])=>(r!==void 0&&(t[i]=globalThis.String(r)),t),{}),n}};function Ea(){return{key:"",value:""}}var Rn={encode(e,n=new h){return e.key!==""&&n.uint32(10).string(e.key),e.value!==""&&n.uint32(18).string(e.value),n},decode(e,n){let t=e instanceof u?e:new u(e),i=n===void 0?t.len:t.pos+n,r=Ea();for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{if(a!==10)break;r.key=t.string();continue}case 2:{if(a!==18)break;r.value=t.string();continue}}if((a&7)===4||a===0)break;t.skip(a&7)}return r},fromJSON(e){return{key:s(e.key)?globalThis.String(e.key):"",value:s(e.value)?globalThis.String(e.value):""}},toJSON(e){let n={};return e.key!==""&&(n.key=e.key),e.value!==""&&(n.value=e.value),n},create(e){return Rn.fromPartial(e??{})},fromPartial(e){let n=Ea();return n.key=e.key??"",n.value=e.value??"",n}};function ha(){return{trackId:"",status:0}}var Ye={encode(e,n=new h){return e.trackId!==""&&n.uint32(10).string(e.trackId),e.status!==0&&n.uint32(16).int32(e.status),n},decode(e,n){let t=e instanceof u?e:new u(e),i=n===void 0?t.len:t.pos+n,r=ha();for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{if(a!==10)break;r.trackId=t.string();continue}case 2:{if(a!==16)break;r.status=t.int32();continue}}if((a&7)===4||a===0)break;t.skip(a&7)}return r},fromJSON(e){return{trackId:s(e.trackId)?globalThis.String(e.trackId):"",status:s(e.status)?za(e.status):0}},toJSON(e){let n={};return e.trackId!==""&&(n.trackId=e.trackId),e.status!==0&&(n.status=Qa(e.status)),n},create(e){return Ye.fromPartial(e??{})},fromPartial(e){let n=ha();return n.trackId=e.trackId??"",n.status=e.status??0,n}};function Ia(){return{endpointId:"",trackId:"",variant:0}}var Ze={encode(e,n=new h){return e.endpointId!==""&&n.uint32(10).string(e.endpointId),e.trackId!==""&&n.uint32(18).string(e.trackId),e.variant!==0&&n.uint32(24).int32(e.variant),n},decode(e,n){let t=e instanceof u?e:new u(e),i=n===void 0?t.len:t.pos+n,r=Ia();for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{if(a!==10)break;r.endpointId=t.string();continue}case 2:{if(a!==18)break;r.trackId=t.string();continue}case 3:{if(a!==24)break;r.variant=t.int32();continue}}if((a&7)===4||a===0)break;t.skip(a&7)}return r},fromJSON(e){return{endpointId:s(e.endpointId)?globalThis.String(e.endpointId):"",trackId:s(e.trackId)?globalThis.String(e.trackId):"",variant:s(e.variant)?V(e.variant):0}},toJSON(e){let n={};return e.endpointId!==""&&(n.endpointId=e.endpointId),e.trackId!==""&&(n.trackId=e.trackId),e.variant!==0&&(n.variant=U(e.variant)),n},create(e){return Ze.fromPartial(e??{})},fromPartial(e){let n=Ia();return n.endpointId=e.endpointId??"",n.trackId=e.trackId??"",n.variant=e.variant??0,n}};function Ma(){return{endpointId:"",trackId:"",variant:0}}var ze={encode(e,n=new h){return e.endpointId!==""&&n.uint32(10).string(e.endpointId),e.trackId!==""&&n.uint32(18).string(e.trackId),e.variant!==0&&n.uint32(24).int32(e.variant),n},decode(e,n){let t=e instanceof u?e:new u(e),i=n===void 0?t.len:t.pos+n,r=Ma();for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{if(a!==10)break;r.endpointId=t.string();continue}case 2:{if(a!==18)break;r.trackId=t.string();continue}case 3:{if(a!==24)break;r.variant=t.int32();continue}}if((a&7)===4||a===0)break;t.skip(a&7)}return r},fromJSON(e){return{endpointId:s(e.endpointId)?globalThis.String(e.endpointId):"",trackId:s(e.trackId)?globalThis.String(e.trackId):"",variant:s(e.variant)?V(e.variant):0}},toJSON(e){let n={};return e.endpointId!==""&&(n.endpointId=e.endpointId),e.trackId!==""&&(n.trackId=e.trackId),e.variant!==0&&(n.variant=U(e.variant)),n},create(e){return ze.fromPartial(e??{})},fromPartial(e){let n=Ma();return n.endpointId=e.endpointId??"",n.trackId=e.trackId??"",n.variant=e.variant??0,n}};function ma(){return{endpointId:"",trackId:"",variant:0}}var Qe={encode(e,n=new h){return e.endpointId!==""&&n.uint32(10).string(e.endpointId),e.trackId!==""&&n.uint32(18).string(e.trackId),e.variant!==0&&n.uint32(24).int32(e.variant),n},decode(e,n){let t=e instanceof u?e:new u(e),i=n===void 0?t.len:t.pos+n,r=ma();for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{if(a!==10)break;r.endpointId=t.string();continue}case 2:{if(a!==18)break;r.trackId=t.string();continue}case 3:{if(a!==24)break;r.variant=t.int32();continue}}if((a&7)===4||a===0)break;t.skip(a&7)}return r},fromJSON(e){return{endpointId:s(e.endpointId)?globalThis.String(e.endpointId):"",trackId:s(e.trackId)?globalThis.String(e.trackId):"",variant:s(e.variant)?V(e.variant):0}},toJSON(e){let n={};return e.endpointId!==""&&(n.endpointId=e.endpointId),e.trackId!==""&&(n.trackId=e.trackId),e.variant!==0&&(n.variant=U(e.variant)),n},create(e){return Qe.fromPartial(e??{})},fromPartial(e){let n=ma();return n.endpointId=e.endpointId??"",n.trackId=e.trackId??"",n.variant=e.variant??0,n}};function cn(e){return typeof e=="object"&&e!==null}function s(e){return e!=null}function Sa(e){return Xe.encode(e).finish()}function Xa(e){return ga.decode(e)}var _a=e=>e==="audio"||e==="video",Oa=class extends ja{constructor(e,n,t,i={enabled:!1,enabledVariants:[],disabledVariants:[]}){super(),this.endpoint=e,this.trackId=n,this.track=null,this.trackKind=null,this.stream=null,this.metadata=t,this.simulcastConfig=i,this.maxBandwidth=0,this.vadStatus="silence",this.negotiationStatus="awaiting",this.pendingMetadataUpdate=!1}},ya={audio:5e4,video:25e5},er=0,nr={3:25e5,2:5e5,1:15e4,0:0,[-1]:0},ba=(e,n)=>{let t=n*1024;if(t===0)return e.map(d=>({...d,maxBitrate:void 0}));if(e.length===0)return console.error("Attempted to limit bandwidth of the track that doesn't have any encodings"),e.map(d=>({...d}));if(!e[0])throw new Error("RTCRtpEncodingParameters is in invalid state");let i=e[0].scaleResolutionDownBy||1,r=e.reduce((d,l)=>d+(i/(l.scaleResolutionDownBy||1))**2,0),a=t/r;return e.map(d=>({...d,maxBitrate:a*(i/(d.scaleResolutionDownBy||1))**2}))},tr=(e,n)=>{let t=[{}];return e.encodings.length===0?t:ba(e.encodings,n)},tn={l:1,m:2,h:3};function _n(e,n,t){let i=e==="mute"?"localTrackMuted":"localTrackUnmuted";if(e=="unmute"){let r=z.create({trackId:t});n.emit("sendMediaEvent",Sa({unmuteTrack:r}))}n.emit(i,{trackId:t})}function ar(e,n){return e&&!n?"mute":!e&&n?"unmute":"replace"}var rr=e=>{if(!e.track)throw new Error("Cannot create transceiver config for ");return e.track.kind==="audio"?ir(e.stream):dr(e,e.maxBandwidth)},ir=e=>({direction:"sendonly",streams:e?[e]:[]}),dr=(e,n)=>{if(!e.simulcastConfig)throw new Error(`Simulcast config for track ${e.trackId} not found.`);if(e.simulcastConfig.enabled){let t;if(n===0)t=new Map([[1,0],[2,0],[3,0]]);else{if(typeof n=="number")throw new Error("Invalid bandwidth limit for simulcast track.");t=n}return sr(e,t)}if(typeof n=="number")return or(e,n);throw new Error("LocalTrack is in invalid state!")},or=(e,n)=>({direction:"sendonly",sendEncodings:ba([{active:!0}],n),streams:e.stream?[e.stream]:[]}),sr=(e,n)=>{if(!e.simulcastConfig)throw new Error(`Simulcast config for track ${e.trackId} not found.`);let t=e.simulcastConfig.enabledVariants,i=[{rid:"l",active:t.includes(1),scaleResolutionDownBy:4},{rid:"m",active:t.includes(2),scaleResolutionDownBy:2},{rid:"h",active:t.includes(3)}];return{direction:"sendonly",sendEncodings:cr(i,n)}},cr=(e,n)=>e.filter(t=>t.rid).map(t=>{let i=!!t.rid&&tn[t.rid]||0,r=n.get(i)||0;return{...t,maxBitrate:r>0?r*1024:void 0}}),ur=class{id;mediaStreamTrackId=null;mLineId=null;trackContext;sender=null;encodings={[-1]:!1,0:!1,1:!1,2:!1,3:!1};connection;constructor(e,n,t){this.connection=e,this.id=n,this.trackContext=t,t.track?.id&&(this.mediaStreamTrackId=t.track?.id)}updateSender=()=>{this.mediaStreamTrackId&&this.connection&&(this.sender=this.connection.findSender(this.mediaStreamTrackId))};updateConnection=e=>{this.connection=e};disableTrackEncoding=async e=>{if(!this.sender)throw new Error(`RTCRtpSender for track ${this.id} not found`);let n=this.sender.getParameters(),i=n.encodings.find(r=>r.rid&&tn[r.rid]===e);if(!i)throw new Error(`RTCRtpEncodingParameters for track ${this.id} not found`);i.active=!1,this.encodings[e]=!1,await this.sender.setParameters(n)};addTrackToConnection=()=>{if(!this.trackContext.track)throw Error(`MediaStreamTrack for track ${this.id} does not exist`);if(!this.connection)throw new Error("There is no active RTCPeerConnection");let e=rr(this.trackContext);this.updateEncodings(),this.connection.addTransceiver(this.trackContext.track,e)};updateEncodings=()=>{let e=this.trackContext.simulcastConfig?.enabledVariants;this.trackContext?.track?.kind==="video"&&e&&(this.encodings[1]=e.some(n=>n===1),this.encodings[2]=e.some(n=>n===2),this.encodings[3]=e.some(n=>n===3))};removeFromConnection=()=>{if(!this.sender)throw new Error(`RTCRtpSender for track ${this.id} not found`);if(!this.connection)throw new Error("There is no active RTCPeerConnection");this.connection.removeTrack(this.sender)};replaceTrack=async(e,n)=>{let t=this.id,i=this.trackContext.stream,r=this.trackContext.track;if(!this.sender)throw Error("There is no RTCRtpSender for this track id!");i?.getTracks().forEach(d=>{i?.removeTrack(d)}),e&&i?.addTrack(e);let a=ar(this.trackContext.track,e);this.trackContext.track=e,this.mediaStreamTrackId=e?.id??null,(a==="mute"||a==="unmute")&&_n(a,n,t);try{await this.sender.replaceTrack(e)}catch{a==="mute"?_n("unmute",n,t):a==="unmute"&&_n("mute",n,t),this.trackContext.track=r,this.mediaStreamTrackId=r?.id??null}};setTrackBandwidth=e=>{if(!this.sender)throw new Error(`RTCRtpSender for track ${this.id} not found`);let n=this.sender.getParameters();return n.encodings=tr(n,e),this.sender.setParameters(n)};setEncodingBandwidth(e,n){if(!this.sender)throw new Error(`RTCRtpSender for track ${this.id} not found`);let t=this.sender.getParameters(),i=t.encodings.find(r=>r.rid&&tn[r.rid]===e);if(i)n===0?delete i.maxBitrate:i.maxBitrate=n*1024;else return Promise.reject(`Encoding with Variant '${e}' doesn't exist`);return this.sender.setParameters(t)}updateTrackMetadata=e=>{this.trackContext.metadata=e};enableTrackEncoding=e=>{if(!this.sender)throw new Error(`RTCRtpSender for track ${this.id} not found`);let n=this.sender.getParameters(),t=n.encodings.find(i=>i.rid&&tn[i.rid]===e);if(!t)throw new Error(`RTCRtEncodingParameters ${e} for track ${this.id} not found`);return t.active=!0,this.encodings[e]=!0,this.sender.setParameters(n)};setMLineId=e=>{this.mLineId=e};isNotSimulcastTrack=e=>e.length===1&&!e[0].rid;getTrackBitrates=()=>{let e=this.trackContext,n=this.trackContext.track?.kind;if(!e.track){if(!e.trackKind)throw new Error("trackContext.trackKind is empty");return ya[e.trackKind]}if(!this.sender)return;let t=this.sender.getParameters().encodings;if(this.isNotSimulcastTrack(t))return t[0].maxBitrate||(n?ya[n]:er);if(n==="audio")throw"Audio track cannot have multiple encodings";return t.filter(i=>i.rid).reduce((i,r)=>{let a=tn[r.rid]??0;return i[a]=r.maxBitrate||nr[a],i},{})};createTrackVariantBitratesEvent=()=>{}},lr=class{localTracks={};localEndpoint={id:"",type:"webrtc",metadata:void 0,tracks:new Map};emit;sendMediaEvent;connection=null;constructor(e,n){this.emit=e,this.sendMediaEvent=n}updateSenders=()=>{Object.values(this.localTracks).forEach(e=>{e.updateSender()})};updateMLineIds=e=>{Object.entries(e).forEach(([n,t])=>{this.localTracks[t]?.setMLineId(n)})};updateConnection=e=>{this.connection=e,Object.values(this.localTracks).forEach(n=>{n.updateConnection(e)})};createSdpOfferEvent=e=>{let n=this.getTrackIdToMetadataJson(),t=this.getTrackIdToTrackBitrates(),i=this.getMidToTrackId();return K.create({sdp:e.sdp,midToTrackId:i,trackIdToBitrates:t,trackIdToMetadataJson:n})};addTrack=(e,n,t,i,r,a,d)=>{let l=new Oa(this.localEndpoint,n,r,a);if(l.track=t,l.stream=i,l.maxBandwidth=d,!_a(t.kind))throw new Error("Track has no kind");l.trackKind=t.kind,this.localEndpoint.tracks.set(n,l);let T=new ur(e,n,l);return this.localTracks[n]=T,T};getTrackByMidOrNull=e=>Object.values(this.localTracks).find(n=>n.mLineId===e)??null;removeTrack=e=>{let n=this.localTracks[e];if(!n)throw new Error(`Cannot find ${e}`);n.removeFromConnection();let t=R.create({});this.sendMediaEvent({renegotiateTracks:t}),this.localEndpoint.tracks.delete(e),delete this.localTracks[e]};replaceTrack=async(e,n,t)=>{let i=this.localTracks[n];if(!i)throw new Error(`Cannot find ${n}`);await i.replaceTrack(t,e)};setEndpointMetadata=e=>{this.localEndpoint.metadata=e};getEndpoint=()=>this.localEndpoint;setTrackBandwidth=async(e,n)=>{let t=this.localTracks[e];if(!t)throw new Error(`Cannot find ${e}`);await t.setTrackBandwidth(n);let i=y.create({trackId:e,variantBitrates:[{variant:0,bitrate:n}]});this.sendMediaEvent(Xe.create({trackBitrates:i})),this.emit("localTrackBandwidthSet",{trackId:e,bandwidth:n})};getTrackIdToTrack=()=>{let e=Object.values(this.localTracks).map(n=>[n.id,n.trackContext]);return new Map(e)};setLocalEndpointId=e=>{this.localEndpoint.id=e};setEncodingBandwidth=async(e,n,t)=>{let i=this.localTracks[e];if(!i)throw new Error(`Cannot find ${e}`);await i.setEncodingBandwidth(n,t);let r=i.getTrackBitrates(),a=[];typeof r=="number"?a=[{variant:0,bitrate:r}]:r&&(a=Object.entries(r).map(([l,T])=>({variant:Number(l),bitrate:T})));let d=y.create({trackId:e,variantBitrates:a});this.sendMediaEvent(Xe.create({trackBitrates:d})),this.emit("localTrackEncodingBandwidthSet",{trackId:e,rid:n,bandwidth:t})};updateEndpointMetadata=e=>{this.localEndpoint.metadata=e;let n=q.create({metadataJson:JSON.stringify(this.localEndpoint.metadata)});this.sendMediaEvent({updateEndpointMetadata:n}),this.emit("localEndpointMetadataChanged",{metadata:this.localEndpoint.metadata})};updateLocalTrackMetadata=(e,n)=>{let t=this.localTracks[e];if(!t)throw new Error(`Cannot find ${e}`);t.updateTrackMetadata(n);let i=t.trackContext,r=F.create({trackId:e,metadataJson:n?JSON.stringify(n):void 0});switch(i.negotiationStatus){case"done":this.sendMediaEvent({updateTrackMetadata:r}),this.emit("localTrackMetadataChanged",{trackId:e,metadata:i.metadata});break;case"offered":i.pendingMetadataUpdate=!0;break;case"awaiting":break}};disableLocalTrackEncoding=async(e,n)=>{let t=this.localTracks[e];if(!t)throw new Error(`Track ${e} not found`);await t.disableTrackEncoding(n);let i=G.create({trackId:e,variant:n});this.sendMediaEvent(Xe.create({disableTrackVariant:i})),this.emit("localTrackEncodingEnabled",{trackId:e,encoding:n})};enableLocalTrackEncoding=async(e,n)=>{let t=this.localTracks[e];if(!t)throw new Error(`Cannot find ${e}`);await t.enableTrackEncoding(n);let i=Y.create({trackId:e,variant:n});this.sendMediaEvent(Xe.create({enableTrackVariant:i})),this.emit("localTrackEncodingEnabled",{trackId:e,encoding:n})};getTrackIdToMetadataJson=()=>Object.values(this.localTracks).reduce((e,{id:n,trackContext:t})=>({...e,[n]:JSON.stringify(t.metadata)}),{});getTrackIdToTrackBitrates=()=>Object.values(this.localTracks).reduce((e,{id:n})=>({...e,[n]:{bitrate:15e5}}),{});getMidToTrackId=()=>{if(!this.connection)return{};let e=this.getTransceiverMapping(),n=Object.values(this.localTracks).filter(t=>!!t.mLineId).reduce((t,{id:i,mLineId:r})=>({...t,[r]:i}),{});return{...e,...n}};getTransceiverMapping=()=>this.connection?this.connection.getConnection().getTransceivers().filter(e=>!!(e.sender.track?.id&&e.mid)).reduce((e,{sender:n,mid:t})=>{let i=Object.values(this.localTracks).find(r=>r.mediaStreamTrackId===n.track.id);if(!i)throw new Error("Local track not found");return{...e,[t]:i.id}},{}):{};setLocalTrackStatusToOffered=()=>{Object.values(this.localTracks).forEach(e=>{e.trackContext.negotiationStatus="offered"})};addAllTracksToConnection=()=>{Object.values(this.localTracks).forEach(e=>{e.addTrackToConnection()})}},fr=class{connection;local;ongoingTrackReplacement=!1;ongoingRenegotiation=!1;sendMediaEvent;constructor(e,n){this.local=e,this.sendMediaEvent=n}isNegotiationInProgress=()=>this.ongoingRenegotiation||this.ongoingTrackReplacement;cleanUp=()=>{this.ongoingTrackReplacement=!1,this.ongoingRenegotiation=!1};parseAddTrack=(e,n,t)=>{if(this.getEndpointId()==="")throw new Error("Cannot add tracks before being accepted by the server");if(!n.enabled&&typeof t!="number")throw new Error("Invalid type of `maxBandwidth` argument for a non-simulcast track, expected: number");if(this.connection?.isTrackInUse(e))throw new Error("This track was already added to peerConnection, it can't be added again!")};addTrackHandler=(e,n,t,i,r,a)=>{this.ongoingRenegotiation=!0;let d=this.local.addTrack(this.connection,e,n,t,i,r,a);this.connection&&d.addTrackToConnection(),this.sendMediaEvent({renegotiateTracks:R.create()})};removeTrackHandler=e=>{if(!this.connection)throw new Error("There is no active RTCPeerConnection");this.ongoingRenegotiation=!0,this.local.removeTrack(e)};replaceTrackHandler=async(e,n,t)=>{this.ongoingTrackReplacement=!0;try{await this.local.replaceTrack(e,n,t)}finally{this.ongoingTrackReplacement=!1}};getEndpointId=()=>this.local.getEndpoint().id;updateConnection=e=>{this.connection=e};updateSenders=()=>{this.local.updateSenders()}},kr=class{id;mLineId=null;trackContext;encodings={[-1]:!1,0:!1,1:!1,2:!1,3:!1};targetEncoding=null;constructor(e,n){this.id=e,this.trackContext=n}setMLineId=e=>{this.mLineId=e};setReady=(e,n)=>{if(!_a(n.kind))throw new Error("Track has no kind");this.trackContext.stream=e,this.trackContext.track=n,this.trackContext.trackKind=n.kind};disableTrackEncoding=e=>{this.encodings[e]=!1};enableTrackEncoding=e=>{this.encodings[e]=!0};setTargetTrackEncoding=e=>{this.targetEncoding=e;let n=this.trackContext;if(!n.simulcastConfig?.enabled)throw new Error("The track does not support changing its target variant");if(!n.simulcastConfig.enabledVariants.includes(e))throw new Error(`The track does not support variant ${e}`)}},pr=class{remoteTracks={};remoteEndpoints={};emit;sendMediaEvent;constructor(e,n){this.emit=e,this.sendMediaEvent=n}getTrackByMid=e=>{let n=Object.values(this.remoteTracks).find(t=>t.mLineId===e);if(!n)throw new Error(`Remote track with ${e} not found`);return n};addTracks=(e,n)=>{let t=this.remoteEndpoints[e];if(!t)throw new Error(`Endpoint ${e} not found`);Object.entries(n).map(([i,{metadataJson:r,simulcastConfig:a}])=>{let d=r?JSON.parse(r):void 0,l=new Oa(t,i,d,a);return new kr(i,l)}).forEach(i=>{this.remoteTracks[i.id]=i,t.tracks.set(i.id,i.trackContext),this.emit("trackAdded",i.trackContext)})};removeTracks=e=>{e.forEach(n=>{this.removeRemoteTrack(n)})};removeRemoteTrack=e=>{let n=this.remoteTracks[e];if(!n)throw new Error(`Track ${e} not found`);let t=this.remoteEndpoints[n.trackContext.endpoint.id];if(!t)throw new Error(`Endpoint ${n.trackContext.endpoint.id} not found`);t.tracks.delete(e),delete this.remoteTracks[e],this.emit("trackRemoved",n.trackContext)};addRemoteEndpoint=(e,n,t,i=!0)=>{let r={id:e,type:"exwebrtc",metadata:n?JSON.parse(n):void 0,tracks:new Map};this.addEndpoint(r),this.addTracks(r.id,t??{}),i&&this.emit("endpointAdded",r)};addEndpoint=e=>{this.remoteEndpoints[e.id]=e};updateRemoteEndpoint=(e,n)=>{let t=this.remoteEndpoints[e];if(!t)throw new Error(`Endpoint ${e} not found`);t.metadata=n?JSON.parse(n):void 0,this.emit("endpointUpdated",t)};removeRemoteEndpoint=e=>{let n=this.remoteEndpoints[e];if(!n)throw new Error(`Endpoint ${e} not found`);let t=[...n.tracks.values()].map(({trackId:i})=>i);this.removeTracks(t),delete this.remoteEndpoints[e],this.emit("endpointRemoved",n)};updateRemoteTrack=(e,n,t)=>{if(!this.remoteEndpoints[e])throw new Error(`Endpoint ${e} not found`);let i=this.remoteTracks[n];if(!i)throw new Error(`Track ${n} not found`);i.trackContext.metadata=t?JSON.parse(t):void 0,this.emit("trackUpdated",i.trackContext)};disableRemoteTrackEncoding=(e,n)=>{let t=this.remoteTracks[e];if(!t)throw new Error(`Track ${e} not found`);t.disableTrackEncoding(n),this.emit("trackEncodingDisabled",t.trackContext,n)};enableRemoteTrackEncoding=(e,n)=>{let t=this.remoteTracks[e];if(!t)throw new Error(`Track ${e} not found`);t.enableTrackEncoding(n),this.emit("trackEncodingEnabled",t.trackContext,n)};setRemoteTrackEncoding=(e,n,t)=>{let i=this.remoteTracks[e];if(!i)throw new Error(`Track ${e} not found`);i.trackContext.encoding=n,i.trackContext.encodingReason=t,i.trackContext.emit("encodingChanged",i.trackContext)};setRemoteTrackVadStatus=(e,n)=>{let t=this.remoteTracks[e];if(!t)throw new Error(`Track ${e} not found`);let i=null;n===1?i="silence":n===2&&(i="speech"),i?(t.trackContext.vadStatus=i,t.trackContext.emit("voiceActivityChanged",t.trackContext)):console.warn("Received unknown vad status: ",n)};getRemoteTrackContexts=()=>Object.values(this.remoteTracks).reduce((e,n)=>({...e,[n.trackContext.trackId]:n.trackContext}),{});getRemoteEndpoints=()=>Object.values(this.remoteEndpoints).reduce((e,n)=>({...e,[n.id]:n}),{});setTargetRemoteTrackEncoding=(e,n)=>{let t=this.remoteTracks[e];if(!t)throw new Error(`Track ${e} not found`);try{t.setTargetTrackEncoding(n);let i=Z.create({variant:n,trackId:e});this.sendMediaEvent({setTargetTrackVariant:i}),this.emit("targetTrackEncodingRequested",{trackId:e,variant:n})}catch(i){console.warn(i)}};updateMLineIds=e=>{Object.entries(e).forEach(([n,t])=>{this.remoteTracks[t]?.setMLineId(n)})}},Pa=class extends qa{localTrackManager;remote;local;commandsQueue;dataChannelManager;proposedIceServers=[];logger;bandwidthEstimation=BigInt(0);connectionManager;clearConnectionCallbacks=null;constructor(e={}){super(),this.logger=Jn(!!e.debug);let n=a=>this.sendMediaEvent(a),t=(a,...d)=>{this.emit(a,...d)};this.remote=new pr(t,n),this.local=new lr(t,n),this.localTrackManager=new fr(this.local,n),this.commandsQueue=new Ga(this.localTrackManager);let i=(a,d)=>(this.connectionManager||(this.connectionManager=new zt(this.proposedIceServers)),this.connectionManager.createDataChannel(a,d)),r=()=>{this.sendMediaEvent({renegotiateTracks:R.create()})};this.dataChannelManager=new Za(i,r,this.logger),this.dataChannelManager.on("ready",()=>{this.emit("dataChannelsReady")}),this.dataChannelManager.on("data",a=>{this.emit("dataChannelPayload",a)}),this.dataChannelManager.on("error",(a,d)=>{this.emit("dataChannelsError",new Error(`Data channel error event: ${d.type}`))})}connect=e=>{this.local.setEndpointMetadata(e);let n=$.create({metadataJson:JSON.stringify(e)});this.sendMediaEvent({connect:n})};receiveMediaEvent=async e=>{let n=Xa(e);if(n.connected){let t=n.connected;this.proposedIceServers=t.iceServers,this.local.setLocalEndpointId(t.endpointId);let i=t.endpointIdToEndpoint[t.endpointId]?.metadataJson;i&&this.local.setEndpointMetadata(JSON.parse(i));let r=t.endpointIdToEndpoint[t.endpointId];if(r?.metadataJson){let d=JSON.parse(r?.metadataJson);this.local.setEndpointMetadata(d)}Object.entries(t.endpointIdToEndpoint).filter(([d])=>d!==this.local.getEndpoint().id).forEach(([d,l])=>{this.remote.addRemoteEndpoint(d,l.metadataJson,l.trackIdToTrack)});let a=Object.values(this.remote.getRemoteEndpoints());this.emit("connected",this.local.getEndpoint().id,a);return}this.getEndpointId()&&await this.handleMediaEvent(n)};getEndpointId=()=>this.local.getEndpoint().id;onTrackReady=e=>{let n=e.streams[0];if(!n)throw new Error("Cannot find media stream");let t=e.transceiver.mid,i=this.remote.getTrackByMid(t);i.setReady(n,e.track),this.emit("trackReady",i.trackContext)};async getStatistics(e){return await this.connectionManager?.getConnection().getStats(e)??new Map}getRemoteTracks(){return this.remote.getRemoteTrackContexts()}getRemoteEndpoints(){return this.remote.getRemoteEndpoints()}getLocalEndpoint(){return this.local.getEndpoint()}getBandwidthEstimation(){return this.bandwidthEstimation}getDataChannelsReadiness(){return this.dataChannelManager?.getChannelsReadiness()??!1}handleMediaEvent=async e=>{if(e.offerData)await this.onOfferData(e.offerData);else if(e.tracksAdded){this.localTrackManager.ongoingRenegotiation=!0;let{trackIdToTrack:n,endpointId:t}=e.tracksAdded;if(this.getEndpointId()===t)return;this.remote.addTracks(t,n)}else if(e.tracksRemoved){let{endpointId:n,trackIds:t}=e.tracksRemoved;if(this.getEndpointId()===n)return;this.remote.removeTracks(t)}else if(e.sdpAnswer)this.localTrackManager.ongoingRenegotiation=!1,await this.onSdpAnswer(e.sdpAnswer),this.commandsQueue.processNextCommand();else if(e.candidate)await this.onRemoteCandidate(e.candidate);else if(e.endpointAdded){let{endpointId:n,metadataJson:t}=e.endpointAdded;if(n===this.getEndpointId())return;this.remote.addRemoteEndpoint(n,t)}else if(e.endpointRemoved){let{endpointId:n}=e.endpointRemoved;if(n===this.local.getEndpoint().id){this.cleanUp(),this.emit("disconnected");return}if(this.getEndpointId()===n)return;this.remote.removeRemoteEndpoint(n)}else if(e.endpointUpdated){let{endpointId:n,metadataJson:t}=e.endpointUpdated;if(this.getEndpointId()===n)return;this.remote.updateRemoteEndpoint(n,t)}else if(e.trackUpdated){let{endpointId:n,trackId:t,metadataJson:i}=e.trackUpdated;if(this.getEndpointId()===n)return;this.remote.updateRemoteTrack(n,t,i)}else if(e.vadNotification){let{trackId:n,status:t}=e.vadNotification;this.remote.setRemoteTrackVadStatus(n,t)}else if(e.error)this.logger.warn("signaling error",{message:e.error.message}),this.emit("signalingError",{message:e.error.message}),this.disconnect();else if(e.trackVariantSwitched){let{trackId:n,variant:t}=e.trackVariantSwitched;this.remote.setRemoteTrackEncoding(n,t)}else if(e.trackVariantEnabled){let{trackId:n,variant:t}=e.trackVariantEnabled;this.remote.enableRemoteTrackEncoding(n,t)}else if(e.trackVariantDisabled){let{trackId:n,variant:t}=e.trackVariantDisabled;this.remote.disableRemoteTrackEncoding(n,t)}};onSdpAnswer=async e=>{if(this.remote.updateMLineIds(e.midToTrackId),this.local.updateMLineIds(e.midToTrackId),Object.keys(e.midToTrackId).map(n=>{if(!n)throw new Error("TrackId is not defined");return n}).map(n=>this.local.getTrackByMidOrNull(n)).filter(n=>n!==null).forEach(n=>{let t=n.trackContext;if(t.negotiationStatus="done",t.pendingMetadataUpdate){let i=F.create({trackId:n.id,metadataJson:JSON.stringify(t.metadata)});this.sendMediaEvent({updateTrackMetadata:i})}t.pendingMetadataUpdate=!1}),!this.connectionManager)throw new Error("There is no active RTCPeerConnection");this.connectionManager.setOnTrackReady(n=>{this.onTrackReady(n)});try{await this.connectionManager.setRemoteDescription({sdp:e.sdp,type:"answer"})}catch(n){this.logger.error(n)}};async addTrack(e,n,t={enabled:!1,enabledVariants:[],disabledVariants:[]},i=0){let r=new Sn,a=this.getTrackId(Ka()),d=new MediaStream,l={enabled:!1,enabledVariants:[],disabledVariants:[]},T=typeof i=="number"&&i>0?i:0;try{d.addTrack(e),this.commandsQueue.pushCommand({handler:async()=>this.localTrackManager.addTrackHandler(a,e,d,n,l,T),parse:()=>this.localTrackManager.parseAddTrack(e,l,T),resolve:"after-renegotiation",resolutionNotifier:r})}catch(S){r.reject(S)}return await r.promise,this.emit("localTrackAdded",{trackId:a,track:e,stream:d,trackMetadata:n,simulcastConfig:l,maxBandwidth:T}),a}async replaceTrack(e,n){let t=new Sn;return this.commandsQueue.pushCommand({handler:()=>this.localTrackManager.replaceTrackHandler(this,e,n),resolutionNotifier:t,resolve:"on-handler-resolve"}),t.promise.then(()=>{this.emit("localTrackReplaced",{trackId:e,track:n})})}setTrackBandwidth(e,n){if(!this.connectionManager)throw new Error("There is no active RTCPeerConnection");return this.local.setTrackBandwidth(e,n)}async setEncodingBandwidth(e,n,t){if(!this.connectionManager)throw new Error("There is no active RTCPeerConnection");return await this.local.setEncodingBandwidth(e,n,t)}async removeTrack(e){let n=new Sn;this.commandsQueue.pushCommand({handler:async()=>this.localTrackManager.removeTrackHandler(e),resolutionNotifier:n,resolve:"after-renegotiation"}),await n.promise,this.emit("localTrackRemoved",{trackId:e})}setTargetTrackEncoding(e,n){this.remote.setTargetRemoteTrackEncoding(e,n)}enableTrackEncoding=async(e,n)=>{await this.local.enableLocalTrackEncoding(e,n)};disableTrackEncoding=async(e,n)=>{await this.local.disableLocalTrackEncoding(e,n)};updateEndpointMetadata=e=>{this.local.updateEndpointMetadata(e)};updateTrackMetadata=(e,n)=>{this.local.updateLocalTrackMetadata(e,n)};disconnect=()=>{let e=H.create();this.sendMediaEvent({disconnect:e}),this.emit("disconnectRequested",{}),this.cleanUp()};connectDataChannels=()=>this.dataChannelManager.connect();publishData=(e,n)=>{this.dataChannelManager.publishData(e,n)};cleanUp=()=>{this.connectionManager&&(this.clearConnectionCallbacks?.(),this.connectionManager?.getConnection().close(),this.commandsQueue.cleanUp(),this.localTrackManager.cleanUp(),this.dataChannelManager?.cleanup()),this.connectionManager=void 0};getTrackId(e){return`${this.getEndpointId()}:${e}`}sendMediaEvent=e=>{this.emit("sendMediaEvent",Sa(e))};async createAndSendOffer(){let e=this.connectionManager;if(e)try{this.localTrackManager.updateSenders();let n=await e.getConnection().createOffer();if(!this.connectionManager){this.logger.warn("RTCPeerConnection stopped or restarted");return}if(await e.getConnection().setLocalDescription(n),!this.connectionManager){this.logger.warn("RTCPeerConnection stopped or restarted");return}let t=this.local.createSdpOfferEvent(n);this.sendMediaEvent({sdpOffer:t}),this.local.setLocalTrackStatusToOffered()}catch(n){this.logger.error(n)}}onOfferData=async e=>{let n=this.connectionManager??this.createNewConnection();e.tracksTypes&&n.addTransceiversIfNeeded(e.tracksTypes),await this.createAndSendOffer()};setupConnectionListeners=e=>{let n=a=>this.onLocalCandidate(a),t=a=>this.onIceCandidateError(a),i=a=>this.onConnectionStateChange(a),r=a=>this.onIceConnectionStateChange(a);this.clearConnectionCallbacks=()=>{e.removeEventListener("icecandidate",n),e.removeEventListener("icecandidateerror",t),e.removeEventListener("connectionstatechange",i),e.removeEventListener("iceconnectionstatechange",r)},e.addEventListener("icecandidate",n),e.addEventListener("icecandidateerror",t),e.addEventListener("connectionstatechange",i),e.addEventListener("iceconnectionstatechange",r)};createNewConnection=()=>{let e=new zt(this.proposedIceServers);return this.localTrackManager.updateConnection(e),this.local.updateConnection(e),this.setupConnectionListeners(e.getConnection()),this.commandsQueue.initConnection(e),this.local.addAllTracksToConnection(),this.connectionManager=e,e};onRemoteCandidate=async e=>{try{let n=new RTCIceCandidate(e);if(!this.connectionManager)throw new Error("Received new remote candidate but RTCConnection is undefined");await this.connectionManager.addIceCandidate(n)}catch(n){this.logger.error(n)}};onLocalCandidate=e=>{if(!e.candidate)return;let n=C.create({candidate:e.candidate.candidate,sdpMLineIndex:e.candidate.sdpMLineIndex??void 0,sdpMid:e.candidate.sdpMid??void 0,usernameFragment:e.candidate.usernameFragment??void 0});this.sendMediaEvent({candidate:n})};onIceCandidateError=e=>{this.logger.warn(e)};onConnectionStateChange=e=>{switch(this.localTrackManager.connection?.getConnection().connectionState){case"failed":this.emit("connectionError",{message:"RTCPeerConnection failed",event:e});break}};onIceConnectionStateChange=e=>{switch(this.localTrackManager.connection?.getConnection().iceConnectionState){case"disconnected":this.logger.warn("ICE connection: disconnected"),this.sendMediaEvent({renegotiateTracks:R.create()});break;case"failed":this.emit("connectionError",{message:"ICE connection failed",event:e});break}}};import{EventEmitter as hr}from"events";function Ca(e){return new Promise((n,t)=>{let i=()=>{a(),n()},r=()=>{a(),t()};e.on("joined",i),e.on("joinError",r),e.on("authError",r),e.on("socketError",r);let a=()=>{e.removeListener("joined",i),e.removeListener("joinError",r),e.removeListener("authError",r),e.removeListener("socketError",r)}})}var J=e=>e.type==="webrtc"||e.type==="exwebrtc",je=e=>e.type==="recording"||e.type==="hls"||e.type==="file"||e.type==="rtsp"||e.type==="sip",wa=["reached peers limit","room not found","node not found","Invalid SDK version"],an=e=>wa.some(n=>e.trim().toLowerCase().includes(n.trim().toLowerCase()));var un=class{queuedMessages=[];checkIsReconnecting;sendMessage;constructor({checkIsReconnecting:n,sendMessage:t}){this.checkIsReconnecting=n,this.sendMessage=t}enqueueMessage(n){this.queuedMessages.push(n),this.attemptToSendAll()}attemptToSendAll(){if(!this.checkIsReconnecting())for(;this.queuedMessages.length>0;){let t=this.queuedMessages.shift();t&&this.sendMessage(t)}}};var vr={maxAttempts:0,initialDelay:0,delay:0,addTracksOnReconnect:!1},rn={maxAttempts:3,initialDelay:500,delay:500,addTracksOnReconnect:!1},ln=class{reconnectConfig;connect;client;initialPeerMetadata=void 0;reconnectAttempt=0;reconnectTimeoutId=null;status="idle";lastLocalEndpoint=null;removeEventListeners=()=>{};constructor(n,t,i){this.client=n,this.connect=t,this.reconnectConfig=Tr(i);let r=()=>{this.reconnect()};this.client.on("socketError",r);let a=()=>{this.reconnect()};this.client.on("connectionError",a);let d=T=>{en(T.reason)||an(T.reason)||this.reconnect()};this.client.on("socketClose",d);let l=()=>{this.reset(this.initialPeerMetadata)};this.client.on("authSuccess",l),this.removeEventListeners=()=>{this.client.off("socketError",r),this.client.off("connectionError",a),this.client.off("socketClose",d),this.client.off("authSuccess",l)}}isReconnecting(){return this.status==="reconnecting"}reset(n){this.initialPeerMetadata=n,this.reconnectAttempt=0,this.reconnectTimeoutId&&clearTimeout(this.reconnectTimeoutId),this.reconnectTimeoutId=null}getLastPeerMetadata(){return this.lastLocalEndpoint?.metadata?.peer}reconnect(){if(this.reconnectTimeoutId)return;if(this.reconnectAttempt>=this.reconnectConfig.maxAttempts){this.status==="reconnecting"&&(this.status="error",this.client.emit("reconnectionRetriesLimitReached"));return}this.status!=="reconnecting"&&(this.status="reconnecting",this.client.emit("reconnectionStarted"),this.lastLocalEndpoint=this.client.getLocalPeer()||null);let n=this.reconnectConfig.initialDelay+this.reconnectAttempt*this.reconnectConfig.delay;this.reconnectAttempt+=1,this.reconnectTimeoutId=setTimeout(()=>{this.reconnectTimeoutId=null;let t=this.getLastPeerMetadata()??this.initialPeerMetadata;this.connect(t)},n)}async handleReconnect(){if(this.status==="reconnecting"){if(this.lastLocalEndpoint&&this.reconnectConfig.addTracksOnReconnect)for await(let n of this.lastLocalEndpoint.tracks){let[t,i]=n;if(!i.track||i.track.readyState!=="live")return;await this.client.addTrack(i.track,i.metadata,i.simulcastConfig,i.maxBandwidth)}this.lastLocalEndpoint=null,this.status="idle",this.client.emit("reconnected")}}cleanup(){this.removeEventListeners(),this.removeEventListeners=()=>{}}},Tr=e=>e?e===!0?rn:{maxAttempts:e?.maxAttempts??rn.maxAttempts,initialDelay:e?.initialDelay??rn.initialDelay,delay:e?.delay??rn.delay,addTracksOnReconnect:e?.addTracksOnReconnect??rn.addTracksOnReconnect}:vr;var Na="0.25.0";var Ra=Na;var Ir=1e4,Ja="socket/peer/websocket",xn=class extends hr{websocket=null;webrtc=null;removeEventListeners=null;debug;logger;clientType;status="new";connectConfig=null;isAudioOnlyConnection=!1;reconnectManager;peerMessageQueue;sendStatisticsInterval=void 0;constructor(n){super(),this.debug=!!n?.debug,this.logger=Jn(this.debug),this.clientType=n?.clientType??"web",this.reconnectManager=new ln(this,t=>this.initConnection(t),n?.reconnect??!0),this.peerMessageQueue=new un({sendMessage:t=>this.websocket?.send(t),checkIsReconnecting:()=>this.reconnectManager.isReconnecting()}),this.on("reconnected",()=>this.peerMessageQueue.attemptToSendAll())}async connect(n){this.emit("connectionStarted");let t=Ca(this);return this.reconnectManager.reset(n.peerMetadata),this.connectConfig=n,this.initConnection(n.peerMetadata),t}async initConnection(n){this.status==="initialized"&&this.disconnect(),this.webrtc=new Pa({debug:this.debug}),this.initWebsocket(n),this.setupCallbacks(),this.status="initialized"}getUrl(n){return n.endsWith("/")?`${n}${Ja}`:`${n}/${Ja}`}initWebsocket(n){if(!this.connectConfig)throw Error("ConnectConfig is null");let{token:t,url:i}=this.connectConfig,r=this.getUrl(i);this.websocket=new WebSocket(r),this.websocket.binaryType="arraybuffer";let a=S=>{this.emit("socketOpen",S);let fn=`${this.clientType}-${Ra}`,L=Je.encode({authRequest:{token:t,sdkVersion:fn}}).finish();this.websocket?.send(L)},d=S=>{this.emit("socketError",S)},l=S=>{en(S.reason)&&this.emit("authError",S.reason),an(S.reason)&&this.emit("joinError",S.reason),this.logger.warn(`Socket closed with reason: ${S.reason}`),this.emit("socketClose",S)};this.websocket.addEventListener("open",a),this.websocket.addEventListener("error",d),this.websocket.addEventListener("close",l);let T=S=>{let fn=new Uint8Array(S.data);try{let L=Je.decode(fn),An=L.serverMediaEvent;L.authenticated?(this.isAudioOnlyConnection=L.authenticated.roomType===2,this.emit("authSuccess"),this.webrtc?.connect(n)):L.authRequest?this.logger.warn("Received unexpected control message: authRequest"):An&&this.webrtc?.receiveMediaEvent(B.encode(An).finish())}catch(L){this.logger.warn(`Received invalid control message, error: ${L}`)}};this.websocket.addEventListener("message",T),this.removeEventListeners=()=>{this.websocket?.removeEventListener("open",a),this.websocket?.removeEventListener("error",d),this.websocket?.removeEventListener("close",l),this.websocket?.removeEventListener("message",T)}}async getStatistics(n){return await this.webrtc?.getStatistics(n)??new Map}getRemoteTracks(){return this.webrtc?.getRemoteTracks()??{}}getRemotePeers(){return Object.entries(this.webrtc?.getRemoteEndpoints()??{}).reduce((n,[t,i])=>J(i)?{...n,[t]:i}:n,{})}getRemoteComponents(){return Object.entries(this.webrtc?.getRemoteEndpoints()??{}).reduce((n,[t,i])=>je(i)?{...n,[t]:i}:n,{})}getLocalPeer(){return this.webrtc?.getLocalEndpoint()||null}getBandwidthEstimation(){if(!this.webrtc)throw Error("Webrtc not initialized");return this.webrtc?.getBandwidthEstimation()}isConnectingRelatedEvent(n){return!!(n.connect||n.renegotiateTracks||n.sdpOffer||n.candidate)}setupCallbacks(){this.webrtc?.on("sendMediaEvent",n=>{let t=x.decode(n),i=Je.encode({peerMediaEvent:t}).finish();this.isConnectingRelatedEvent(t)?this.websocket?.send(i):this.peerMessageQueue.enqueueMessage(i)}),this.webrtc?.on("connected",async(n,t)=>{let i=t.filter(a=>J(a)).map(a=>a),r=t.filter(a=>je(a)).map(a=>a);await this.reconnectManager.handleReconnect(),this.sendStatisticsInterval=setInterval(()=>this.sendStatistics(),Ir),this.emit("joined",n,i,r)}),this.webrtc?.on("disconnected",()=>{this.emit("disconnected"),clearInterval(this.sendStatisticsInterval)}),this.webrtc?.on("endpointAdded",n=>{J(n)&&this.emit("peerJoined",n),je(n)&&this.emit("componentAdded",n)}),this.webrtc?.on("endpointRemoved",n=>{J(n)&&this.emit("peerLeft",n),je(n)&&this.emit("componentRemoved",n)}),this.webrtc?.on("endpointUpdated",n=>{J(n)&&this.emit("peerUpdated",n),je(n)&&this.emit("componentUpdated",n)}),this.webrtc?.on("trackReady",n=>{J(n.endpoint)&&this.emit("trackReady",n)}),this.webrtc?.on("trackAdded",n=>{J(n.endpoint)&&this.emit("trackAdded",n)}),this.webrtc?.on("trackRemoved",n=>{J(n.endpoint)&&(this.emit("trackRemoved",n),n.removeAllListeners())}),this.webrtc?.on("trackUpdated",n=>{J(n.endpoint)&&this.emit("trackUpdated",n)}),this.webrtc?.on("tracksPriorityChanged",(n,t)=>{this.emit("tracksPriorityChanged",n,t)}),this.webrtc?.on("signalingError",n=>{this.emit("joinError",n)}),this.webrtc?.on("connectionError",n=>{this.emit("connectionError",n)}),this.webrtc?.on("bandwidthEstimationChanged",n=>{this.emit("bandwidthEstimationChanged",n)}),this.webrtc?.on("targetTrackEncodingRequested",n=>{this.emit("targetTrackEncodingRequested",n)}),this.webrtc?.on("localTrackAdded",n=>{this.emit("localTrackAdded",n)}),this.webrtc?.on("localTrackRemoved",n=>{this.emit("localTrackRemoved",n)}),this.webrtc?.on("localTrackReplaced",n=>{this.emit("localTrackReplaced",n)}),this.webrtc?.on("localTrackBandwidthSet",n=>{this.emit("localTrackBandwidthSet",n)}),this.webrtc?.on("localTrackMuted",n=>{this.emit("localTrackMuted",n)}),this.webrtc?.on("localTrackUnmuted",n=>{this.emit("localTrackUnmuted",n)}),this.webrtc?.on("localTrackBandwidthSet",n=>{this.emit("localTrackBandwidthSet",n)}),this.webrtc?.on("localTrackEncodingEnabled",n=>{this.emit("localTrackEncodingEnabled",n)}),this.webrtc?.on("localTrackEncodingDisabled",n=>{this.emit("localTrackEncodingDisabled",n)}),this.webrtc?.on("localEndpointMetadataChanged",n=>{this.emit("localPeerMetadataChanged",n)}),this.webrtc?.on("localTrackMetadataChanged",n=>{this.emit("localTrackMetadataChanged",n)}),this.webrtc?.on("disconnectRequested",n=>{this.emit("disconnectRequested",n)}),this.webrtc?.on("dataChannelsReady",()=>{this.emit("dataChannelsReady")}),this.webrtc?.on("dataChannelsError",n=>{this.emit("dataChannelsError",n)})}async sendStatistics(){let n=await this.getStatistics(),t={};n.forEach((r,a)=>{(r.type==="inbound-rtp"||r.type==="outbound-rtp")&&(t[a]=r)});let i=Je.encode({rtcStatsReport:{data:JSON.stringify(t)}}).finish();this.peerMessageQueue.enqueueMessage(i)}on(n,t){return super.on(n,t)}off(n,t){return super.off(n,t)}handleWebRTCNotInitialized(){return new Error("WebRTC is not initialized")}addTrack(n,t,i={enabled:!1,enabledVariants:[],disabledVariants:[]},r=0){if(!this.webrtc)throw this.handleWebRTCNotInitialized();if(this.isAudioOnlyConnection&&n.kind!=="audio")throw new nn;return this.webrtc.addTrack(n,t,i,r)}async replaceTrack(n,t){if(!this.webrtc)throw this.handleWebRTCNotInitialized();return this.webrtc.replaceTrack(n,t)}async setTrackBandwidth(n,t){if(!this.webrtc)throw this.handleWebRTCNotInitialized();return await this.webrtc.setTrackBandwidth(n,t),!0}async setEncodingBandwidth(n,t,i){if(!this.webrtc)throw this.handleWebRTCNotInitialized();return await this.webrtc.setEncodingBandwidth(n,t,i),!0}removeTrack(n){if(!this.webrtc)throw this.handleWebRTCNotInitialized();return this.webrtc.removeTrack(n)}setTargetTrackEncoding(n,t){if(!this.webrtc)throw this.handleWebRTCNotInitialized();return this.webrtc.setTargetTrackEncoding(n,t)}enableTrackEncoding(n,t){if(!this.webrtc)throw this.handleWebRTCNotInitialized();return this.webrtc.enableTrackEncoding(n,t)}disableTrackEncoding(n,t){if(!this.webrtc)throw this.handleWebRTCNotInitialized();return this.webrtc.disableTrackEncoding(n,t)}updatePeerMetadata=n=>{if(!this.webrtc)throw this.handleWebRTCNotInitialized();this.webrtc.updateEndpointMetadata(n)};updateTrackMetadata=(n,t)=>{if(!this.webrtc)throw this.handleWebRTCNotInitialized();this.webrtc.updateTrackMetadata(n,t)};isReconnecting(){return this.reconnectManager.isReconnecting()}getDataChannelsReadiness(){return this.webrtc?.getDataChannelsReadiness()??!1}leave=()=>{if(!this.webrtc)throw this.handleWebRTCNotInitialized();this.webrtc.disconnect()};isOpen(n){return n?.readyState===1}createDataChannels(){if(!this.webrtc)throw this.handleWebRTCNotInitialized();return this.webrtc.connectDataChannels()}publishData(n,t){if(!this.webrtc)throw this.handleWebRTCNotInitialized();let i=dn.encode({source:"mock",destinations:["*"],binary:{data:n}}).finish();this.webrtc.publishData(i,t)}subscribeData(n,t){if(!this.webrtc)throw this.handleWebRTCNotInitialized();let i=({channelType:r,data:a})=>{if(!(t.reliable&&r!=="reliable")&&!(!t.reliable&&r!=="lossy"))try{let{binary:d}=dn.decode(a);d&&n(d.data)}catch(d){this.logger.warn(`Received invalid channel message, error: ${d}`)}};return this.webrtc.on("dataChannelPayload",i),()=>this.webrtc?.off("dataChannelPayload",i)}disconnect(){try{this.webrtc?.removeAllListeners(),this.webrtc?.disconnect(),this.webrtc?.cleanUp()}catch(n){this.logger.warn(n)}this.removeEventListeners?.(),this.removeEventListeners=null,this.isOpen(this.websocket||null)&&this.websocket?.close(),this.websocket=null,this.webrtc=null,this.emit("disconnected")}cleanup(){this.reconnectManager.cleanup()}};import{WHEPClient as Mr}from"@binbat/whip-whep/whep";import{WHIPClient as mr}from"@binbat/whip-whep/whip";var xa=(r=>(r.UNAUTHORIZED="unauthorized",r.STREAM_NOT_FOUND="stream_not_found",r.UNKNOWN_ERROR="unknown_error",r.STREAMER_ALREADY_CONNECTED="streamer_already_connected",r))(xa||{});function yr(e,n,t){let i=new RTCPeerConnection({bundlePolicy:"max-bundle"});i.addTransceiver("video",{direction:"recvonly"}),i.addTransceiver("audio",{direction:"recvonly"}),i.onconnectionstatechange=a=>t?.onConnectionStateChange?.(i);let r=new Mr;return new Promise((a,d)=>{i.ontrack=l=>{let T=l.streams[0];T&&a({stream:T,stop:async()=>{await r.stop(),t?.onConnectionStateChange?.(i)}})},r.view(i,e,n).catch(l=>{if(l instanceof Error){let T="unknown_error";l.message.includes("401")?T="unauthorized":l.message.includes("404")&&(T="stream_not_found"),d(T)}})})}async function gr(e,n,t,i){let r=new RTCPeerConnection({bundlePolicy:"max-bundle"});r.onconnectionstatechange=T=>i?.onConnectionStateChange?.(r);let a=e.getVideoTracks().at(0),d=e.getAudioTracks().at(0);if(!a&&!d)throw Error("To publish a livestream with WHIP, you need to supply at least one video or audio track.");a&&r.addTransceiver(a,{direction:"sendonly"}),d&&r.addTransceiver(d,{direction:"sendonly"});let l=new mr;try{await l.publish(r,n,t)}catch(T){if(T instanceof Error){if(T.message.includes("401"))throw"unauthorized";if(T.message.includes("404"))throw"stream_not_found";if(T.message.includes("409"))throw"streamer_already_connected"}throw"unknown_error"}return{stopPublishing:async()=>{await l.stop(),i?.onConnectionStateChange?.(r)}}}export{Bn as AUTH_ERROR_REASONS,xn as FishjamClient,wa as JOIN_ERRORS,xa as LivestreamError,Ae as SimulcastConfig,nn as TrackTypeError,Ha as Variant,Pa as WebRTCEndpoint,Jn as getLogger,en as isAuthError,an as isJoinError,gr as publishLivestream,yr as receiveLivestream};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fishjam-cloud/ts-client",
|
|
3
|
-
"version": "0.25.0
|
|
3
|
+
"version": "0.25.0",
|
|
4
4
|
"description": "Typescript client library for Fishjam",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"author": "Fishjam Team",
|
|
@@ -46,7 +46,7 @@
|
|
|
46
46
|
},
|
|
47
47
|
"devDependencies": {
|
|
48
48
|
"@fishjam-cloud/protobufs": "0.10.2",
|
|
49
|
-
"@fishjam-cloud/webrtc-client": "0.25.0
|
|
49
|
+
"@fishjam-cloud/webrtc-client": "0.25.0",
|
|
50
50
|
"@playwright/test": "^1.51.1",
|
|
51
51
|
"@types/events": "^3.0.3",
|
|
52
52
|
"@types/node": "^22.14.0",
|
|
@@ -71,6 +71,5 @@
|
|
|
71
71
|
"yarn lint"
|
|
72
72
|
]
|
|
73
73
|
},
|
|
74
|
-
"packageManager": "yarn@4.12.0"
|
|
75
|
-
"stableVersion": "0.24.0"
|
|
74
|
+
"packageManager": "yarn@4.12.0"
|
|
76
75
|
}
|