livekit-client 0.18.4-RC7 → 0.18.5

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.
Files changed (127) hide show
  1. package/README.md +2 -5
  2. package/dist/api/RequestQueue.d.ts +13 -12
  3. package/dist/api/RequestQueue.d.ts.map +1 -0
  4. package/dist/api/SignalClient.d.ts +67 -66
  5. package/dist/api/SignalClient.d.ts.map +1 -0
  6. package/dist/connect.d.ts +24 -23
  7. package/dist/connect.d.ts.map +1 -0
  8. package/dist/index.d.ts +27 -26
  9. package/dist/index.d.ts.map +1 -0
  10. package/dist/livekit-client.esm.mjs +638 -517
  11. package/dist/livekit-client.esm.mjs.map +1 -1
  12. package/dist/livekit-client.umd.js +1 -1
  13. package/dist/livekit-client.umd.js.map +1 -1
  14. package/dist/logger.d.ts +26 -25
  15. package/dist/logger.d.ts.map +1 -0
  16. package/dist/options.d.ts +128 -127
  17. package/dist/options.d.ts.map +1 -0
  18. package/dist/proto/google/protobuf/timestamp.d.ts +133 -132
  19. package/dist/proto/google/protobuf/timestamp.d.ts.map +1 -0
  20. package/dist/proto/livekit_models.d.ts +876 -875
  21. package/dist/proto/livekit_models.d.ts.map +1 -0
  22. package/dist/proto/livekit_rtc.d.ts +3904 -3903
  23. package/dist/proto/livekit_rtc.d.ts.map +1 -0
  24. package/dist/room/DeviceManager.d.ts +8 -7
  25. package/dist/room/DeviceManager.d.ts.map +1 -0
  26. package/dist/room/PCTransport.d.ts +16 -15
  27. package/dist/room/PCTransport.d.ts.map +1 -0
  28. package/dist/room/RTCEngine.d.ts +67 -66
  29. package/dist/room/RTCEngine.d.ts.map +1 -0
  30. package/dist/room/Room.d.ts +166 -165
  31. package/dist/room/Room.d.ts.map +1 -0
  32. package/dist/room/errors.d.ts +29 -28
  33. package/dist/room/errors.d.ts.map +1 -0
  34. package/dist/room/events.d.ts +391 -390
  35. package/dist/room/events.d.ts.map +1 -0
  36. package/dist/room/participant/LocalParticipant.d.ts +126 -125
  37. package/dist/room/participant/LocalParticipant.d.ts.map +1 -0
  38. package/dist/room/participant/Participant.d.ts +94 -93
  39. package/dist/room/participant/Participant.d.ts.map +1 -0
  40. package/dist/room/participant/ParticipantTrackPermission.d.ts +26 -25
  41. package/dist/room/participant/ParticipantTrackPermission.d.ts.map +1 -0
  42. package/dist/room/participant/RemoteParticipant.d.ts +40 -39
  43. package/dist/room/participant/RemoteParticipant.d.ts.map +1 -0
  44. package/dist/room/participant/publishUtils.d.ts +18 -17
  45. package/dist/room/participant/publishUtils.d.ts.map +1 -0
  46. package/dist/room/stats.d.ts +66 -65
  47. package/dist/room/stats.d.ts.map +1 -0
  48. package/dist/room/track/LocalAudioTrack.d.ts +20 -19
  49. package/dist/room/track/LocalAudioTrack.d.ts.map +1 -0
  50. package/dist/room/track/LocalTrack.d.ts +28 -27
  51. package/dist/room/track/LocalTrack.d.ts.map +1 -0
  52. package/dist/room/track/LocalTrackPublication.d.ts +38 -37
  53. package/dist/room/track/LocalTrackPublication.d.ts.map +1 -0
  54. package/dist/room/track/LocalVideoTrack.d.ts +31 -30
  55. package/dist/room/track/LocalVideoTrack.d.ts.map +1 -0
  56. package/dist/room/track/RemoteAudioTrack.d.ts +20 -19
  57. package/dist/room/track/RemoteAudioTrack.d.ts.map +1 -0
  58. package/dist/room/track/RemoteTrack.d.ts +16 -15
  59. package/dist/room/track/RemoteTrack.d.ts.map +1 -0
  60. package/dist/room/track/RemoteTrackPublication.d.ts +51 -50
  61. package/dist/room/track/RemoteTrackPublication.d.ts.map +1 -0
  62. package/dist/room/track/RemoteVideoTrack.d.ts +29 -27
  63. package/dist/room/track/RemoteVideoTrack.d.ts.map +1 -0
  64. package/dist/room/track/Track.d.ts +105 -100
  65. package/dist/room/track/Track.d.ts.map +1 -0
  66. package/dist/room/track/TrackPublication.d.ts +50 -49
  67. package/dist/room/track/TrackPublication.d.ts.map +1 -0
  68. package/dist/room/track/create.d.ts +24 -23
  69. package/dist/room/track/create.d.ts.map +1 -0
  70. package/dist/room/track/defaults.d.ts +5 -4
  71. package/dist/room/track/defaults.d.ts.map +1 -0
  72. package/dist/room/track/options.d.ts +232 -222
  73. package/dist/room/track/options.d.ts.map +1 -0
  74. package/dist/room/track/types.d.ts +19 -18
  75. package/dist/room/track/types.d.ts.map +1 -0
  76. package/dist/room/track/utils.d.ts +14 -13
  77. package/dist/room/track/utils.d.ts.map +1 -0
  78. package/dist/room/utils.d.ts +17 -15
  79. package/dist/room/utils.d.ts.map +1 -0
  80. package/dist/test/mocks.d.ts +12 -11
  81. package/dist/test/mocks.d.ts.map +1 -0
  82. package/dist/version.d.ts +3 -2
  83. package/dist/version.d.ts.map +1 -0
  84. package/package.json +4 -5
  85. package/src/api/RequestQueue.ts +53 -0
  86. package/src/api/SignalClient.ts +497 -0
  87. package/src/connect.ts +98 -0
  88. package/src/index.ts +49 -0
  89. package/src/logger.ts +56 -0
  90. package/src/options.ts +156 -0
  91. package/src/proto/google/protobuf/timestamp.ts +216 -0
  92. package/src/proto/livekit_models.ts +2456 -0
  93. package/src/proto/livekit_rtc.ts +2859 -0
  94. package/src/room/DeviceManager.ts +80 -0
  95. package/src/room/PCTransport.ts +88 -0
  96. package/src/room/RTCEngine.ts +695 -0
  97. package/src/room/Room.ts +970 -0
  98. package/src/room/errors.ts +65 -0
  99. package/src/room/events.ts +438 -0
  100. package/src/room/participant/LocalParticipant.ts +779 -0
  101. package/src/room/participant/Participant.ts +287 -0
  102. package/src/room/participant/ParticipantTrackPermission.ts +42 -0
  103. package/src/room/participant/RemoteParticipant.ts +263 -0
  104. package/src/room/participant/publishUtils.test.ts +144 -0
  105. package/src/room/participant/publishUtils.ts +258 -0
  106. package/src/room/stats.ts +134 -0
  107. package/src/room/track/LocalAudioTrack.ts +134 -0
  108. package/src/room/track/LocalTrack.ts +229 -0
  109. package/src/room/track/LocalTrackPublication.ts +87 -0
  110. package/src/room/track/LocalVideoTrack.test.ts +72 -0
  111. package/src/room/track/LocalVideoTrack.ts +295 -0
  112. package/src/room/track/RemoteAudioTrack.ts +86 -0
  113. package/src/room/track/RemoteTrack.ts +62 -0
  114. package/src/room/track/RemoteTrackPublication.ts +207 -0
  115. package/src/room/track/RemoteVideoTrack.ts +249 -0
  116. package/src/room/track/Track.ts +365 -0
  117. package/src/room/track/TrackPublication.ts +120 -0
  118. package/src/room/track/create.ts +122 -0
  119. package/src/room/track/defaults.ts +26 -0
  120. package/src/room/track/options.ts +292 -0
  121. package/src/room/track/types.ts +20 -0
  122. package/src/room/track/utils.test.ts +110 -0
  123. package/src/room/track/utils.ts +113 -0
  124. package/src/room/utils.ts +115 -0
  125. package/src/test/mocks.ts +17 -0
  126. package/src/version.ts +2 -0
  127. package/CHANGELOG.md +0 -5
@@ -0,0 +1,2859 @@
1
+ /* eslint-disable */
2
+ import Long from 'long';
3
+ import * as _m0 from 'protobufjs/minimal';
4
+ import {
5
+ TrackType,
6
+ TrackSource,
7
+ Room,
8
+ ParticipantInfo,
9
+ ClientConfiguration,
10
+ TrackInfo,
11
+ VideoQuality,
12
+ ConnectionQuality,
13
+ VideoLayer,
14
+ ParticipantTracks,
15
+ SpeakerInfo,
16
+ trackTypeFromJSON,
17
+ trackSourceFromJSON,
18
+ trackTypeToJSON,
19
+ trackSourceToJSON,
20
+ videoQualityFromJSON,
21
+ videoQualityToJSON,
22
+ connectionQualityFromJSON,
23
+ connectionQualityToJSON,
24
+ } from './livekit_models';
25
+
26
+ export const protobufPackage = 'livekit';
27
+
28
+ export enum SignalTarget {
29
+ PUBLISHER = 0,
30
+ SUBSCRIBER = 1,
31
+ UNRECOGNIZED = -1,
32
+ }
33
+
34
+ export function signalTargetFromJSON(object: any): SignalTarget {
35
+ switch (object) {
36
+ case 0:
37
+ case 'PUBLISHER':
38
+ return SignalTarget.PUBLISHER;
39
+ case 1:
40
+ case 'SUBSCRIBER':
41
+ return SignalTarget.SUBSCRIBER;
42
+ case -1:
43
+ case 'UNRECOGNIZED':
44
+ default:
45
+ return SignalTarget.UNRECOGNIZED;
46
+ }
47
+ }
48
+
49
+ export function signalTargetToJSON(object: SignalTarget): string {
50
+ switch (object) {
51
+ case SignalTarget.PUBLISHER:
52
+ return 'PUBLISHER';
53
+ case SignalTarget.SUBSCRIBER:
54
+ return 'SUBSCRIBER';
55
+ default:
56
+ return 'UNKNOWN';
57
+ }
58
+ }
59
+
60
+ export enum StreamState {
61
+ ACTIVE = 0,
62
+ PAUSED = 1,
63
+ UNRECOGNIZED = -1,
64
+ }
65
+
66
+ export function streamStateFromJSON(object: any): StreamState {
67
+ switch (object) {
68
+ case 0:
69
+ case 'ACTIVE':
70
+ return StreamState.ACTIVE;
71
+ case 1:
72
+ case 'PAUSED':
73
+ return StreamState.PAUSED;
74
+ case -1:
75
+ case 'UNRECOGNIZED':
76
+ default:
77
+ return StreamState.UNRECOGNIZED;
78
+ }
79
+ }
80
+
81
+ export function streamStateToJSON(object: StreamState): string {
82
+ switch (object) {
83
+ case StreamState.ACTIVE:
84
+ return 'ACTIVE';
85
+ case StreamState.PAUSED:
86
+ return 'PAUSED';
87
+ default:
88
+ return 'UNKNOWN';
89
+ }
90
+ }
91
+
92
+ export interface SignalRequest {
93
+ /** initial join exchange, for publisher */
94
+ offer?: SessionDescription | undefined;
95
+ /** participant answering publisher offer */
96
+ answer?: SessionDescription | undefined;
97
+ trickle?: TrickleRequest | undefined;
98
+ addTrack?: AddTrackRequest | undefined;
99
+ /** mute the participant's published tracks */
100
+ mute?: MuteTrackRequest | undefined;
101
+ /** Subscribe or unsubscribe from tracks */
102
+ subscription?: UpdateSubscription | undefined;
103
+ /** Update settings of subscribed tracks */
104
+ trackSetting?: UpdateTrackSettings | undefined;
105
+ /** Immediately terminate session */
106
+ leave?: LeaveRequest | undefined;
107
+ /**
108
+ * Set active published layers, deprecated in favor of automatic tracking
109
+ * SetSimulcastLayers simulcast = 9;
110
+ * Update published video layers
111
+ */
112
+ updateLayers?: UpdateVideoLayers | undefined;
113
+ /** Update subscriber permissions */
114
+ subscriptionPermission?: SubscriptionPermission | undefined;
115
+ /** sync client's subscribe state to server during reconnect */
116
+ syncState?: SyncState | undefined;
117
+ /** Simulate conditions, for client validations */
118
+ simulate?: SimulateScenario | undefined;
119
+ }
120
+
121
+ export interface SignalResponse {
122
+ /** sent when join is accepted */
123
+ join?: JoinResponse | undefined;
124
+ /** sent when server answers publisher */
125
+ answer?: SessionDescription | undefined;
126
+ /** sent when server is sending subscriber an offer */
127
+ offer?: SessionDescription | undefined;
128
+ /** sent when an ICE candidate is available */
129
+ trickle?: TrickleRequest | undefined;
130
+ /** sent when participants in the room has changed */
131
+ update?: ParticipantUpdate | undefined;
132
+ /** sent to the participant when their track has been published */
133
+ trackPublished?: TrackPublishedResponse | undefined;
134
+ /** Immediately terminate session */
135
+ leave?: LeaveRequest | undefined;
136
+ /** server initiated mute */
137
+ mute?: MuteTrackRequest | undefined;
138
+ /** indicates changes to speaker status, including when they've gone to not speaking */
139
+ speakersChanged?: SpeakersChanged | undefined;
140
+ /** sent when metadata of the room has changed */
141
+ roomUpdate?: RoomUpdate | undefined;
142
+ /** when connection quality changed */
143
+ connectionQuality?: ConnectionQualityUpdate | undefined;
144
+ /**
145
+ * when streamed tracks state changed, used to notify when any of the streams were paused due to
146
+ * congestion
147
+ */
148
+ streamStateUpdate?: StreamStateUpdate | undefined;
149
+ /** when max subscribe quality changed, used by dynamic broadcasting to disable unused layers */
150
+ subscribedQualityUpdate?: SubscribedQualityUpdate | undefined;
151
+ /** when subscription permission changed */
152
+ subscriptionPermissionUpdate?: SubscriptionPermissionUpdate | undefined;
153
+ /** update the token the client was using, to prevent an active client from using an expired token */
154
+ refreshToken: string | undefined;
155
+ /** server initiated track unpublish */
156
+ trackUnpublished?: TrackUnpublishedResponse | undefined;
157
+ }
158
+
159
+ export interface AddTrackRequest {
160
+ /** client ID of track, to match it when RTC track is received */
161
+ cid: string;
162
+ name: string;
163
+ type: TrackType;
164
+ /** to be deprecated in favor of layers */
165
+ width: number;
166
+ height: number;
167
+ /** true to add track and initialize to muted */
168
+ muted: boolean;
169
+ /** true if DTX (Discontinuous Transmission) is disabled for audio */
170
+ disableDtx: boolean;
171
+ source: TrackSource;
172
+ layers: VideoLayer[];
173
+ }
174
+
175
+ export interface TrickleRequest {
176
+ candidateInit: string;
177
+ target: SignalTarget;
178
+ }
179
+
180
+ export interface MuteTrackRequest {
181
+ sid: string;
182
+ muted: boolean;
183
+ }
184
+
185
+ export interface JoinResponse {
186
+ room?: Room;
187
+ participant?: ParticipantInfo;
188
+ otherParticipants: ParticipantInfo[];
189
+ serverVersion: string;
190
+ iceServers: ICEServer[];
191
+ /** use subscriber as the primary PeerConnection */
192
+ subscriberPrimary: boolean;
193
+ /**
194
+ * when the current server isn't available, return alternate url to retry connection
195
+ * when this is set, the other fields will be largely empty
196
+ */
197
+ alternativeUrl: string;
198
+ clientConfiguration?: ClientConfiguration;
199
+ serverRegion: string;
200
+ }
201
+
202
+ export interface TrackPublishedResponse {
203
+ cid: string;
204
+ track?: TrackInfo;
205
+ }
206
+
207
+ export interface TrackUnpublishedResponse {
208
+ trackSid: string;
209
+ }
210
+
211
+ export interface SessionDescription {
212
+ /** "answer" | "offer" | "pranswer" | "rollback" */
213
+ type: string;
214
+ sdp: string;
215
+ }
216
+
217
+ export interface ParticipantUpdate {
218
+ participants: ParticipantInfo[];
219
+ }
220
+
221
+ export interface UpdateSubscription {
222
+ trackSids: string[];
223
+ subscribe: boolean;
224
+ participantTracks: ParticipantTracks[];
225
+ }
226
+
227
+ export interface UpdateTrackSettings {
228
+ trackSids: string[];
229
+ /** when true, the track is placed in a paused state, with no new data returned */
230
+ disabled: boolean;
231
+ /** deprecated in favor of width & height */
232
+ quality: VideoQuality;
233
+ /** for video, width to receive */
234
+ width: number;
235
+ /** for video, height to receive */
236
+ height: number;
237
+ }
238
+
239
+ export interface LeaveRequest {
240
+ /**
241
+ * sent when server initiates the disconnect due to server-restart
242
+ * indicates clients should attempt full-reconnect sequence
243
+ */
244
+ canReconnect: boolean;
245
+ }
246
+
247
+ /** message to indicate published video track dimensions are changing */
248
+ export interface UpdateVideoLayers {
249
+ trackSid: string;
250
+ layers: VideoLayer[];
251
+ }
252
+
253
+ export interface ICEServer {
254
+ urls: string[];
255
+ username: string;
256
+ credential: string;
257
+ }
258
+
259
+ export interface SpeakersChanged {
260
+ speakers: SpeakerInfo[];
261
+ }
262
+
263
+ export interface RoomUpdate {
264
+ room?: Room;
265
+ }
266
+
267
+ export interface ConnectionQualityInfo {
268
+ participantSid: string;
269
+ quality: ConnectionQuality;
270
+ score: number;
271
+ }
272
+
273
+ export interface ConnectionQualityUpdate {
274
+ updates: ConnectionQualityInfo[];
275
+ }
276
+
277
+ export interface StreamStateInfo {
278
+ participantSid: string;
279
+ trackSid: string;
280
+ state: StreamState;
281
+ }
282
+
283
+ export interface StreamStateUpdate {
284
+ streamStates: StreamStateInfo[];
285
+ }
286
+
287
+ export interface SubscribedQuality {
288
+ quality: VideoQuality;
289
+ enabled: boolean;
290
+ }
291
+
292
+ export interface SubscribedQualityUpdate {
293
+ trackSid: string;
294
+ subscribedQualities: SubscribedQuality[];
295
+ }
296
+
297
+ export interface TrackPermission {
298
+ /** permission could be granted either by participant sid or identity */
299
+ participantSid: string;
300
+ allTracks: boolean;
301
+ trackSids: string[];
302
+ participantIdentity: string;
303
+ }
304
+
305
+ export interface SubscriptionPermission {
306
+ allParticipants: boolean;
307
+ trackPermissions: TrackPermission[];
308
+ }
309
+
310
+ export interface SubscriptionPermissionUpdate {
311
+ participantSid: string;
312
+ trackSid: string;
313
+ allowed: boolean;
314
+ }
315
+
316
+ export interface SyncState {
317
+ answer?: SessionDescription;
318
+ subscription?: UpdateSubscription;
319
+ publishTracks: TrackPublishedResponse[];
320
+ dataChannels: DataChannelInfo[];
321
+ }
322
+
323
+ export interface DataChannelInfo {
324
+ label: string;
325
+ id: number;
326
+ target: SignalTarget;
327
+ }
328
+
329
+ export interface SimulateScenario {
330
+ /** simulate N seconds of speaker activity */
331
+ speakerUpdate: number | undefined;
332
+ /** simulate local node failure */
333
+ nodeFailure: boolean | undefined;
334
+ /** simulate migration */
335
+ migration: boolean | undefined;
336
+ /** server to send leave */
337
+ serverLeave: boolean | undefined;
338
+ }
339
+
340
+ function createBaseSignalRequest(): SignalRequest {
341
+ return {
342
+ offer: undefined,
343
+ answer: undefined,
344
+ trickle: undefined,
345
+ addTrack: undefined,
346
+ mute: undefined,
347
+ subscription: undefined,
348
+ trackSetting: undefined,
349
+ leave: undefined,
350
+ updateLayers: undefined,
351
+ subscriptionPermission: undefined,
352
+ syncState: undefined,
353
+ simulate: undefined,
354
+ };
355
+ }
356
+
357
+ export const SignalRequest = {
358
+ encode(message: SignalRequest, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer {
359
+ if (message.offer !== undefined) {
360
+ SessionDescription.encode(message.offer, writer.uint32(10).fork()).ldelim();
361
+ }
362
+ if (message.answer !== undefined) {
363
+ SessionDescription.encode(message.answer, writer.uint32(18).fork()).ldelim();
364
+ }
365
+ if (message.trickle !== undefined) {
366
+ TrickleRequest.encode(message.trickle, writer.uint32(26).fork()).ldelim();
367
+ }
368
+ if (message.addTrack !== undefined) {
369
+ AddTrackRequest.encode(message.addTrack, writer.uint32(34).fork()).ldelim();
370
+ }
371
+ if (message.mute !== undefined) {
372
+ MuteTrackRequest.encode(message.mute, writer.uint32(42).fork()).ldelim();
373
+ }
374
+ if (message.subscription !== undefined) {
375
+ UpdateSubscription.encode(message.subscription, writer.uint32(50).fork()).ldelim();
376
+ }
377
+ if (message.trackSetting !== undefined) {
378
+ UpdateTrackSettings.encode(message.trackSetting, writer.uint32(58).fork()).ldelim();
379
+ }
380
+ if (message.leave !== undefined) {
381
+ LeaveRequest.encode(message.leave, writer.uint32(66).fork()).ldelim();
382
+ }
383
+ if (message.updateLayers !== undefined) {
384
+ UpdateVideoLayers.encode(message.updateLayers, writer.uint32(82).fork()).ldelim();
385
+ }
386
+ if (message.subscriptionPermission !== undefined) {
387
+ SubscriptionPermission.encode(
388
+ message.subscriptionPermission,
389
+ writer.uint32(90).fork(),
390
+ ).ldelim();
391
+ }
392
+ if (message.syncState !== undefined) {
393
+ SyncState.encode(message.syncState, writer.uint32(98).fork()).ldelim();
394
+ }
395
+ if (message.simulate !== undefined) {
396
+ SimulateScenario.encode(message.simulate, writer.uint32(106).fork()).ldelim();
397
+ }
398
+ return writer;
399
+ },
400
+
401
+ decode(input: _m0.Reader | Uint8Array, length?: number): SignalRequest {
402
+ const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input);
403
+ let end = length === undefined ? reader.len : reader.pos + length;
404
+ const message = createBaseSignalRequest();
405
+ while (reader.pos < end) {
406
+ const tag = reader.uint32();
407
+ switch (tag >>> 3) {
408
+ case 1:
409
+ message.offer = SessionDescription.decode(reader, reader.uint32());
410
+ break;
411
+ case 2:
412
+ message.answer = SessionDescription.decode(reader, reader.uint32());
413
+ break;
414
+ case 3:
415
+ message.trickle = TrickleRequest.decode(reader, reader.uint32());
416
+ break;
417
+ case 4:
418
+ message.addTrack = AddTrackRequest.decode(reader, reader.uint32());
419
+ break;
420
+ case 5:
421
+ message.mute = MuteTrackRequest.decode(reader, reader.uint32());
422
+ break;
423
+ case 6:
424
+ message.subscription = UpdateSubscription.decode(reader, reader.uint32());
425
+ break;
426
+ case 7:
427
+ message.trackSetting = UpdateTrackSettings.decode(reader, reader.uint32());
428
+ break;
429
+ case 8:
430
+ message.leave = LeaveRequest.decode(reader, reader.uint32());
431
+ break;
432
+ case 10:
433
+ message.updateLayers = UpdateVideoLayers.decode(reader, reader.uint32());
434
+ break;
435
+ case 11:
436
+ message.subscriptionPermission = SubscriptionPermission.decode(reader, reader.uint32());
437
+ break;
438
+ case 12:
439
+ message.syncState = SyncState.decode(reader, reader.uint32());
440
+ break;
441
+ case 13:
442
+ message.simulate = SimulateScenario.decode(reader, reader.uint32());
443
+ break;
444
+ default:
445
+ reader.skipType(tag & 7);
446
+ break;
447
+ }
448
+ }
449
+ return message;
450
+ },
451
+
452
+ fromJSON(object: any): SignalRequest {
453
+ return {
454
+ offer: isSet(object.offer) ? SessionDescription.fromJSON(object.offer) : undefined,
455
+ answer: isSet(object.answer) ? SessionDescription.fromJSON(object.answer) : undefined,
456
+ trickle: isSet(object.trickle) ? TrickleRequest.fromJSON(object.trickle) : undefined,
457
+ addTrack: isSet(object.addTrack) ? AddTrackRequest.fromJSON(object.addTrack) : undefined,
458
+ mute: isSet(object.mute) ? MuteTrackRequest.fromJSON(object.mute) : undefined,
459
+ subscription: isSet(object.subscription)
460
+ ? UpdateSubscription.fromJSON(object.subscription)
461
+ : undefined,
462
+ trackSetting: isSet(object.trackSetting)
463
+ ? UpdateTrackSettings.fromJSON(object.trackSetting)
464
+ : undefined,
465
+ leave: isSet(object.leave) ? LeaveRequest.fromJSON(object.leave) : undefined,
466
+ updateLayers: isSet(object.updateLayers)
467
+ ? UpdateVideoLayers.fromJSON(object.updateLayers)
468
+ : undefined,
469
+ subscriptionPermission: isSet(object.subscriptionPermission)
470
+ ? SubscriptionPermission.fromJSON(object.subscriptionPermission)
471
+ : undefined,
472
+ syncState: isSet(object.syncState) ? SyncState.fromJSON(object.syncState) : undefined,
473
+ simulate: isSet(object.simulate) ? SimulateScenario.fromJSON(object.simulate) : undefined,
474
+ };
475
+ },
476
+
477
+ toJSON(message: SignalRequest): unknown {
478
+ const obj: any = {};
479
+ message.offer !== undefined &&
480
+ (obj.offer = message.offer ? SessionDescription.toJSON(message.offer) : undefined);
481
+ message.answer !== undefined &&
482
+ (obj.answer = message.answer ? SessionDescription.toJSON(message.answer) : undefined);
483
+ message.trickle !== undefined &&
484
+ (obj.trickle = message.trickle ? TrickleRequest.toJSON(message.trickle) : undefined);
485
+ message.addTrack !== undefined &&
486
+ (obj.addTrack = message.addTrack ? AddTrackRequest.toJSON(message.addTrack) : undefined);
487
+ message.mute !== undefined &&
488
+ (obj.mute = message.mute ? MuteTrackRequest.toJSON(message.mute) : undefined);
489
+ message.subscription !== undefined &&
490
+ (obj.subscription = message.subscription
491
+ ? UpdateSubscription.toJSON(message.subscription)
492
+ : undefined);
493
+ message.trackSetting !== undefined &&
494
+ (obj.trackSetting = message.trackSetting
495
+ ? UpdateTrackSettings.toJSON(message.trackSetting)
496
+ : undefined);
497
+ message.leave !== undefined &&
498
+ (obj.leave = message.leave ? LeaveRequest.toJSON(message.leave) : undefined);
499
+ message.updateLayers !== undefined &&
500
+ (obj.updateLayers = message.updateLayers
501
+ ? UpdateVideoLayers.toJSON(message.updateLayers)
502
+ : undefined);
503
+ message.subscriptionPermission !== undefined &&
504
+ (obj.subscriptionPermission = message.subscriptionPermission
505
+ ? SubscriptionPermission.toJSON(message.subscriptionPermission)
506
+ : undefined);
507
+ message.syncState !== undefined &&
508
+ (obj.syncState = message.syncState ? SyncState.toJSON(message.syncState) : undefined);
509
+ message.simulate !== undefined &&
510
+ (obj.simulate = message.simulate ? SimulateScenario.toJSON(message.simulate) : undefined);
511
+ return obj;
512
+ },
513
+
514
+ fromPartial<I extends Exact<DeepPartial<SignalRequest>, I>>(object: I): SignalRequest {
515
+ const message = createBaseSignalRequest();
516
+ message.offer =
517
+ object.offer !== undefined && object.offer !== null
518
+ ? SessionDescription.fromPartial(object.offer)
519
+ : undefined;
520
+ message.answer =
521
+ object.answer !== undefined && object.answer !== null
522
+ ? SessionDescription.fromPartial(object.answer)
523
+ : undefined;
524
+ message.trickle =
525
+ object.trickle !== undefined && object.trickle !== null
526
+ ? TrickleRequest.fromPartial(object.trickle)
527
+ : undefined;
528
+ message.addTrack =
529
+ object.addTrack !== undefined && object.addTrack !== null
530
+ ? AddTrackRequest.fromPartial(object.addTrack)
531
+ : undefined;
532
+ message.mute =
533
+ object.mute !== undefined && object.mute !== null
534
+ ? MuteTrackRequest.fromPartial(object.mute)
535
+ : undefined;
536
+ message.subscription =
537
+ object.subscription !== undefined && object.subscription !== null
538
+ ? UpdateSubscription.fromPartial(object.subscription)
539
+ : undefined;
540
+ message.trackSetting =
541
+ object.trackSetting !== undefined && object.trackSetting !== null
542
+ ? UpdateTrackSettings.fromPartial(object.trackSetting)
543
+ : undefined;
544
+ message.leave =
545
+ object.leave !== undefined && object.leave !== null
546
+ ? LeaveRequest.fromPartial(object.leave)
547
+ : undefined;
548
+ message.updateLayers =
549
+ object.updateLayers !== undefined && object.updateLayers !== null
550
+ ? UpdateVideoLayers.fromPartial(object.updateLayers)
551
+ : undefined;
552
+ message.subscriptionPermission =
553
+ object.subscriptionPermission !== undefined && object.subscriptionPermission !== null
554
+ ? SubscriptionPermission.fromPartial(object.subscriptionPermission)
555
+ : undefined;
556
+ message.syncState =
557
+ object.syncState !== undefined && object.syncState !== null
558
+ ? SyncState.fromPartial(object.syncState)
559
+ : undefined;
560
+ message.simulate =
561
+ object.simulate !== undefined && object.simulate !== null
562
+ ? SimulateScenario.fromPartial(object.simulate)
563
+ : undefined;
564
+ return message;
565
+ },
566
+ };
567
+
568
+ function createBaseSignalResponse(): SignalResponse {
569
+ return {
570
+ join: undefined,
571
+ answer: undefined,
572
+ offer: undefined,
573
+ trickle: undefined,
574
+ update: undefined,
575
+ trackPublished: undefined,
576
+ leave: undefined,
577
+ mute: undefined,
578
+ speakersChanged: undefined,
579
+ roomUpdate: undefined,
580
+ connectionQuality: undefined,
581
+ streamStateUpdate: undefined,
582
+ subscribedQualityUpdate: undefined,
583
+ subscriptionPermissionUpdate: undefined,
584
+ refreshToken: undefined,
585
+ trackUnpublished: undefined,
586
+ };
587
+ }
588
+
589
+ export const SignalResponse = {
590
+ encode(message: SignalResponse, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer {
591
+ if (message.join !== undefined) {
592
+ JoinResponse.encode(message.join, writer.uint32(10).fork()).ldelim();
593
+ }
594
+ if (message.answer !== undefined) {
595
+ SessionDescription.encode(message.answer, writer.uint32(18).fork()).ldelim();
596
+ }
597
+ if (message.offer !== undefined) {
598
+ SessionDescription.encode(message.offer, writer.uint32(26).fork()).ldelim();
599
+ }
600
+ if (message.trickle !== undefined) {
601
+ TrickleRequest.encode(message.trickle, writer.uint32(34).fork()).ldelim();
602
+ }
603
+ if (message.update !== undefined) {
604
+ ParticipantUpdate.encode(message.update, writer.uint32(42).fork()).ldelim();
605
+ }
606
+ if (message.trackPublished !== undefined) {
607
+ TrackPublishedResponse.encode(message.trackPublished, writer.uint32(50).fork()).ldelim();
608
+ }
609
+ if (message.leave !== undefined) {
610
+ LeaveRequest.encode(message.leave, writer.uint32(66).fork()).ldelim();
611
+ }
612
+ if (message.mute !== undefined) {
613
+ MuteTrackRequest.encode(message.mute, writer.uint32(74).fork()).ldelim();
614
+ }
615
+ if (message.speakersChanged !== undefined) {
616
+ SpeakersChanged.encode(message.speakersChanged, writer.uint32(82).fork()).ldelim();
617
+ }
618
+ if (message.roomUpdate !== undefined) {
619
+ RoomUpdate.encode(message.roomUpdate, writer.uint32(90).fork()).ldelim();
620
+ }
621
+ if (message.connectionQuality !== undefined) {
622
+ ConnectionQualityUpdate.encode(message.connectionQuality, writer.uint32(98).fork()).ldelim();
623
+ }
624
+ if (message.streamStateUpdate !== undefined) {
625
+ StreamStateUpdate.encode(message.streamStateUpdate, writer.uint32(106).fork()).ldelim();
626
+ }
627
+ if (message.subscribedQualityUpdate !== undefined) {
628
+ SubscribedQualityUpdate.encode(
629
+ message.subscribedQualityUpdate,
630
+ writer.uint32(114).fork(),
631
+ ).ldelim();
632
+ }
633
+ if (message.subscriptionPermissionUpdate !== undefined) {
634
+ SubscriptionPermissionUpdate.encode(
635
+ message.subscriptionPermissionUpdate,
636
+ writer.uint32(122).fork(),
637
+ ).ldelim();
638
+ }
639
+ if (message.refreshToken !== undefined) {
640
+ writer.uint32(130).string(message.refreshToken);
641
+ }
642
+ if (message.trackUnpublished !== undefined) {
643
+ TrackUnpublishedResponse.encode(message.trackUnpublished, writer.uint32(138).fork()).ldelim();
644
+ }
645
+ return writer;
646
+ },
647
+
648
+ decode(input: _m0.Reader | Uint8Array, length?: number): SignalResponse {
649
+ const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input);
650
+ let end = length === undefined ? reader.len : reader.pos + length;
651
+ const message = createBaseSignalResponse();
652
+ while (reader.pos < end) {
653
+ const tag = reader.uint32();
654
+ switch (tag >>> 3) {
655
+ case 1:
656
+ message.join = JoinResponse.decode(reader, reader.uint32());
657
+ break;
658
+ case 2:
659
+ message.answer = SessionDescription.decode(reader, reader.uint32());
660
+ break;
661
+ case 3:
662
+ message.offer = SessionDescription.decode(reader, reader.uint32());
663
+ break;
664
+ case 4:
665
+ message.trickle = TrickleRequest.decode(reader, reader.uint32());
666
+ break;
667
+ case 5:
668
+ message.update = ParticipantUpdate.decode(reader, reader.uint32());
669
+ break;
670
+ case 6:
671
+ message.trackPublished = TrackPublishedResponse.decode(reader, reader.uint32());
672
+ break;
673
+ case 8:
674
+ message.leave = LeaveRequest.decode(reader, reader.uint32());
675
+ break;
676
+ case 9:
677
+ message.mute = MuteTrackRequest.decode(reader, reader.uint32());
678
+ break;
679
+ case 10:
680
+ message.speakersChanged = SpeakersChanged.decode(reader, reader.uint32());
681
+ break;
682
+ case 11:
683
+ message.roomUpdate = RoomUpdate.decode(reader, reader.uint32());
684
+ break;
685
+ case 12:
686
+ message.connectionQuality = ConnectionQualityUpdate.decode(reader, reader.uint32());
687
+ break;
688
+ case 13:
689
+ message.streamStateUpdate = StreamStateUpdate.decode(reader, reader.uint32());
690
+ break;
691
+ case 14:
692
+ message.subscribedQualityUpdate = SubscribedQualityUpdate.decode(reader, reader.uint32());
693
+ break;
694
+ case 15:
695
+ message.subscriptionPermissionUpdate = SubscriptionPermissionUpdate.decode(
696
+ reader,
697
+ reader.uint32(),
698
+ );
699
+ break;
700
+ case 16:
701
+ message.refreshToken = reader.string();
702
+ break;
703
+ case 17:
704
+ message.trackUnpublished = TrackUnpublishedResponse.decode(reader, reader.uint32());
705
+ break;
706
+ default:
707
+ reader.skipType(tag & 7);
708
+ break;
709
+ }
710
+ }
711
+ return message;
712
+ },
713
+
714
+ fromJSON(object: any): SignalResponse {
715
+ return {
716
+ join: isSet(object.join) ? JoinResponse.fromJSON(object.join) : undefined,
717
+ answer: isSet(object.answer) ? SessionDescription.fromJSON(object.answer) : undefined,
718
+ offer: isSet(object.offer) ? SessionDescription.fromJSON(object.offer) : undefined,
719
+ trickle: isSet(object.trickle) ? TrickleRequest.fromJSON(object.trickle) : undefined,
720
+ update: isSet(object.update) ? ParticipantUpdate.fromJSON(object.update) : undefined,
721
+ trackPublished: isSet(object.trackPublished)
722
+ ? TrackPublishedResponse.fromJSON(object.trackPublished)
723
+ : undefined,
724
+ leave: isSet(object.leave) ? LeaveRequest.fromJSON(object.leave) : undefined,
725
+ mute: isSet(object.mute) ? MuteTrackRequest.fromJSON(object.mute) : undefined,
726
+ speakersChanged: isSet(object.speakersChanged)
727
+ ? SpeakersChanged.fromJSON(object.speakersChanged)
728
+ : undefined,
729
+ roomUpdate: isSet(object.roomUpdate) ? RoomUpdate.fromJSON(object.roomUpdate) : undefined,
730
+ connectionQuality: isSet(object.connectionQuality)
731
+ ? ConnectionQualityUpdate.fromJSON(object.connectionQuality)
732
+ : undefined,
733
+ streamStateUpdate: isSet(object.streamStateUpdate)
734
+ ? StreamStateUpdate.fromJSON(object.streamStateUpdate)
735
+ : undefined,
736
+ subscribedQualityUpdate: isSet(object.subscribedQualityUpdate)
737
+ ? SubscribedQualityUpdate.fromJSON(object.subscribedQualityUpdate)
738
+ : undefined,
739
+ subscriptionPermissionUpdate: isSet(object.subscriptionPermissionUpdate)
740
+ ? SubscriptionPermissionUpdate.fromJSON(object.subscriptionPermissionUpdate)
741
+ : undefined,
742
+ refreshToken: isSet(object.refreshToken) ? String(object.refreshToken) : undefined,
743
+ trackUnpublished: isSet(object.trackUnpublished)
744
+ ? TrackUnpublishedResponse.fromJSON(object.trackUnpublished)
745
+ : undefined,
746
+ };
747
+ },
748
+
749
+ toJSON(message: SignalResponse): unknown {
750
+ const obj: any = {};
751
+ message.join !== undefined &&
752
+ (obj.join = message.join ? JoinResponse.toJSON(message.join) : undefined);
753
+ message.answer !== undefined &&
754
+ (obj.answer = message.answer ? SessionDescription.toJSON(message.answer) : undefined);
755
+ message.offer !== undefined &&
756
+ (obj.offer = message.offer ? SessionDescription.toJSON(message.offer) : undefined);
757
+ message.trickle !== undefined &&
758
+ (obj.trickle = message.trickle ? TrickleRequest.toJSON(message.trickle) : undefined);
759
+ message.update !== undefined &&
760
+ (obj.update = message.update ? ParticipantUpdate.toJSON(message.update) : undefined);
761
+ message.trackPublished !== undefined &&
762
+ (obj.trackPublished = message.trackPublished
763
+ ? TrackPublishedResponse.toJSON(message.trackPublished)
764
+ : undefined);
765
+ message.leave !== undefined &&
766
+ (obj.leave = message.leave ? LeaveRequest.toJSON(message.leave) : undefined);
767
+ message.mute !== undefined &&
768
+ (obj.mute = message.mute ? MuteTrackRequest.toJSON(message.mute) : undefined);
769
+ message.speakersChanged !== undefined &&
770
+ (obj.speakersChanged = message.speakersChanged
771
+ ? SpeakersChanged.toJSON(message.speakersChanged)
772
+ : undefined);
773
+ message.roomUpdate !== undefined &&
774
+ (obj.roomUpdate = message.roomUpdate ? RoomUpdate.toJSON(message.roomUpdate) : undefined);
775
+ message.connectionQuality !== undefined &&
776
+ (obj.connectionQuality = message.connectionQuality
777
+ ? ConnectionQualityUpdate.toJSON(message.connectionQuality)
778
+ : undefined);
779
+ message.streamStateUpdate !== undefined &&
780
+ (obj.streamStateUpdate = message.streamStateUpdate
781
+ ? StreamStateUpdate.toJSON(message.streamStateUpdate)
782
+ : undefined);
783
+ message.subscribedQualityUpdate !== undefined &&
784
+ (obj.subscribedQualityUpdate = message.subscribedQualityUpdate
785
+ ? SubscribedQualityUpdate.toJSON(message.subscribedQualityUpdate)
786
+ : undefined);
787
+ message.subscriptionPermissionUpdate !== undefined &&
788
+ (obj.subscriptionPermissionUpdate = message.subscriptionPermissionUpdate
789
+ ? SubscriptionPermissionUpdate.toJSON(message.subscriptionPermissionUpdate)
790
+ : undefined);
791
+ message.refreshToken !== undefined && (obj.refreshToken = message.refreshToken);
792
+ message.trackUnpublished !== undefined &&
793
+ (obj.trackUnpublished = message.trackUnpublished
794
+ ? TrackUnpublishedResponse.toJSON(message.trackUnpublished)
795
+ : undefined);
796
+ return obj;
797
+ },
798
+
799
+ fromPartial<I extends Exact<DeepPartial<SignalResponse>, I>>(object: I): SignalResponse {
800
+ const message = createBaseSignalResponse();
801
+ message.join =
802
+ object.join !== undefined && object.join !== null
803
+ ? JoinResponse.fromPartial(object.join)
804
+ : undefined;
805
+ message.answer =
806
+ object.answer !== undefined && object.answer !== null
807
+ ? SessionDescription.fromPartial(object.answer)
808
+ : undefined;
809
+ message.offer =
810
+ object.offer !== undefined && object.offer !== null
811
+ ? SessionDescription.fromPartial(object.offer)
812
+ : undefined;
813
+ message.trickle =
814
+ object.trickle !== undefined && object.trickle !== null
815
+ ? TrickleRequest.fromPartial(object.trickle)
816
+ : undefined;
817
+ message.update =
818
+ object.update !== undefined && object.update !== null
819
+ ? ParticipantUpdate.fromPartial(object.update)
820
+ : undefined;
821
+ message.trackPublished =
822
+ object.trackPublished !== undefined && object.trackPublished !== null
823
+ ? TrackPublishedResponse.fromPartial(object.trackPublished)
824
+ : undefined;
825
+ message.leave =
826
+ object.leave !== undefined && object.leave !== null
827
+ ? LeaveRequest.fromPartial(object.leave)
828
+ : undefined;
829
+ message.mute =
830
+ object.mute !== undefined && object.mute !== null
831
+ ? MuteTrackRequest.fromPartial(object.mute)
832
+ : undefined;
833
+ message.speakersChanged =
834
+ object.speakersChanged !== undefined && object.speakersChanged !== null
835
+ ? SpeakersChanged.fromPartial(object.speakersChanged)
836
+ : undefined;
837
+ message.roomUpdate =
838
+ object.roomUpdate !== undefined && object.roomUpdate !== null
839
+ ? RoomUpdate.fromPartial(object.roomUpdate)
840
+ : undefined;
841
+ message.connectionQuality =
842
+ object.connectionQuality !== undefined && object.connectionQuality !== null
843
+ ? ConnectionQualityUpdate.fromPartial(object.connectionQuality)
844
+ : undefined;
845
+ message.streamStateUpdate =
846
+ object.streamStateUpdate !== undefined && object.streamStateUpdate !== null
847
+ ? StreamStateUpdate.fromPartial(object.streamStateUpdate)
848
+ : undefined;
849
+ message.subscribedQualityUpdate =
850
+ object.subscribedQualityUpdate !== undefined && object.subscribedQualityUpdate !== null
851
+ ? SubscribedQualityUpdate.fromPartial(object.subscribedQualityUpdate)
852
+ : undefined;
853
+ message.subscriptionPermissionUpdate =
854
+ object.subscriptionPermissionUpdate !== undefined &&
855
+ object.subscriptionPermissionUpdate !== null
856
+ ? SubscriptionPermissionUpdate.fromPartial(object.subscriptionPermissionUpdate)
857
+ : undefined;
858
+ message.refreshToken = object.refreshToken ?? undefined;
859
+ message.trackUnpublished =
860
+ object.trackUnpublished !== undefined && object.trackUnpublished !== null
861
+ ? TrackUnpublishedResponse.fromPartial(object.trackUnpublished)
862
+ : undefined;
863
+ return message;
864
+ },
865
+ };
866
+
867
+ function createBaseAddTrackRequest(): AddTrackRequest {
868
+ return {
869
+ cid: '',
870
+ name: '',
871
+ type: 0,
872
+ width: 0,
873
+ height: 0,
874
+ muted: false,
875
+ disableDtx: false,
876
+ source: 0,
877
+ layers: [],
878
+ };
879
+ }
880
+
881
+ export const AddTrackRequest = {
882
+ encode(message: AddTrackRequest, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer {
883
+ if (message.cid !== '') {
884
+ writer.uint32(10).string(message.cid);
885
+ }
886
+ if (message.name !== '') {
887
+ writer.uint32(18).string(message.name);
888
+ }
889
+ if (message.type !== 0) {
890
+ writer.uint32(24).int32(message.type);
891
+ }
892
+ if (message.width !== 0) {
893
+ writer.uint32(32).uint32(message.width);
894
+ }
895
+ if (message.height !== 0) {
896
+ writer.uint32(40).uint32(message.height);
897
+ }
898
+ if (message.muted === true) {
899
+ writer.uint32(48).bool(message.muted);
900
+ }
901
+ if (message.disableDtx === true) {
902
+ writer.uint32(56).bool(message.disableDtx);
903
+ }
904
+ if (message.source !== 0) {
905
+ writer.uint32(64).int32(message.source);
906
+ }
907
+ for (const v of message.layers) {
908
+ VideoLayer.encode(v!, writer.uint32(74).fork()).ldelim();
909
+ }
910
+ return writer;
911
+ },
912
+
913
+ decode(input: _m0.Reader | Uint8Array, length?: number): AddTrackRequest {
914
+ const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input);
915
+ let end = length === undefined ? reader.len : reader.pos + length;
916
+ const message = createBaseAddTrackRequest();
917
+ while (reader.pos < end) {
918
+ const tag = reader.uint32();
919
+ switch (tag >>> 3) {
920
+ case 1:
921
+ message.cid = reader.string();
922
+ break;
923
+ case 2:
924
+ message.name = reader.string();
925
+ break;
926
+ case 3:
927
+ message.type = reader.int32() as any;
928
+ break;
929
+ case 4:
930
+ message.width = reader.uint32();
931
+ break;
932
+ case 5:
933
+ message.height = reader.uint32();
934
+ break;
935
+ case 6:
936
+ message.muted = reader.bool();
937
+ break;
938
+ case 7:
939
+ message.disableDtx = reader.bool();
940
+ break;
941
+ case 8:
942
+ message.source = reader.int32() as any;
943
+ break;
944
+ case 9:
945
+ message.layers.push(VideoLayer.decode(reader, reader.uint32()));
946
+ break;
947
+ default:
948
+ reader.skipType(tag & 7);
949
+ break;
950
+ }
951
+ }
952
+ return message;
953
+ },
954
+
955
+ fromJSON(object: any): AddTrackRequest {
956
+ return {
957
+ cid: isSet(object.cid) ? String(object.cid) : '',
958
+ name: isSet(object.name) ? String(object.name) : '',
959
+ type: isSet(object.type) ? trackTypeFromJSON(object.type) : 0,
960
+ width: isSet(object.width) ? Number(object.width) : 0,
961
+ height: isSet(object.height) ? Number(object.height) : 0,
962
+ muted: isSet(object.muted) ? Boolean(object.muted) : false,
963
+ disableDtx: isSet(object.disableDtx) ? Boolean(object.disableDtx) : false,
964
+ source: isSet(object.source) ? trackSourceFromJSON(object.source) : 0,
965
+ layers: Array.isArray(object?.layers)
966
+ ? object.layers.map((e: any) => VideoLayer.fromJSON(e))
967
+ : [],
968
+ };
969
+ },
970
+
971
+ toJSON(message: AddTrackRequest): unknown {
972
+ const obj: any = {};
973
+ message.cid !== undefined && (obj.cid = message.cid);
974
+ message.name !== undefined && (obj.name = message.name);
975
+ message.type !== undefined && (obj.type = trackTypeToJSON(message.type));
976
+ message.width !== undefined && (obj.width = Math.round(message.width));
977
+ message.height !== undefined && (obj.height = Math.round(message.height));
978
+ message.muted !== undefined && (obj.muted = message.muted);
979
+ message.disableDtx !== undefined && (obj.disableDtx = message.disableDtx);
980
+ message.source !== undefined && (obj.source = trackSourceToJSON(message.source));
981
+ if (message.layers) {
982
+ obj.layers = message.layers.map((e) => (e ? VideoLayer.toJSON(e) : undefined));
983
+ } else {
984
+ obj.layers = [];
985
+ }
986
+ return obj;
987
+ },
988
+
989
+ fromPartial<I extends Exact<DeepPartial<AddTrackRequest>, I>>(object: I): AddTrackRequest {
990
+ const message = createBaseAddTrackRequest();
991
+ message.cid = object.cid ?? '';
992
+ message.name = object.name ?? '';
993
+ message.type = object.type ?? 0;
994
+ message.width = object.width ?? 0;
995
+ message.height = object.height ?? 0;
996
+ message.muted = object.muted ?? false;
997
+ message.disableDtx = object.disableDtx ?? false;
998
+ message.source = object.source ?? 0;
999
+ message.layers = object.layers?.map((e) => VideoLayer.fromPartial(e)) || [];
1000
+ return message;
1001
+ },
1002
+ };
1003
+
1004
+ function createBaseTrickleRequest(): TrickleRequest {
1005
+ return { candidateInit: '', target: 0 };
1006
+ }
1007
+
1008
+ export const TrickleRequest = {
1009
+ encode(message: TrickleRequest, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer {
1010
+ if (message.candidateInit !== '') {
1011
+ writer.uint32(10).string(message.candidateInit);
1012
+ }
1013
+ if (message.target !== 0) {
1014
+ writer.uint32(16).int32(message.target);
1015
+ }
1016
+ return writer;
1017
+ },
1018
+
1019
+ decode(input: _m0.Reader | Uint8Array, length?: number): TrickleRequest {
1020
+ const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input);
1021
+ let end = length === undefined ? reader.len : reader.pos + length;
1022
+ const message = createBaseTrickleRequest();
1023
+ while (reader.pos < end) {
1024
+ const tag = reader.uint32();
1025
+ switch (tag >>> 3) {
1026
+ case 1:
1027
+ message.candidateInit = reader.string();
1028
+ break;
1029
+ case 2:
1030
+ message.target = reader.int32() as any;
1031
+ break;
1032
+ default:
1033
+ reader.skipType(tag & 7);
1034
+ break;
1035
+ }
1036
+ }
1037
+ return message;
1038
+ },
1039
+
1040
+ fromJSON(object: any): TrickleRequest {
1041
+ return {
1042
+ candidateInit: isSet(object.candidateInit) ? String(object.candidateInit) : '',
1043
+ target: isSet(object.target) ? signalTargetFromJSON(object.target) : 0,
1044
+ };
1045
+ },
1046
+
1047
+ toJSON(message: TrickleRequest): unknown {
1048
+ const obj: any = {};
1049
+ message.candidateInit !== undefined && (obj.candidateInit = message.candidateInit);
1050
+ message.target !== undefined && (obj.target = signalTargetToJSON(message.target));
1051
+ return obj;
1052
+ },
1053
+
1054
+ fromPartial<I extends Exact<DeepPartial<TrickleRequest>, I>>(object: I): TrickleRequest {
1055
+ const message = createBaseTrickleRequest();
1056
+ message.candidateInit = object.candidateInit ?? '';
1057
+ message.target = object.target ?? 0;
1058
+ return message;
1059
+ },
1060
+ };
1061
+
1062
+ function createBaseMuteTrackRequest(): MuteTrackRequest {
1063
+ return { sid: '', muted: false };
1064
+ }
1065
+
1066
+ export const MuteTrackRequest = {
1067
+ encode(message: MuteTrackRequest, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer {
1068
+ if (message.sid !== '') {
1069
+ writer.uint32(10).string(message.sid);
1070
+ }
1071
+ if (message.muted === true) {
1072
+ writer.uint32(16).bool(message.muted);
1073
+ }
1074
+ return writer;
1075
+ },
1076
+
1077
+ decode(input: _m0.Reader | Uint8Array, length?: number): MuteTrackRequest {
1078
+ const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input);
1079
+ let end = length === undefined ? reader.len : reader.pos + length;
1080
+ const message = createBaseMuteTrackRequest();
1081
+ while (reader.pos < end) {
1082
+ const tag = reader.uint32();
1083
+ switch (tag >>> 3) {
1084
+ case 1:
1085
+ message.sid = reader.string();
1086
+ break;
1087
+ case 2:
1088
+ message.muted = reader.bool();
1089
+ break;
1090
+ default:
1091
+ reader.skipType(tag & 7);
1092
+ break;
1093
+ }
1094
+ }
1095
+ return message;
1096
+ },
1097
+
1098
+ fromJSON(object: any): MuteTrackRequest {
1099
+ return {
1100
+ sid: isSet(object.sid) ? String(object.sid) : '',
1101
+ muted: isSet(object.muted) ? Boolean(object.muted) : false,
1102
+ };
1103
+ },
1104
+
1105
+ toJSON(message: MuteTrackRequest): unknown {
1106
+ const obj: any = {};
1107
+ message.sid !== undefined && (obj.sid = message.sid);
1108
+ message.muted !== undefined && (obj.muted = message.muted);
1109
+ return obj;
1110
+ },
1111
+
1112
+ fromPartial<I extends Exact<DeepPartial<MuteTrackRequest>, I>>(object: I): MuteTrackRequest {
1113
+ const message = createBaseMuteTrackRequest();
1114
+ message.sid = object.sid ?? '';
1115
+ message.muted = object.muted ?? false;
1116
+ return message;
1117
+ },
1118
+ };
1119
+
1120
+ function createBaseJoinResponse(): JoinResponse {
1121
+ return {
1122
+ room: undefined,
1123
+ participant: undefined,
1124
+ otherParticipants: [],
1125
+ serverVersion: '',
1126
+ iceServers: [],
1127
+ subscriberPrimary: false,
1128
+ alternativeUrl: '',
1129
+ clientConfiguration: undefined,
1130
+ serverRegion: '',
1131
+ };
1132
+ }
1133
+
1134
+ export const JoinResponse = {
1135
+ encode(message: JoinResponse, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer {
1136
+ if (message.room !== undefined) {
1137
+ Room.encode(message.room, writer.uint32(10).fork()).ldelim();
1138
+ }
1139
+ if (message.participant !== undefined) {
1140
+ ParticipantInfo.encode(message.participant, writer.uint32(18).fork()).ldelim();
1141
+ }
1142
+ for (const v of message.otherParticipants) {
1143
+ ParticipantInfo.encode(v!, writer.uint32(26).fork()).ldelim();
1144
+ }
1145
+ if (message.serverVersion !== '') {
1146
+ writer.uint32(34).string(message.serverVersion);
1147
+ }
1148
+ for (const v of message.iceServers) {
1149
+ ICEServer.encode(v!, writer.uint32(42).fork()).ldelim();
1150
+ }
1151
+ if (message.subscriberPrimary === true) {
1152
+ writer.uint32(48).bool(message.subscriberPrimary);
1153
+ }
1154
+ if (message.alternativeUrl !== '') {
1155
+ writer.uint32(58).string(message.alternativeUrl);
1156
+ }
1157
+ if (message.clientConfiguration !== undefined) {
1158
+ ClientConfiguration.encode(message.clientConfiguration, writer.uint32(66).fork()).ldelim();
1159
+ }
1160
+ if (message.serverRegion !== '') {
1161
+ writer.uint32(74).string(message.serverRegion);
1162
+ }
1163
+ return writer;
1164
+ },
1165
+
1166
+ decode(input: _m0.Reader | Uint8Array, length?: number): JoinResponse {
1167
+ const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input);
1168
+ let end = length === undefined ? reader.len : reader.pos + length;
1169
+ const message = createBaseJoinResponse();
1170
+ while (reader.pos < end) {
1171
+ const tag = reader.uint32();
1172
+ switch (tag >>> 3) {
1173
+ case 1:
1174
+ message.room = Room.decode(reader, reader.uint32());
1175
+ break;
1176
+ case 2:
1177
+ message.participant = ParticipantInfo.decode(reader, reader.uint32());
1178
+ break;
1179
+ case 3:
1180
+ message.otherParticipants.push(ParticipantInfo.decode(reader, reader.uint32()));
1181
+ break;
1182
+ case 4:
1183
+ message.serverVersion = reader.string();
1184
+ break;
1185
+ case 5:
1186
+ message.iceServers.push(ICEServer.decode(reader, reader.uint32()));
1187
+ break;
1188
+ case 6:
1189
+ message.subscriberPrimary = reader.bool();
1190
+ break;
1191
+ case 7:
1192
+ message.alternativeUrl = reader.string();
1193
+ break;
1194
+ case 8:
1195
+ message.clientConfiguration = ClientConfiguration.decode(reader, reader.uint32());
1196
+ break;
1197
+ case 9:
1198
+ message.serverRegion = reader.string();
1199
+ break;
1200
+ default:
1201
+ reader.skipType(tag & 7);
1202
+ break;
1203
+ }
1204
+ }
1205
+ return message;
1206
+ },
1207
+
1208
+ fromJSON(object: any): JoinResponse {
1209
+ return {
1210
+ room: isSet(object.room) ? Room.fromJSON(object.room) : undefined,
1211
+ participant: isSet(object.participant)
1212
+ ? ParticipantInfo.fromJSON(object.participant)
1213
+ : undefined,
1214
+ otherParticipants: Array.isArray(object?.otherParticipants)
1215
+ ? object.otherParticipants.map((e: any) => ParticipantInfo.fromJSON(e))
1216
+ : [],
1217
+ serverVersion: isSet(object.serverVersion) ? String(object.serverVersion) : '',
1218
+ iceServers: Array.isArray(object?.iceServers)
1219
+ ? object.iceServers.map((e: any) => ICEServer.fromJSON(e))
1220
+ : [],
1221
+ subscriberPrimary: isSet(object.subscriberPrimary)
1222
+ ? Boolean(object.subscriberPrimary)
1223
+ : false,
1224
+ alternativeUrl: isSet(object.alternativeUrl) ? String(object.alternativeUrl) : '',
1225
+ clientConfiguration: isSet(object.clientConfiguration)
1226
+ ? ClientConfiguration.fromJSON(object.clientConfiguration)
1227
+ : undefined,
1228
+ serverRegion: isSet(object.serverRegion) ? String(object.serverRegion) : '',
1229
+ };
1230
+ },
1231
+
1232
+ toJSON(message: JoinResponse): unknown {
1233
+ const obj: any = {};
1234
+ message.room !== undefined && (obj.room = message.room ? Room.toJSON(message.room) : undefined);
1235
+ message.participant !== undefined &&
1236
+ (obj.participant = message.participant
1237
+ ? ParticipantInfo.toJSON(message.participant)
1238
+ : undefined);
1239
+ if (message.otherParticipants) {
1240
+ obj.otherParticipants = message.otherParticipants.map((e) =>
1241
+ e ? ParticipantInfo.toJSON(e) : undefined,
1242
+ );
1243
+ } else {
1244
+ obj.otherParticipants = [];
1245
+ }
1246
+ message.serverVersion !== undefined && (obj.serverVersion = message.serverVersion);
1247
+ if (message.iceServers) {
1248
+ obj.iceServers = message.iceServers.map((e) => (e ? ICEServer.toJSON(e) : undefined));
1249
+ } else {
1250
+ obj.iceServers = [];
1251
+ }
1252
+ message.subscriberPrimary !== undefined && (obj.subscriberPrimary = message.subscriberPrimary);
1253
+ message.alternativeUrl !== undefined && (obj.alternativeUrl = message.alternativeUrl);
1254
+ message.clientConfiguration !== undefined &&
1255
+ (obj.clientConfiguration = message.clientConfiguration
1256
+ ? ClientConfiguration.toJSON(message.clientConfiguration)
1257
+ : undefined);
1258
+ message.serverRegion !== undefined && (obj.serverRegion = message.serverRegion);
1259
+ return obj;
1260
+ },
1261
+
1262
+ fromPartial<I extends Exact<DeepPartial<JoinResponse>, I>>(object: I): JoinResponse {
1263
+ const message = createBaseJoinResponse();
1264
+ message.room =
1265
+ object.room !== undefined && object.room !== null ? Room.fromPartial(object.room) : undefined;
1266
+ message.participant =
1267
+ object.participant !== undefined && object.participant !== null
1268
+ ? ParticipantInfo.fromPartial(object.participant)
1269
+ : undefined;
1270
+ message.otherParticipants =
1271
+ object.otherParticipants?.map((e) => ParticipantInfo.fromPartial(e)) || [];
1272
+ message.serverVersion = object.serverVersion ?? '';
1273
+ message.iceServers = object.iceServers?.map((e) => ICEServer.fromPartial(e)) || [];
1274
+ message.subscriberPrimary = object.subscriberPrimary ?? false;
1275
+ message.alternativeUrl = object.alternativeUrl ?? '';
1276
+ message.clientConfiguration =
1277
+ object.clientConfiguration !== undefined && object.clientConfiguration !== null
1278
+ ? ClientConfiguration.fromPartial(object.clientConfiguration)
1279
+ : undefined;
1280
+ message.serverRegion = object.serverRegion ?? '';
1281
+ return message;
1282
+ },
1283
+ };
1284
+
1285
+ function createBaseTrackPublishedResponse(): TrackPublishedResponse {
1286
+ return { cid: '', track: undefined };
1287
+ }
1288
+
1289
+ export const TrackPublishedResponse = {
1290
+ encode(message: TrackPublishedResponse, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer {
1291
+ if (message.cid !== '') {
1292
+ writer.uint32(10).string(message.cid);
1293
+ }
1294
+ if (message.track !== undefined) {
1295
+ TrackInfo.encode(message.track, writer.uint32(18).fork()).ldelim();
1296
+ }
1297
+ return writer;
1298
+ },
1299
+
1300
+ decode(input: _m0.Reader | Uint8Array, length?: number): TrackPublishedResponse {
1301
+ const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input);
1302
+ let end = length === undefined ? reader.len : reader.pos + length;
1303
+ const message = createBaseTrackPublishedResponse();
1304
+ while (reader.pos < end) {
1305
+ const tag = reader.uint32();
1306
+ switch (tag >>> 3) {
1307
+ case 1:
1308
+ message.cid = reader.string();
1309
+ break;
1310
+ case 2:
1311
+ message.track = TrackInfo.decode(reader, reader.uint32());
1312
+ break;
1313
+ default:
1314
+ reader.skipType(tag & 7);
1315
+ break;
1316
+ }
1317
+ }
1318
+ return message;
1319
+ },
1320
+
1321
+ fromJSON(object: any): TrackPublishedResponse {
1322
+ return {
1323
+ cid: isSet(object.cid) ? String(object.cid) : '',
1324
+ track: isSet(object.track) ? TrackInfo.fromJSON(object.track) : undefined,
1325
+ };
1326
+ },
1327
+
1328
+ toJSON(message: TrackPublishedResponse): unknown {
1329
+ const obj: any = {};
1330
+ message.cid !== undefined && (obj.cid = message.cid);
1331
+ message.track !== undefined &&
1332
+ (obj.track = message.track ? TrackInfo.toJSON(message.track) : undefined);
1333
+ return obj;
1334
+ },
1335
+
1336
+ fromPartial<I extends Exact<DeepPartial<TrackPublishedResponse>, I>>(
1337
+ object: I,
1338
+ ): TrackPublishedResponse {
1339
+ const message = createBaseTrackPublishedResponse();
1340
+ message.cid = object.cid ?? '';
1341
+ message.track =
1342
+ object.track !== undefined && object.track !== null
1343
+ ? TrackInfo.fromPartial(object.track)
1344
+ : undefined;
1345
+ return message;
1346
+ },
1347
+ };
1348
+
1349
+ function createBaseTrackUnpublishedResponse(): TrackUnpublishedResponse {
1350
+ return { trackSid: '' };
1351
+ }
1352
+
1353
+ export const TrackUnpublishedResponse = {
1354
+ encode(message: TrackUnpublishedResponse, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer {
1355
+ if (message.trackSid !== '') {
1356
+ writer.uint32(10).string(message.trackSid);
1357
+ }
1358
+ return writer;
1359
+ },
1360
+
1361
+ decode(input: _m0.Reader | Uint8Array, length?: number): TrackUnpublishedResponse {
1362
+ const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input);
1363
+ let end = length === undefined ? reader.len : reader.pos + length;
1364
+ const message = createBaseTrackUnpublishedResponse();
1365
+ while (reader.pos < end) {
1366
+ const tag = reader.uint32();
1367
+ switch (tag >>> 3) {
1368
+ case 1:
1369
+ message.trackSid = reader.string();
1370
+ break;
1371
+ default:
1372
+ reader.skipType(tag & 7);
1373
+ break;
1374
+ }
1375
+ }
1376
+ return message;
1377
+ },
1378
+
1379
+ fromJSON(object: any): TrackUnpublishedResponse {
1380
+ return {
1381
+ trackSid: isSet(object.trackSid) ? String(object.trackSid) : '',
1382
+ };
1383
+ },
1384
+
1385
+ toJSON(message: TrackUnpublishedResponse): unknown {
1386
+ const obj: any = {};
1387
+ message.trackSid !== undefined && (obj.trackSid = message.trackSid);
1388
+ return obj;
1389
+ },
1390
+
1391
+ fromPartial<I extends Exact<DeepPartial<TrackUnpublishedResponse>, I>>(
1392
+ object: I,
1393
+ ): TrackUnpublishedResponse {
1394
+ const message = createBaseTrackUnpublishedResponse();
1395
+ message.trackSid = object.trackSid ?? '';
1396
+ return message;
1397
+ },
1398
+ };
1399
+
1400
+ function createBaseSessionDescription(): SessionDescription {
1401
+ return { type: '', sdp: '' };
1402
+ }
1403
+
1404
+ export const SessionDescription = {
1405
+ encode(message: SessionDescription, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer {
1406
+ if (message.type !== '') {
1407
+ writer.uint32(10).string(message.type);
1408
+ }
1409
+ if (message.sdp !== '') {
1410
+ writer.uint32(18).string(message.sdp);
1411
+ }
1412
+ return writer;
1413
+ },
1414
+
1415
+ decode(input: _m0.Reader | Uint8Array, length?: number): SessionDescription {
1416
+ const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input);
1417
+ let end = length === undefined ? reader.len : reader.pos + length;
1418
+ const message = createBaseSessionDescription();
1419
+ while (reader.pos < end) {
1420
+ const tag = reader.uint32();
1421
+ switch (tag >>> 3) {
1422
+ case 1:
1423
+ message.type = reader.string();
1424
+ break;
1425
+ case 2:
1426
+ message.sdp = reader.string();
1427
+ break;
1428
+ default:
1429
+ reader.skipType(tag & 7);
1430
+ break;
1431
+ }
1432
+ }
1433
+ return message;
1434
+ },
1435
+
1436
+ fromJSON(object: any): SessionDescription {
1437
+ return {
1438
+ type: isSet(object.type) ? String(object.type) : '',
1439
+ sdp: isSet(object.sdp) ? String(object.sdp) : '',
1440
+ };
1441
+ },
1442
+
1443
+ toJSON(message: SessionDescription): unknown {
1444
+ const obj: any = {};
1445
+ message.type !== undefined && (obj.type = message.type);
1446
+ message.sdp !== undefined && (obj.sdp = message.sdp);
1447
+ return obj;
1448
+ },
1449
+
1450
+ fromPartial<I extends Exact<DeepPartial<SessionDescription>, I>>(object: I): SessionDescription {
1451
+ const message = createBaseSessionDescription();
1452
+ message.type = object.type ?? '';
1453
+ message.sdp = object.sdp ?? '';
1454
+ return message;
1455
+ },
1456
+ };
1457
+
1458
+ function createBaseParticipantUpdate(): ParticipantUpdate {
1459
+ return { participants: [] };
1460
+ }
1461
+
1462
+ export const ParticipantUpdate = {
1463
+ encode(message: ParticipantUpdate, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer {
1464
+ for (const v of message.participants) {
1465
+ ParticipantInfo.encode(v!, writer.uint32(10).fork()).ldelim();
1466
+ }
1467
+ return writer;
1468
+ },
1469
+
1470
+ decode(input: _m0.Reader | Uint8Array, length?: number): ParticipantUpdate {
1471
+ const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input);
1472
+ let end = length === undefined ? reader.len : reader.pos + length;
1473
+ const message = createBaseParticipantUpdate();
1474
+ while (reader.pos < end) {
1475
+ const tag = reader.uint32();
1476
+ switch (tag >>> 3) {
1477
+ case 1:
1478
+ message.participants.push(ParticipantInfo.decode(reader, reader.uint32()));
1479
+ break;
1480
+ default:
1481
+ reader.skipType(tag & 7);
1482
+ break;
1483
+ }
1484
+ }
1485
+ return message;
1486
+ },
1487
+
1488
+ fromJSON(object: any): ParticipantUpdate {
1489
+ return {
1490
+ participants: Array.isArray(object?.participants)
1491
+ ? object.participants.map((e: any) => ParticipantInfo.fromJSON(e))
1492
+ : [],
1493
+ };
1494
+ },
1495
+
1496
+ toJSON(message: ParticipantUpdate): unknown {
1497
+ const obj: any = {};
1498
+ if (message.participants) {
1499
+ obj.participants = message.participants.map((e) =>
1500
+ e ? ParticipantInfo.toJSON(e) : undefined,
1501
+ );
1502
+ } else {
1503
+ obj.participants = [];
1504
+ }
1505
+ return obj;
1506
+ },
1507
+
1508
+ fromPartial<I extends Exact<DeepPartial<ParticipantUpdate>, I>>(object: I): ParticipantUpdate {
1509
+ const message = createBaseParticipantUpdate();
1510
+ message.participants = object.participants?.map((e) => ParticipantInfo.fromPartial(e)) || [];
1511
+ return message;
1512
+ },
1513
+ };
1514
+
1515
+ function createBaseUpdateSubscription(): UpdateSubscription {
1516
+ return { trackSids: [], subscribe: false, participantTracks: [] };
1517
+ }
1518
+
1519
+ export const UpdateSubscription = {
1520
+ encode(message: UpdateSubscription, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer {
1521
+ for (const v of message.trackSids) {
1522
+ writer.uint32(10).string(v!);
1523
+ }
1524
+ if (message.subscribe === true) {
1525
+ writer.uint32(16).bool(message.subscribe);
1526
+ }
1527
+ for (const v of message.participantTracks) {
1528
+ ParticipantTracks.encode(v!, writer.uint32(26).fork()).ldelim();
1529
+ }
1530
+ return writer;
1531
+ },
1532
+
1533
+ decode(input: _m0.Reader | Uint8Array, length?: number): UpdateSubscription {
1534
+ const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input);
1535
+ let end = length === undefined ? reader.len : reader.pos + length;
1536
+ const message = createBaseUpdateSubscription();
1537
+ while (reader.pos < end) {
1538
+ const tag = reader.uint32();
1539
+ switch (tag >>> 3) {
1540
+ case 1:
1541
+ message.trackSids.push(reader.string());
1542
+ break;
1543
+ case 2:
1544
+ message.subscribe = reader.bool();
1545
+ break;
1546
+ case 3:
1547
+ message.participantTracks.push(ParticipantTracks.decode(reader, reader.uint32()));
1548
+ break;
1549
+ default:
1550
+ reader.skipType(tag & 7);
1551
+ break;
1552
+ }
1553
+ }
1554
+ return message;
1555
+ },
1556
+
1557
+ fromJSON(object: any): UpdateSubscription {
1558
+ return {
1559
+ trackSids: Array.isArray(object?.trackSids)
1560
+ ? object.trackSids.map((e: any) => String(e))
1561
+ : [],
1562
+ subscribe: isSet(object.subscribe) ? Boolean(object.subscribe) : false,
1563
+ participantTracks: Array.isArray(object?.participantTracks)
1564
+ ? object.participantTracks.map((e: any) => ParticipantTracks.fromJSON(e))
1565
+ : [],
1566
+ };
1567
+ },
1568
+
1569
+ toJSON(message: UpdateSubscription): unknown {
1570
+ const obj: any = {};
1571
+ if (message.trackSids) {
1572
+ obj.trackSids = message.trackSids.map((e) => e);
1573
+ } else {
1574
+ obj.trackSids = [];
1575
+ }
1576
+ message.subscribe !== undefined && (obj.subscribe = message.subscribe);
1577
+ if (message.participantTracks) {
1578
+ obj.participantTracks = message.participantTracks.map((e) =>
1579
+ e ? ParticipantTracks.toJSON(e) : undefined,
1580
+ );
1581
+ } else {
1582
+ obj.participantTracks = [];
1583
+ }
1584
+ return obj;
1585
+ },
1586
+
1587
+ fromPartial<I extends Exact<DeepPartial<UpdateSubscription>, I>>(object: I): UpdateSubscription {
1588
+ const message = createBaseUpdateSubscription();
1589
+ message.trackSids = object.trackSids?.map((e) => e) || [];
1590
+ message.subscribe = object.subscribe ?? false;
1591
+ message.participantTracks =
1592
+ object.participantTracks?.map((e) => ParticipantTracks.fromPartial(e)) || [];
1593
+ return message;
1594
+ },
1595
+ };
1596
+
1597
+ function createBaseUpdateTrackSettings(): UpdateTrackSettings {
1598
+ return { trackSids: [], disabled: false, quality: 0, width: 0, height: 0 };
1599
+ }
1600
+
1601
+ export const UpdateTrackSettings = {
1602
+ encode(message: UpdateTrackSettings, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer {
1603
+ for (const v of message.trackSids) {
1604
+ writer.uint32(10).string(v!);
1605
+ }
1606
+ if (message.disabled === true) {
1607
+ writer.uint32(24).bool(message.disabled);
1608
+ }
1609
+ if (message.quality !== 0) {
1610
+ writer.uint32(32).int32(message.quality);
1611
+ }
1612
+ if (message.width !== 0) {
1613
+ writer.uint32(40).uint32(message.width);
1614
+ }
1615
+ if (message.height !== 0) {
1616
+ writer.uint32(48).uint32(message.height);
1617
+ }
1618
+ return writer;
1619
+ },
1620
+
1621
+ decode(input: _m0.Reader | Uint8Array, length?: number): UpdateTrackSettings {
1622
+ const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input);
1623
+ let end = length === undefined ? reader.len : reader.pos + length;
1624
+ const message = createBaseUpdateTrackSettings();
1625
+ while (reader.pos < end) {
1626
+ const tag = reader.uint32();
1627
+ switch (tag >>> 3) {
1628
+ case 1:
1629
+ message.trackSids.push(reader.string());
1630
+ break;
1631
+ case 3:
1632
+ message.disabled = reader.bool();
1633
+ break;
1634
+ case 4:
1635
+ message.quality = reader.int32() as any;
1636
+ break;
1637
+ case 5:
1638
+ message.width = reader.uint32();
1639
+ break;
1640
+ case 6:
1641
+ message.height = reader.uint32();
1642
+ break;
1643
+ default:
1644
+ reader.skipType(tag & 7);
1645
+ break;
1646
+ }
1647
+ }
1648
+ return message;
1649
+ },
1650
+
1651
+ fromJSON(object: any): UpdateTrackSettings {
1652
+ return {
1653
+ trackSids: Array.isArray(object?.trackSids)
1654
+ ? object.trackSids.map((e: any) => String(e))
1655
+ : [],
1656
+ disabled: isSet(object.disabled) ? Boolean(object.disabled) : false,
1657
+ quality: isSet(object.quality) ? videoQualityFromJSON(object.quality) : 0,
1658
+ width: isSet(object.width) ? Number(object.width) : 0,
1659
+ height: isSet(object.height) ? Number(object.height) : 0,
1660
+ };
1661
+ },
1662
+
1663
+ toJSON(message: UpdateTrackSettings): unknown {
1664
+ const obj: any = {};
1665
+ if (message.trackSids) {
1666
+ obj.trackSids = message.trackSids.map((e) => e);
1667
+ } else {
1668
+ obj.trackSids = [];
1669
+ }
1670
+ message.disabled !== undefined && (obj.disabled = message.disabled);
1671
+ message.quality !== undefined && (obj.quality = videoQualityToJSON(message.quality));
1672
+ message.width !== undefined && (obj.width = Math.round(message.width));
1673
+ message.height !== undefined && (obj.height = Math.round(message.height));
1674
+ return obj;
1675
+ },
1676
+
1677
+ fromPartial<I extends Exact<DeepPartial<UpdateTrackSettings>, I>>(
1678
+ object: I,
1679
+ ): UpdateTrackSettings {
1680
+ const message = createBaseUpdateTrackSettings();
1681
+ message.trackSids = object.trackSids?.map((e) => e) || [];
1682
+ message.disabled = object.disabled ?? false;
1683
+ message.quality = object.quality ?? 0;
1684
+ message.width = object.width ?? 0;
1685
+ message.height = object.height ?? 0;
1686
+ return message;
1687
+ },
1688
+ };
1689
+
1690
+ function createBaseLeaveRequest(): LeaveRequest {
1691
+ return { canReconnect: false };
1692
+ }
1693
+
1694
+ export const LeaveRequest = {
1695
+ encode(message: LeaveRequest, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer {
1696
+ if (message.canReconnect === true) {
1697
+ writer.uint32(8).bool(message.canReconnect);
1698
+ }
1699
+ return writer;
1700
+ },
1701
+
1702
+ decode(input: _m0.Reader | Uint8Array, length?: number): LeaveRequest {
1703
+ const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input);
1704
+ let end = length === undefined ? reader.len : reader.pos + length;
1705
+ const message = createBaseLeaveRequest();
1706
+ while (reader.pos < end) {
1707
+ const tag = reader.uint32();
1708
+ switch (tag >>> 3) {
1709
+ case 1:
1710
+ message.canReconnect = reader.bool();
1711
+ break;
1712
+ default:
1713
+ reader.skipType(tag & 7);
1714
+ break;
1715
+ }
1716
+ }
1717
+ return message;
1718
+ },
1719
+
1720
+ fromJSON(object: any): LeaveRequest {
1721
+ return {
1722
+ canReconnect: isSet(object.canReconnect) ? Boolean(object.canReconnect) : false,
1723
+ };
1724
+ },
1725
+
1726
+ toJSON(message: LeaveRequest): unknown {
1727
+ const obj: any = {};
1728
+ message.canReconnect !== undefined && (obj.canReconnect = message.canReconnect);
1729
+ return obj;
1730
+ },
1731
+
1732
+ fromPartial<I extends Exact<DeepPartial<LeaveRequest>, I>>(object: I): LeaveRequest {
1733
+ const message = createBaseLeaveRequest();
1734
+ message.canReconnect = object.canReconnect ?? false;
1735
+ return message;
1736
+ },
1737
+ };
1738
+
1739
+ function createBaseUpdateVideoLayers(): UpdateVideoLayers {
1740
+ return { trackSid: '', layers: [] };
1741
+ }
1742
+
1743
+ export const UpdateVideoLayers = {
1744
+ encode(message: UpdateVideoLayers, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer {
1745
+ if (message.trackSid !== '') {
1746
+ writer.uint32(10).string(message.trackSid);
1747
+ }
1748
+ for (const v of message.layers) {
1749
+ VideoLayer.encode(v!, writer.uint32(18).fork()).ldelim();
1750
+ }
1751
+ return writer;
1752
+ },
1753
+
1754
+ decode(input: _m0.Reader | Uint8Array, length?: number): UpdateVideoLayers {
1755
+ const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input);
1756
+ let end = length === undefined ? reader.len : reader.pos + length;
1757
+ const message = createBaseUpdateVideoLayers();
1758
+ while (reader.pos < end) {
1759
+ const tag = reader.uint32();
1760
+ switch (tag >>> 3) {
1761
+ case 1:
1762
+ message.trackSid = reader.string();
1763
+ break;
1764
+ case 2:
1765
+ message.layers.push(VideoLayer.decode(reader, reader.uint32()));
1766
+ break;
1767
+ default:
1768
+ reader.skipType(tag & 7);
1769
+ break;
1770
+ }
1771
+ }
1772
+ return message;
1773
+ },
1774
+
1775
+ fromJSON(object: any): UpdateVideoLayers {
1776
+ return {
1777
+ trackSid: isSet(object.trackSid) ? String(object.trackSid) : '',
1778
+ layers: Array.isArray(object?.layers)
1779
+ ? object.layers.map((e: any) => VideoLayer.fromJSON(e))
1780
+ : [],
1781
+ };
1782
+ },
1783
+
1784
+ toJSON(message: UpdateVideoLayers): unknown {
1785
+ const obj: any = {};
1786
+ message.trackSid !== undefined && (obj.trackSid = message.trackSid);
1787
+ if (message.layers) {
1788
+ obj.layers = message.layers.map((e) => (e ? VideoLayer.toJSON(e) : undefined));
1789
+ } else {
1790
+ obj.layers = [];
1791
+ }
1792
+ return obj;
1793
+ },
1794
+
1795
+ fromPartial<I extends Exact<DeepPartial<UpdateVideoLayers>, I>>(object: I): UpdateVideoLayers {
1796
+ const message = createBaseUpdateVideoLayers();
1797
+ message.trackSid = object.trackSid ?? '';
1798
+ message.layers = object.layers?.map((e) => VideoLayer.fromPartial(e)) || [];
1799
+ return message;
1800
+ },
1801
+ };
1802
+
1803
+ function createBaseICEServer(): ICEServer {
1804
+ return { urls: [], username: '', credential: '' };
1805
+ }
1806
+
1807
+ export const ICEServer = {
1808
+ encode(message: ICEServer, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer {
1809
+ for (const v of message.urls) {
1810
+ writer.uint32(10).string(v!);
1811
+ }
1812
+ if (message.username !== '') {
1813
+ writer.uint32(18).string(message.username);
1814
+ }
1815
+ if (message.credential !== '') {
1816
+ writer.uint32(26).string(message.credential);
1817
+ }
1818
+ return writer;
1819
+ },
1820
+
1821
+ decode(input: _m0.Reader | Uint8Array, length?: number): ICEServer {
1822
+ const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input);
1823
+ let end = length === undefined ? reader.len : reader.pos + length;
1824
+ const message = createBaseICEServer();
1825
+ while (reader.pos < end) {
1826
+ const tag = reader.uint32();
1827
+ switch (tag >>> 3) {
1828
+ case 1:
1829
+ message.urls.push(reader.string());
1830
+ break;
1831
+ case 2:
1832
+ message.username = reader.string();
1833
+ break;
1834
+ case 3:
1835
+ message.credential = reader.string();
1836
+ break;
1837
+ default:
1838
+ reader.skipType(tag & 7);
1839
+ break;
1840
+ }
1841
+ }
1842
+ return message;
1843
+ },
1844
+
1845
+ fromJSON(object: any): ICEServer {
1846
+ return {
1847
+ urls: Array.isArray(object?.urls) ? object.urls.map((e: any) => String(e)) : [],
1848
+ username: isSet(object.username) ? String(object.username) : '',
1849
+ credential: isSet(object.credential) ? String(object.credential) : '',
1850
+ };
1851
+ },
1852
+
1853
+ toJSON(message: ICEServer): unknown {
1854
+ const obj: any = {};
1855
+ if (message.urls) {
1856
+ obj.urls = message.urls.map((e) => e);
1857
+ } else {
1858
+ obj.urls = [];
1859
+ }
1860
+ message.username !== undefined && (obj.username = message.username);
1861
+ message.credential !== undefined && (obj.credential = message.credential);
1862
+ return obj;
1863
+ },
1864
+
1865
+ fromPartial<I extends Exact<DeepPartial<ICEServer>, I>>(object: I): ICEServer {
1866
+ const message = createBaseICEServer();
1867
+ message.urls = object.urls?.map((e) => e) || [];
1868
+ message.username = object.username ?? '';
1869
+ message.credential = object.credential ?? '';
1870
+ return message;
1871
+ },
1872
+ };
1873
+
1874
+ function createBaseSpeakersChanged(): SpeakersChanged {
1875
+ return { speakers: [] };
1876
+ }
1877
+
1878
+ export const SpeakersChanged = {
1879
+ encode(message: SpeakersChanged, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer {
1880
+ for (const v of message.speakers) {
1881
+ SpeakerInfo.encode(v!, writer.uint32(10).fork()).ldelim();
1882
+ }
1883
+ return writer;
1884
+ },
1885
+
1886
+ decode(input: _m0.Reader | Uint8Array, length?: number): SpeakersChanged {
1887
+ const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input);
1888
+ let end = length === undefined ? reader.len : reader.pos + length;
1889
+ const message = createBaseSpeakersChanged();
1890
+ while (reader.pos < end) {
1891
+ const tag = reader.uint32();
1892
+ switch (tag >>> 3) {
1893
+ case 1:
1894
+ message.speakers.push(SpeakerInfo.decode(reader, reader.uint32()));
1895
+ break;
1896
+ default:
1897
+ reader.skipType(tag & 7);
1898
+ break;
1899
+ }
1900
+ }
1901
+ return message;
1902
+ },
1903
+
1904
+ fromJSON(object: any): SpeakersChanged {
1905
+ return {
1906
+ speakers: Array.isArray(object?.speakers)
1907
+ ? object.speakers.map((e: any) => SpeakerInfo.fromJSON(e))
1908
+ : [],
1909
+ };
1910
+ },
1911
+
1912
+ toJSON(message: SpeakersChanged): unknown {
1913
+ const obj: any = {};
1914
+ if (message.speakers) {
1915
+ obj.speakers = message.speakers.map((e) => (e ? SpeakerInfo.toJSON(e) : undefined));
1916
+ } else {
1917
+ obj.speakers = [];
1918
+ }
1919
+ return obj;
1920
+ },
1921
+
1922
+ fromPartial<I extends Exact<DeepPartial<SpeakersChanged>, I>>(object: I): SpeakersChanged {
1923
+ const message = createBaseSpeakersChanged();
1924
+ message.speakers = object.speakers?.map((e) => SpeakerInfo.fromPartial(e)) || [];
1925
+ return message;
1926
+ },
1927
+ };
1928
+
1929
+ function createBaseRoomUpdate(): RoomUpdate {
1930
+ return { room: undefined };
1931
+ }
1932
+
1933
+ export const RoomUpdate = {
1934
+ encode(message: RoomUpdate, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer {
1935
+ if (message.room !== undefined) {
1936
+ Room.encode(message.room, writer.uint32(10).fork()).ldelim();
1937
+ }
1938
+ return writer;
1939
+ },
1940
+
1941
+ decode(input: _m0.Reader | Uint8Array, length?: number): RoomUpdate {
1942
+ const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input);
1943
+ let end = length === undefined ? reader.len : reader.pos + length;
1944
+ const message = createBaseRoomUpdate();
1945
+ while (reader.pos < end) {
1946
+ const tag = reader.uint32();
1947
+ switch (tag >>> 3) {
1948
+ case 1:
1949
+ message.room = Room.decode(reader, reader.uint32());
1950
+ break;
1951
+ default:
1952
+ reader.skipType(tag & 7);
1953
+ break;
1954
+ }
1955
+ }
1956
+ return message;
1957
+ },
1958
+
1959
+ fromJSON(object: any): RoomUpdate {
1960
+ return {
1961
+ room: isSet(object.room) ? Room.fromJSON(object.room) : undefined,
1962
+ };
1963
+ },
1964
+
1965
+ toJSON(message: RoomUpdate): unknown {
1966
+ const obj: any = {};
1967
+ message.room !== undefined && (obj.room = message.room ? Room.toJSON(message.room) : undefined);
1968
+ return obj;
1969
+ },
1970
+
1971
+ fromPartial<I extends Exact<DeepPartial<RoomUpdate>, I>>(object: I): RoomUpdate {
1972
+ const message = createBaseRoomUpdate();
1973
+ message.room =
1974
+ object.room !== undefined && object.room !== null ? Room.fromPartial(object.room) : undefined;
1975
+ return message;
1976
+ },
1977
+ };
1978
+
1979
+ function createBaseConnectionQualityInfo(): ConnectionQualityInfo {
1980
+ return { participantSid: '', quality: 0, score: 0 };
1981
+ }
1982
+
1983
+ export const ConnectionQualityInfo = {
1984
+ encode(message: ConnectionQualityInfo, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer {
1985
+ if (message.participantSid !== '') {
1986
+ writer.uint32(10).string(message.participantSid);
1987
+ }
1988
+ if (message.quality !== 0) {
1989
+ writer.uint32(16).int32(message.quality);
1990
+ }
1991
+ if (message.score !== 0) {
1992
+ writer.uint32(29).float(message.score);
1993
+ }
1994
+ return writer;
1995
+ },
1996
+
1997
+ decode(input: _m0.Reader | Uint8Array, length?: number): ConnectionQualityInfo {
1998
+ const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input);
1999
+ let end = length === undefined ? reader.len : reader.pos + length;
2000
+ const message = createBaseConnectionQualityInfo();
2001
+ while (reader.pos < end) {
2002
+ const tag = reader.uint32();
2003
+ switch (tag >>> 3) {
2004
+ case 1:
2005
+ message.participantSid = reader.string();
2006
+ break;
2007
+ case 2:
2008
+ message.quality = reader.int32() as any;
2009
+ break;
2010
+ case 3:
2011
+ message.score = reader.float();
2012
+ break;
2013
+ default:
2014
+ reader.skipType(tag & 7);
2015
+ break;
2016
+ }
2017
+ }
2018
+ return message;
2019
+ },
2020
+
2021
+ fromJSON(object: any): ConnectionQualityInfo {
2022
+ return {
2023
+ participantSid: isSet(object.participantSid) ? String(object.participantSid) : '',
2024
+ quality: isSet(object.quality) ? connectionQualityFromJSON(object.quality) : 0,
2025
+ score: isSet(object.score) ? Number(object.score) : 0,
2026
+ };
2027
+ },
2028
+
2029
+ toJSON(message: ConnectionQualityInfo): unknown {
2030
+ const obj: any = {};
2031
+ message.participantSid !== undefined && (obj.participantSid = message.participantSid);
2032
+ message.quality !== undefined && (obj.quality = connectionQualityToJSON(message.quality));
2033
+ message.score !== undefined && (obj.score = message.score);
2034
+ return obj;
2035
+ },
2036
+
2037
+ fromPartial<I extends Exact<DeepPartial<ConnectionQualityInfo>, I>>(
2038
+ object: I,
2039
+ ): ConnectionQualityInfo {
2040
+ const message = createBaseConnectionQualityInfo();
2041
+ message.participantSid = object.participantSid ?? '';
2042
+ message.quality = object.quality ?? 0;
2043
+ message.score = object.score ?? 0;
2044
+ return message;
2045
+ },
2046
+ };
2047
+
2048
+ function createBaseConnectionQualityUpdate(): ConnectionQualityUpdate {
2049
+ return { updates: [] };
2050
+ }
2051
+
2052
+ export const ConnectionQualityUpdate = {
2053
+ encode(message: ConnectionQualityUpdate, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer {
2054
+ for (const v of message.updates) {
2055
+ ConnectionQualityInfo.encode(v!, writer.uint32(10).fork()).ldelim();
2056
+ }
2057
+ return writer;
2058
+ },
2059
+
2060
+ decode(input: _m0.Reader | Uint8Array, length?: number): ConnectionQualityUpdate {
2061
+ const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input);
2062
+ let end = length === undefined ? reader.len : reader.pos + length;
2063
+ const message = createBaseConnectionQualityUpdate();
2064
+ while (reader.pos < end) {
2065
+ const tag = reader.uint32();
2066
+ switch (tag >>> 3) {
2067
+ case 1:
2068
+ message.updates.push(ConnectionQualityInfo.decode(reader, reader.uint32()));
2069
+ break;
2070
+ default:
2071
+ reader.skipType(tag & 7);
2072
+ break;
2073
+ }
2074
+ }
2075
+ return message;
2076
+ },
2077
+
2078
+ fromJSON(object: any): ConnectionQualityUpdate {
2079
+ return {
2080
+ updates: Array.isArray(object?.updates)
2081
+ ? object.updates.map((e: any) => ConnectionQualityInfo.fromJSON(e))
2082
+ : [],
2083
+ };
2084
+ },
2085
+
2086
+ toJSON(message: ConnectionQualityUpdate): unknown {
2087
+ const obj: any = {};
2088
+ if (message.updates) {
2089
+ obj.updates = message.updates.map((e) => (e ? ConnectionQualityInfo.toJSON(e) : undefined));
2090
+ } else {
2091
+ obj.updates = [];
2092
+ }
2093
+ return obj;
2094
+ },
2095
+
2096
+ fromPartial<I extends Exact<DeepPartial<ConnectionQualityUpdate>, I>>(
2097
+ object: I,
2098
+ ): ConnectionQualityUpdate {
2099
+ const message = createBaseConnectionQualityUpdate();
2100
+ message.updates = object.updates?.map((e) => ConnectionQualityInfo.fromPartial(e)) || [];
2101
+ return message;
2102
+ },
2103
+ };
2104
+
2105
+ function createBaseStreamStateInfo(): StreamStateInfo {
2106
+ return { participantSid: '', trackSid: '', state: 0 };
2107
+ }
2108
+
2109
+ export const StreamStateInfo = {
2110
+ encode(message: StreamStateInfo, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer {
2111
+ if (message.participantSid !== '') {
2112
+ writer.uint32(10).string(message.participantSid);
2113
+ }
2114
+ if (message.trackSid !== '') {
2115
+ writer.uint32(18).string(message.trackSid);
2116
+ }
2117
+ if (message.state !== 0) {
2118
+ writer.uint32(24).int32(message.state);
2119
+ }
2120
+ return writer;
2121
+ },
2122
+
2123
+ decode(input: _m0.Reader | Uint8Array, length?: number): StreamStateInfo {
2124
+ const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input);
2125
+ let end = length === undefined ? reader.len : reader.pos + length;
2126
+ const message = createBaseStreamStateInfo();
2127
+ while (reader.pos < end) {
2128
+ const tag = reader.uint32();
2129
+ switch (tag >>> 3) {
2130
+ case 1:
2131
+ message.participantSid = reader.string();
2132
+ break;
2133
+ case 2:
2134
+ message.trackSid = reader.string();
2135
+ break;
2136
+ case 3:
2137
+ message.state = reader.int32() as any;
2138
+ break;
2139
+ default:
2140
+ reader.skipType(tag & 7);
2141
+ break;
2142
+ }
2143
+ }
2144
+ return message;
2145
+ },
2146
+
2147
+ fromJSON(object: any): StreamStateInfo {
2148
+ return {
2149
+ participantSid: isSet(object.participantSid) ? String(object.participantSid) : '',
2150
+ trackSid: isSet(object.trackSid) ? String(object.trackSid) : '',
2151
+ state: isSet(object.state) ? streamStateFromJSON(object.state) : 0,
2152
+ };
2153
+ },
2154
+
2155
+ toJSON(message: StreamStateInfo): unknown {
2156
+ const obj: any = {};
2157
+ message.participantSid !== undefined && (obj.participantSid = message.participantSid);
2158
+ message.trackSid !== undefined && (obj.trackSid = message.trackSid);
2159
+ message.state !== undefined && (obj.state = streamStateToJSON(message.state));
2160
+ return obj;
2161
+ },
2162
+
2163
+ fromPartial<I extends Exact<DeepPartial<StreamStateInfo>, I>>(object: I): StreamStateInfo {
2164
+ const message = createBaseStreamStateInfo();
2165
+ message.participantSid = object.participantSid ?? '';
2166
+ message.trackSid = object.trackSid ?? '';
2167
+ message.state = object.state ?? 0;
2168
+ return message;
2169
+ },
2170
+ };
2171
+
2172
+ function createBaseStreamStateUpdate(): StreamStateUpdate {
2173
+ return { streamStates: [] };
2174
+ }
2175
+
2176
+ export const StreamStateUpdate = {
2177
+ encode(message: StreamStateUpdate, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer {
2178
+ for (const v of message.streamStates) {
2179
+ StreamStateInfo.encode(v!, writer.uint32(10).fork()).ldelim();
2180
+ }
2181
+ return writer;
2182
+ },
2183
+
2184
+ decode(input: _m0.Reader | Uint8Array, length?: number): StreamStateUpdate {
2185
+ const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input);
2186
+ let end = length === undefined ? reader.len : reader.pos + length;
2187
+ const message = createBaseStreamStateUpdate();
2188
+ while (reader.pos < end) {
2189
+ const tag = reader.uint32();
2190
+ switch (tag >>> 3) {
2191
+ case 1:
2192
+ message.streamStates.push(StreamStateInfo.decode(reader, reader.uint32()));
2193
+ break;
2194
+ default:
2195
+ reader.skipType(tag & 7);
2196
+ break;
2197
+ }
2198
+ }
2199
+ return message;
2200
+ },
2201
+
2202
+ fromJSON(object: any): StreamStateUpdate {
2203
+ return {
2204
+ streamStates: Array.isArray(object?.streamStates)
2205
+ ? object.streamStates.map((e: any) => StreamStateInfo.fromJSON(e))
2206
+ : [],
2207
+ };
2208
+ },
2209
+
2210
+ toJSON(message: StreamStateUpdate): unknown {
2211
+ const obj: any = {};
2212
+ if (message.streamStates) {
2213
+ obj.streamStates = message.streamStates.map((e) =>
2214
+ e ? StreamStateInfo.toJSON(e) : undefined,
2215
+ );
2216
+ } else {
2217
+ obj.streamStates = [];
2218
+ }
2219
+ return obj;
2220
+ },
2221
+
2222
+ fromPartial<I extends Exact<DeepPartial<StreamStateUpdate>, I>>(object: I): StreamStateUpdate {
2223
+ const message = createBaseStreamStateUpdate();
2224
+ message.streamStates = object.streamStates?.map((e) => StreamStateInfo.fromPartial(e)) || [];
2225
+ return message;
2226
+ },
2227
+ };
2228
+
2229
+ function createBaseSubscribedQuality(): SubscribedQuality {
2230
+ return { quality: 0, enabled: false };
2231
+ }
2232
+
2233
+ export const SubscribedQuality = {
2234
+ encode(message: SubscribedQuality, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer {
2235
+ if (message.quality !== 0) {
2236
+ writer.uint32(8).int32(message.quality);
2237
+ }
2238
+ if (message.enabled === true) {
2239
+ writer.uint32(16).bool(message.enabled);
2240
+ }
2241
+ return writer;
2242
+ },
2243
+
2244
+ decode(input: _m0.Reader | Uint8Array, length?: number): SubscribedQuality {
2245
+ const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input);
2246
+ let end = length === undefined ? reader.len : reader.pos + length;
2247
+ const message = createBaseSubscribedQuality();
2248
+ while (reader.pos < end) {
2249
+ const tag = reader.uint32();
2250
+ switch (tag >>> 3) {
2251
+ case 1:
2252
+ message.quality = reader.int32() as any;
2253
+ break;
2254
+ case 2:
2255
+ message.enabled = reader.bool();
2256
+ break;
2257
+ default:
2258
+ reader.skipType(tag & 7);
2259
+ break;
2260
+ }
2261
+ }
2262
+ return message;
2263
+ },
2264
+
2265
+ fromJSON(object: any): SubscribedQuality {
2266
+ return {
2267
+ quality: isSet(object.quality) ? videoQualityFromJSON(object.quality) : 0,
2268
+ enabled: isSet(object.enabled) ? Boolean(object.enabled) : false,
2269
+ };
2270
+ },
2271
+
2272
+ toJSON(message: SubscribedQuality): unknown {
2273
+ const obj: any = {};
2274
+ message.quality !== undefined && (obj.quality = videoQualityToJSON(message.quality));
2275
+ message.enabled !== undefined && (obj.enabled = message.enabled);
2276
+ return obj;
2277
+ },
2278
+
2279
+ fromPartial<I extends Exact<DeepPartial<SubscribedQuality>, I>>(object: I): SubscribedQuality {
2280
+ const message = createBaseSubscribedQuality();
2281
+ message.quality = object.quality ?? 0;
2282
+ message.enabled = object.enabled ?? false;
2283
+ return message;
2284
+ },
2285
+ };
2286
+
2287
+ function createBaseSubscribedQualityUpdate(): SubscribedQualityUpdate {
2288
+ return { trackSid: '', subscribedQualities: [] };
2289
+ }
2290
+
2291
+ export const SubscribedQualityUpdate = {
2292
+ encode(message: SubscribedQualityUpdate, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer {
2293
+ if (message.trackSid !== '') {
2294
+ writer.uint32(10).string(message.trackSid);
2295
+ }
2296
+ for (const v of message.subscribedQualities) {
2297
+ SubscribedQuality.encode(v!, writer.uint32(18).fork()).ldelim();
2298
+ }
2299
+ return writer;
2300
+ },
2301
+
2302
+ decode(input: _m0.Reader | Uint8Array, length?: number): SubscribedQualityUpdate {
2303
+ const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input);
2304
+ let end = length === undefined ? reader.len : reader.pos + length;
2305
+ const message = createBaseSubscribedQualityUpdate();
2306
+ while (reader.pos < end) {
2307
+ const tag = reader.uint32();
2308
+ switch (tag >>> 3) {
2309
+ case 1:
2310
+ message.trackSid = reader.string();
2311
+ break;
2312
+ case 2:
2313
+ message.subscribedQualities.push(SubscribedQuality.decode(reader, reader.uint32()));
2314
+ break;
2315
+ default:
2316
+ reader.skipType(tag & 7);
2317
+ break;
2318
+ }
2319
+ }
2320
+ return message;
2321
+ },
2322
+
2323
+ fromJSON(object: any): SubscribedQualityUpdate {
2324
+ return {
2325
+ trackSid: isSet(object.trackSid) ? String(object.trackSid) : '',
2326
+ subscribedQualities: Array.isArray(object?.subscribedQualities)
2327
+ ? object.subscribedQualities.map((e: any) => SubscribedQuality.fromJSON(e))
2328
+ : [],
2329
+ };
2330
+ },
2331
+
2332
+ toJSON(message: SubscribedQualityUpdate): unknown {
2333
+ const obj: any = {};
2334
+ message.trackSid !== undefined && (obj.trackSid = message.trackSid);
2335
+ if (message.subscribedQualities) {
2336
+ obj.subscribedQualities = message.subscribedQualities.map((e) =>
2337
+ e ? SubscribedQuality.toJSON(e) : undefined,
2338
+ );
2339
+ } else {
2340
+ obj.subscribedQualities = [];
2341
+ }
2342
+ return obj;
2343
+ },
2344
+
2345
+ fromPartial<I extends Exact<DeepPartial<SubscribedQualityUpdate>, I>>(
2346
+ object: I,
2347
+ ): SubscribedQualityUpdate {
2348
+ const message = createBaseSubscribedQualityUpdate();
2349
+ message.trackSid = object.trackSid ?? '';
2350
+ message.subscribedQualities =
2351
+ object.subscribedQualities?.map((e) => SubscribedQuality.fromPartial(e)) || [];
2352
+ return message;
2353
+ },
2354
+ };
2355
+
2356
+ function createBaseTrackPermission(): TrackPermission {
2357
+ return { participantSid: '', allTracks: false, trackSids: [], participantIdentity: '' };
2358
+ }
2359
+
2360
+ export const TrackPermission = {
2361
+ encode(message: TrackPermission, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer {
2362
+ if (message.participantSid !== '') {
2363
+ writer.uint32(10).string(message.participantSid);
2364
+ }
2365
+ if (message.allTracks === true) {
2366
+ writer.uint32(16).bool(message.allTracks);
2367
+ }
2368
+ for (const v of message.trackSids) {
2369
+ writer.uint32(26).string(v!);
2370
+ }
2371
+ if (message.participantIdentity !== '') {
2372
+ writer.uint32(34).string(message.participantIdentity);
2373
+ }
2374
+ return writer;
2375
+ },
2376
+
2377
+ decode(input: _m0.Reader | Uint8Array, length?: number): TrackPermission {
2378
+ const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input);
2379
+ let end = length === undefined ? reader.len : reader.pos + length;
2380
+ const message = createBaseTrackPermission();
2381
+ while (reader.pos < end) {
2382
+ const tag = reader.uint32();
2383
+ switch (tag >>> 3) {
2384
+ case 1:
2385
+ message.participantSid = reader.string();
2386
+ break;
2387
+ case 2:
2388
+ message.allTracks = reader.bool();
2389
+ break;
2390
+ case 3:
2391
+ message.trackSids.push(reader.string());
2392
+ break;
2393
+ case 4:
2394
+ message.participantIdentity = reader.string();
2395
+ break;
2396
+ default:
2397
+ reader.skipType(tag & 7);
2398
+ break;
2399
+ }
2400
+ }
2401
+ return message;
2402
+ },
2403
+
2404
+ fromJSON(object: any): TrackPermission {
2405
+ return {
2406
+ participantSid: isSet(object.participantSid) ? String(object.participantSid) : '',
2407
+ allTracks: isSet(object.allTracks) ? Boolean(object.allTracks) : false,
2408
+ trackSids: Array.isArray(object?.trackSids)
2409
+ ? object.trackSids.map((e: any) => String(e))
2410
+ : [],
2411
+ participantIdentity: isSet(object.participantIdentity)
2412
+ ? String(object.participantIdentity)
2413
+ : '',
2414
+ };
2415
+ },
2416
+
2417
+ toJSON(message: TrackPermission): unknown {
2418
+ const obj: any = {};
2419
+ message.participantSid !== undefined && (obj.participantSid = message.participantSid);
2420
+ message.allTracks !== undefined && (obj.allTracks = message.allTracks);
2421
+ if (message.trackSids) {
2422
+ obj.trackSids = message.trackSids.map((e) => e);
2423
+ } else {
2424
+ obj.trackSids = [];
2425
+ }
2426
+ message.participantIdentity !== undefined &&
2427
+ (obj.participantIdentity = message.participantIdentity);
2428
+ return obj;
2429
+ },
2430
+
2431
+ fromPartial<I extends Exact<DeepPartial<TrackPermission>, I>>(object: I): TrackPermission {
2432
+ const message = createBaseTrackPermission();
2433
+ message.participantSid = object.participantSid ?? '';
2434
+ message.allTracks = object.allTracks ?? false;
2435
+ message.trackSids = object.trackSids?.map((e) => e) || [];
2436
+ message.participantIdentity = object.participantIdentity ?? '';
2437
+ return message;
2438
+ },
2439
+ };
2440
+
2441
+ function createBaseSubscriptionPermission(): SubscriptionPermission {
2442
+ return { allParticipants: false, trackPermissions: [] };
2443
+ }
2444
+
2445
+ export const SubscriptionPermission = {
2446
+ encode(message: SubscriptionPermission, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer {
2447
+ if (message.allParticipants === true) {
2448
+ writer.uint32(8).bool(message.allParticipants);
2449
+ }
2450
+ for (const v of message.trackPermissions) {
2451
+ TrackPermission.encode(v!, writer.uint32(18).fork()).ldelim();
2452
+ }
2453
+ return writer;
2454
+ },
2455
+
2456
+ decode(input: _m0.Reader | Uint8Array, length?: number): SubscriptionPermission {
2457
+ const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input);
2458
+ let end = length === undefined ? reader.len : reader.pos + length;
2459
+ const message = createBaseSubscriptionPermission();
2460
+ while (reader.pos < end) {
2461
+ const tag = reader.uint32();
2462
+ switch (tag >>> 3) {
2463
+ case 1:
2464
+ message.allParticipants = reader.bool();
2465
+ break;
2466
+ case 2:
2467
+ message.trackPermissions.push(TrackPermission.decode(reader, reader.uint32()));
2468
+ break;
2469
+ default:
2470
+ reader.skipType(tag & 7);
2471
+ break;
2472
+ }
2473
+ }
2474
+ return message;
2475
+ },
2476
+
2477
+ fromJSON(object: any): SubscriptionPermission {
2478
+ return {
2479
+ allParticipants: isSet(object.allParticipants) ? Boolean(object.allParticipants) : false,
2480
+ trackPermissions: Array.isArray(object?.trackPermissions)
2481
+ ? object.trackPermissions.map((e: any) => TrackPermission.fromJSON(e))
2482
+ : [],
2483
+ };
2484
+ },
2485
+
2486
+ toJSON(message: SubscriptionPermission): unknown {
2487
+ const obj: any = {};
2488
+ message.allParticipants !== undefined && (obj.allParticipants = message.allParticipants);
2489
+ if (message.trackPermissions) {
2490
+ obj.trackPermissions = message.trackPermissions.map((e) =>
2491
+ e ? TrackPermission.toJSON(e) : undefined,
2492
+ );
2493
+ } else {
2494
+ obj.trackPermissions = [];
2495
+ }
2496
+ return obj;
2497
+ },
2498
+
2499
+ fromPartial<I extends Exact<DeepPartial<SubscriptionPermission>, I>>(
2500
+ object: I,
2501
+ ): SubscriptionPermission {
2502
+ const message = createBaseSubscriptionPermission();
2503
+ message.allParticipants = object.allParticipants ?? false;
2504
+ message.trackPermissions =
2505
+ object.trackPermissions?.map((e) => TrackPermission.fromPartial(e)) || [];
2506
+ return message;
2507
+ },
2508
+ };
2509
+
2510
+ function createBaseSubscriptionPermissionUpdate(): SubscriptionPermissionUpdate {
2511
+ return { participantSid: '', trackSid: '', allowed: false };
2512
+ }
2513
+
2514
+ export const SubscriptionPermissionUpdate = {
2515
+ encode(
2516
+ message: SubscriptionPermissionUpdate,
2517
+ writer: _m0.Writer = _m0.Writer.create(),
2518
+ ): _m0.Writer {
2519
+ if (message.participantSid !== '') {
2520
+ writer.uint32(10).string(message.participantSid);
2521
+ }
2522
+ if (message.trackSid !== '') {
2523
+ writer.uint32(18).string(message.trackSid);
2524
+ }
2525
+ if (message.allowed === true) {
2526
+ writer.uint32(24).bool(message.allowed);
2527
+ }
2528
+ return writer;
2529
+ },
2530
+
2531
+ decode(input: _m0.Reader | Uint8Array, length?: number): SubscriptionPermissionUpdate {
2532
+ const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input);
2533
+ let end = length === undefined ? reader.len : reader.pos + length;
2534
+ const message = createBaseSubscriptionPermissionUpdate();
2535
+ while (reader.pos < end) {
2536
+ const tag = reader.uint32();
2537
+ switch (tag >>> 3) {
2538
+ case 1:
2539
+ message.participantSid = reader.string();
2540
+ break;
2541
+ case 2:
2542
+ message.trackSid = reader.string();
2543
+ break;
2544
+ case 3:
2545
+ message.allowed = reader.bool();
2546
+ break;
2547
+ default:
2548
+ reader.skipType(tag & 7);
2549
+ break;
2550
+ }
2551
+ }
2552
+ return message;
2553
+ },
2554
+
2555
+ fromJSON(object: any): SubscriptionPermissionUpdate {
2556
+ return {
2557
+ participantSid: isSet(object.participantSid) ? String(object.participantSid) : '',
2558
+ trackSid: isSet(object.trackSid) ? String(object.trackSid) : '',
2559
+ allowed: isSet(object.allowed) ? Boolean(object.allowed) : false,
2560
+ };
2561
+ },
2562
+
2563
+ toJSON(message: SubscriptionPermissionUpdate): unknown {
2564
+ const obj: any = {};
2565
+ message.participantSid !== undefined && (obj.participantSid = message.participantSid);
2566
+ message.trackSid !== undefined && (obj.trackSid = message.trackSid);
2567
+ message.allowed !== undefined && (obj.allowed = message.allowed);
2568
+ return obj;
2569
+ },
2570
+
2571
+ fromPartial<I extends Exact<DeepPartial<SubscriptionPermissionUpdate>, I>>(
2572
+ object: I,
2573
+ ): SubscriptionPermissionUpdate {
2574
+ const message = createBaseSubscriptionPermissionUpdate();
2575
+ message.participantSid = object.participantSid ?? '';
2576
+ message.trackSid = object.trackSid ?? '';
2577
+ message.allowed = object.allowed ?? false;
2578
+ return message;
2579
+ },
2580
+ };
2581
+
2582
+ function createBaseSyncState(): SyncState {
2583
+ return { answer: undefined, subscription: undefined, publishTracks: [], dataChannels: [] };
2584
+ }
2585
+
2586
+ export const SyncState = {
2587
+ encode(message: SyncState, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer {
2588
+ if (message.answer !== undefined) {
2589
+ SessionDescription.encode(message.answer, writer.uint32(10).fork()).ldelim();
2590
+ }
2591
+ if (message.subscription !== undefined) {
2592
+ UpdateSubscription.encode(message.subscription, writer.uint32(18).fork()).ldelim();
2593
+ }
2594
+ for (const v of message.publishTracks) {
2595
+ TrackPublishedResponse.encode(v!, writer.uint32(26).fork()).ldelim();
2596
+ }
2597
+ for (const v of message.dataChannels) {
2598
+ DataChannelInfo.encode(v!, writer.uint32(34).fork()).ldelim();
2599
+ }
2600
+ return writer;
2601
+ },
2602
+
2603
+ decode(input: _m0.Reader | Uint8Array, length?: number): SyncState {
2604
+ const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input);
2605
+ let end = length === undefined ? reader.len : reader.pos + length;
2606
+ const message = createBaseSyncState();
2607
+ while (reader.pos < end) {
2608
+ const tag = reader.uint32();
2609
+ switch (tag >>> 3) {
2610
+ case 1:
2611
+ message.answer = SessionDescription.decode(reader, reader.uint32());
2612
+ break;
2613
+ case 2:
2614
+ message.subscription = UpdateSubscription.decode(reader, reader.uint32());
2615
+ break;
2616
+ case 3:
2617
+ message.publishTracks.push(TrackPublishedResponse.decode(reader, reader.uint32()));
2618
+ break;
2619
+ case 4:
2620
+ message.dataChannels.push(DataChannelInfo.decode(reader, reader.uint32()));
2621
+ break;
2622
+ default:
2623
+ reader.skipType(tag & 7);
2624
+ break;
2625
+ }
2626
+ }
2627
+ return message;
2628
+ },
2629
+
2630
+ fromJSON(object: any): SyncState {
2631
+ return {
2632
+ answer: isSet(object.answer) ? SessionDescription.fromJSON(object.answer) : undefined,
2633
+ subscription: isSet(object.subscription)
2634
+ ? UpdateSubscription.fromJSON(object.subscription)
2635
+ : undefined,
2636
+ publishTracks: Array.isArray(object?.publishTracks)
2637
+ ? object.publishTracks.map((e: any) => TrackPublishedResponse.fromJSON(e))
2638
+ : [],
2639
+ dataChannels: Array.isArray(object?.dataChannels)
2640
+ ? object.dataChannels.map((e: any) => DataChannelInfo.fromJSON(e))
2641
+ : [],
2642
+ };
2643
+ },
2644
+
2645
+ toJSON(message: SyncState): unknown {
2646
+ const obj: any = {};
2647
+ message.answer !== undefined &&
2648
+ (obj.answer = message.answer ? SessionDescription.toJSON(message.answer) : undefined);
2649
+ message.subscription !== undefined &&
2650
+ (obj.subscription = message.subscription
2651
+ ? UpdateSubscription.toJSON(message.subscription)
2652
+ : undefined);
2653
+ if (message.publishTracks) {
2654
+ obj.publishTracks = message.publishTracks.map((e) =>
2655
+ e ? TrackPublishedResponse.toJSON(e) : undefined,
2656
+ );
2657
+ } else {
2658
+ obj.publishTracks = [];
2659
+ }
2660
+ if (message.dataChannels) {
2661
+ obj.dataChannels = message.dataChannels.map((e) =>
2662
+ e ? DataChannelInfo.toJSON(e) : undefined,
2663
+ );
2664
+ } else {
2665
+ obj.dataChannels = [];
2666
+ }
2667
+ return obj;
2668
+ },
2669
+
2670
+ fromPartial<I extends Exact<DeepPartial<SyncState>, I>>(object: I): SyncState {
2671
+ const message = createBaseSyncState();
2672
+ message.answer =
2673
+ object.answer !== undefined && object.answer !== null
2674
+ ? SessionDescription.fromPartial(object.answer)
2675
+ : undefined;
2676
+ message.subscription =
2677
+ object.subscription !== undefined && object.subscription !== null
2678
+ ? UpdateSubscription.fromPartial(object.subscription)
2679
+ : undefined;
2680
+ message.publishTracks =
2681
+ object.publishTracks?.map((e) => TrackPublishedResponse.fromPartial(e)) || [];
2682
+ message.dataChannels = object.dataChannels?.map((e) => DataChannelInfo.fromPartial(e)) || [];
2683
+ return message;
2684
+ },
2685
+ };
2686
+
2687
+ function createBaseDataChannelInfo(): DataChannelInfo {
2688
+ return { label: '', id: 0, target: 0 };
2689
+ }
2690
+
2691
+ export const DataChannelInfo = {
2692
+ encode(message: DataChannelInfo, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer {
2693
+ if (message.label !== '') {
2694
+ writer.uint32(10).string(message.label);
2695
+ }
2696
+ if (message.id !== 0) {
2697
+ writer.uint32(16).uint32(message.id);
2698
+ }
2699
+ if (message.target !== 0) {
2700
+ writer.uint32(24).int32(message.target);
2701
+ }
2702
+ return writer;
2703
+ },
2704
+
2705
+ decode(input: _m0.Reader | Uint8Array, length?: number): DataChannelInfo {
2706
+ const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input);
2707
+ let end = length === undefined ? reader.len : reader.pos + length;
2708
+ const message = createBaseDataChannelInfo();
2709
+ while (reader.pos < end) {
2710
+ const tag = reader.uint32();
2711
+ switch (tag >>> 3) {
2712
+ case 1:
2713
+ message.label = reader.string();
2714
+ break;
2715
+ case 2:
2716
+ message.id = reader.uint32();
2717
+ break;
2718
+ case 3:
2719
+ message.target = reader.int32() as any;
2720
+ break;
2721
+ default:
2722
+ reader.skipType(tag & 7);
2723
+ break;
2724
+ }
2725
+ }
2726
+ return message;
2727
+ },
2728
+
2729
+ fromJSON(object: any): DataChannelInfo {
2730
+ return {
2731
+ label: isSet(object.label) ? String(object.label) : '',
2732
+ id: isSet(object.id) ? Number(object.id) : 0,
2733
+ target: isSet(object.target) ? signalTargetFromJSON(object.target) : 0,
2734
+ };
2735
+ },
2736
+
2737
+ toJSON(message: DataChannelInfo): unknown {
2738
+ const obj: any = {};
2739
+ message.label !== undefined && (obj.label = message.label);
2740
+ message.id !== undefined && (obj.id = Math.round(message.id));
2741
+ message.target !== undefined && (obj.target = signalTargetToJSON(message.target));
2742
+ return obj;
2743
+ },
2744
+
2745
+ fromPartial<I extends Exact<DeepPartial<DataChannelInfo>, I>>(object: I): DataChannelInfo {
2746
+ const message = createBaseDataChannelInfo();
2747
+ message.label = object.label ?? '';
2748
+ message.id = object.id ?? 0;
2749
+ message.target = object.target ?? 0;
2750
+ return message;
2751
+ },
2752
+ };
2753
+
2754
+ function createBaseSimulateScenario(): SimulateScenario {
2755
+ return {
2756
+ speakerUpdate: undefined,
2757
+ nodeFailure: undefined,
2758
+ migration: undefined,
2759
+ serverLeave: undefined,
2760
+ };
2761
+ }
2762
+
2763
+ export const SimulateScenario = {
2764
+ encode(message: SimulateScenario, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer {
2765
+ if (message.speakerUpdate !== undefined) {
2766
+ writer.uint32(8).int32(message.speakerUpdate);
2767
+ }
2768
+ if (message.nodeFailure !== undefined) {
2769
+ writer.uint32(16).bool(message.nodeFailure);
2770
+ }
2771
+ if (message.migration !== undefined) {
2772
+ writer.uint32(24).bool(message.migration);
2773
+ }
2774
+ if (message.serverLeave !== undefined) {
2775
+ writer.uint32(32).bool(message.serverLeave);
2776
+ }
2777
+ return writer;
2778
+ },
2779
+
2780
+ decode(input: _m0.Reader | Uint8Array, length?: number): SimulateScenario {
2781
+ const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input);
2782
+ let end = length === undefined ? reader.len : reader.pos + length;
2783
+ const message = createBaseSimulateScenario();
2784
+ while (reader.pos < end) {
2785
+ const tag = reader.uint32();
2786
+ switch (tag >>> 3) {
2787
+ case 1:
2788
+ message.speakerUpdate = reader.int32();
2789
+ break;
2790
+ case 2:
2791
+ message.nodeFailure = reader.bool();
2792
+ break;
2793
+ case 3:
2794
+ message.migration = reader.bool();
2795
+ break;
2796
+ case 4:
2797
+ message.serverLeave = reader.bool();
2798
+ break;
2799
+ default:
2800
+ reader.skipType(tag & 7);
2801
+ break;
2802
+ }
2803
+ }
2804
+ return message;
2805
+ },
2806
+
2807
+ fromJSON(object: any): SimulateScenario {
2808
+ return {
2809
+ speakerUpdate: isSet(object.speakerUpdate) ? Number(object.speakerUpdate) : undefined,
2810
+ nodeFailure: isSet(object.nodeFailure) ? Boolean(object.nodeFailure) : undefined,
2811
+ migration: isSet(object.migration) ? Boolean(object.migration) : undefined,
2812
+ serverLeave: isSet(object.serverLeave) ? Boolean(object.serverLeave) : undefined,
2813
+ };
2814
+ },
2815
+
2816
+ toJSON(message: SimulateScenario): unknown {
2817
+ const obj: any = {};
2818
+ message.speakerUpdate !== undefined && (obj.speakerUpdate = Math.round(message.speakerUpdate));
2819
+ message.nodeFailure !== undefined && (obj.nodeFailure = message.nodeFailure);
2820
+ message.migration !== undefined && (obj.migration = message.migration);
2821
+ message.serverLeave !== undefined && (obj.serverLeave = message.serverLeave);
2822
+ return obj;
2823
+ },
2824
+
2825
+ fromPartial<I extends Exact<DeepPartial<SimulateScenario>, I>>(object: I): SimulateScenario {
2826
+ const message = createBaseSimulateScenario();
2827
+ message.speakerUpdate = object.speakerUpdate ?? undefined;
2828
+ message.nodeFailure = object.nodeFailure ?? undefined;
2829
+ message.migration = object.migration ?? undefined;
2830
+ message.serverLeave = object.serverLeave ?? undefined;
2831
+ return message;
2832
+ },
2833
+ };
2834
+
2835
+ type Builtin = Date | Function | Uint8Array | string | number | boolean | undefined;
2836
+
2837
+ export type DeepPartial<T> = T extends Builtin
2838
+ ? T
2839
+ : T extends Array<infer U>
2840
+ ? Array<DeepPartial<U>>
2841
+ : T extends ReadonlyArray<infer U>
2842
+ ? ReadonlyArray<DeepPartial<U>>
2843
+ : T extends {}
2844
+ ? { [K in keyof T]?: DeepPartial<T[K]> }
2845
+ : Partial<T>;
2846
+
2847
+ type KeysOfUnion<T> = T extends T ? keyof T : never;
2848
+ export type Exact<P, I extends P> = P extends Builtin
2849
+ ? P
2850
+ : P & { [K in keyof P]: Exact<P[K], I[K]> } & Record<Exclude<keyof I, KeysOfUnion<P>>, never>;
2851
+
2852
+ if (_m0.util.Long !== Long) {
2853
+ _m0.util.Long = Long as any;
2854
+ _m0.configure();
2855
+ }
2856
+
2857
+ function isSet(value: any): boolean {
2858
+ return value !== null && value !== undefined;
2859
+ }