livekit-client 2.22.3 → 2.22.4

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 (214) hide show
  1. package/README.md +35 -0
  2. package/dist/livekit-client.e2ee.worker.js +1 -1
  3. package/dist/livekit-client.e2ee.worker.js.map +1 -1
  4. package/dist/livekit-client.e2ee.worker.mjs +2 -1
  5. package/dist/livekit-client.e2ee.worker.mjs.map +1 -1
  6. package/dist/livekit-client.esm.mjs +602 -247
  7. package/dist/livekit-client.esm.mjs.map +1 -1
  8. package/dist/livekit-client.fm.worker.js +1 -1
  9. package/dist/livekit-client.fm.worker.js.map +1 -1
  10. package/dist/livekit-client.fm.worker.mjs +2 -1
  11. package/dist/livekit-client.fm.worker.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/src/api/SignalClient.d.ts +4 -2
  15. package/dist/src/api/SignalClient.d.ts.map +1 -1
  16. package/dist/src/options.d.ts +14 -0
  17. package/dist/src/options.d.ts.map +1 -1
  18. package/dist/src/room/PCTransport.d.ts +78 -7
  19. package/dist/src/room/PCTransport.d.ts.map +1 -1
  20. package/dist/src/room/PCTransportManager.d.ts.map +1 -1
  21. package/dist/src/room/RTCEngine.d.ts +8 -0
  22. package/dist/src/room/RTCEngine.d.ts.map +1 -1
  23. package/dist/src/room/Room.d.ts +1 -1
  24. package/dist/src/room/Room.d.ts.map +1 -1
  25. package/dist/src/room/defaults.d.ts.map +1 -1
  26. package/dist/src/room/errors.d.ts +18 -0
  27. package/dist/src/room/errors.d.ts.map +1 -1
  28. package/dist/src/room/events.d.ts +3 -2
  29. package/dist/src/room/events.d.ts.map +1 -1
  30. package/dist/src/room/participant/publishUtils.d.ts.map +1 -1
  31. package/dist/src/room/rpc/client/RpcClientManager.d.ts.map +1 -1
  32. package/dist/src/room/track/LocalTrack.d.ts.map +1 -1
  33. package/dist/src/room/track/LocalVideoTrack.d.ts +2 -0
  34. package/dist/src/room/track/LocalVideoTrack.d.ts.map +1 -1
  35. package/dist/src/room/track/utils.d.ts +13 -0
  36. package/dist/src/room/track/utils.d.ts.map +1 -1
  37. package/dist/src/room/utils.d.ts +32 -0
  38. package/dist/src/room/utils.d.ts.map +1 -1
  39. package/dist/src/test/compressionStreamStubs.d.ts +12 -0
  40. package/dist/src/test/compressionStreamStubs.d.ts.map +1 -0
  41. package/dist/ts4.2/api/SignalClient.d.ts +187 -185
  42. package/dist/ts4.2/api/SignalClientStateMachine.d.ts +85 -85
  43. package/dist/ts4.2/api/WebSocketStream.d.ts +33 -33
  44. package/dist/ts4.2/api/utils.d.ts +9 -9
  45. package/dist/ts4.2/connectionHelper/ConnectionCheck.d.ts +30 -30
  46. package/dist/ts4.2/connectionHelper/checks/Checker.d.ts +62 -62
  47. package/dist/ts4.2/connectionHelper/checks/cloudRegion.d.ts +18 -18
  48. package/dist/ts4.2/connectionHelper/checks/connectionProtocol.d.ts +20 -20
  49. package/dist/ts4.2/connectionHelper/checks/publishAudio.d.ts +6 -6
  50. package/dist/ts4.2/connectionHelper/checks/publishVideo.d.ts +7 -7
  51. package/dist/ts4.2/connectionHelper/checks/reconnect.d.ts +6 -6
  52. package/dist/ts4.2/connectionHelper/checks/turn.d.ts +6 -6
  53. package/dist/ts4.2/connectionHelper/checks/webrtc.d.ts +6 -6
  54. package/dist/ts4.2/connectionHelper/checks/websocket.d.ts +6 -6
  55. package/dist/ts4.2/e2ee/E2eeManager.d.ts +111 -111
  56. package/dist/ts4.2/e2ee/KeyProvider.d.ts +54 -54
  57. package/dist/ts4.2/e2ee/constants.d.ts +21 -21
  58. package/dist/ts4.2/e2ee/errors.d.ts +12 -12
  59. package/dist/ts4.2/e2ee/events.d.ts +39 -39
  60. package/dist/ts4.2/e2ee/index.d.ts +6 -6
  61. package/dist/ts4.2/e2ee/types.d.ts +231 -231
  62. package/dist/ts4.2/e2ee/utils.d.ts +32 -32
  63. package/dist/ts4.2/e2ee/worker/DataCryptor.d.ts +16 -16
  64. package/dist/ts4.2/e2ee/worker/ErrorRateLimiter.d.ts +21 -21
  65. package/dist/ts4.2/e2ee/worker/FrameCryptor.d.ts +209 -209
  66. package/dist/ts4.2/e2ee/worker/ParticipantKeyHandler.d.ts +81 -84
  67. package/dist/ts4.2/e2ee/worker/e2ee.worker.d.ts +2 -2
  68. package/dist/ts4.2/e2ee/worker/naluUtils.d.ts +28 -28
  69. package/dist/ts4.2/e2ee/worker/sifPayload.d.ts +23 -23
  70. package/dist/ts4.2/frameMetadata/FrameMetadataManager.d.ts +53 -53
  71. package/dist/ts4.2/frameMetadata/frameMetadata.d.ts +33 -33
  72. package/dist/ts4.2/frameMetadata/types.d.ts +62 -62
  73. package/dist/ts4.2/frameMetadata/utils.d.ts +9 -9
  74. package/dist/ts4.2/frameMetadata/worker/frameMetadata.worker.d.ts +2 -2
  75. package/dist/ts4.2/index.d.ts +76 -76
  76. package/dist/ts4.2/logger.d.ts +66 -66
  77. package/dist/ts4.2/options.d.ts +163 -149
  78. package/dist/ts4.2/room/BackOffStrategy.d.ts +27 -27
  79. package/dist/ts4.2/room/DefaultReconnectPolicy.d.ts +8 -8
  80. package/dist/ts4.2/room/DeviceManager.d.ts +12 -12
  81. package/dist/ts4.2/room/PCTransport.d.ts +246 -175
  82. package/dist/ts4.2/room/PCTransportManager.d.ts +77 -77
  83. package/dist/ts4.2/room/RTCEngine.d.ts +269 -262
  84. package/dist/ts4.2/room/ReconnectPolicy.d.ts +24 -24
  85. package/dist/ts4.2/room/RegionUrlProvider.d.ts +36 -36
  86. package/dist/ts4.2/room/Room.d.ts +354 -365
  87. package/dist/ts4.2/room/attribute-typings.d.ts +35 -35
  88. package/dist/ts4.2/room/data-channel/DataChannelManager.d.ts +62 -62
  89. package/dist/ts4.2/room/data-channel/FlowControlledDataChannel.d.ts +94 -95
  90. package/dist/ts4.2/room/data-channel/LossyDataChannel.d.ts +41 -41
  91. package/dist/ts4.2/room/data-channel/ReliableDataChannel.d.ts +57 -57
  92. package/dist/ts4.2/room/data-channel/types.d.ts +12 -12
  93. package/dist/ts4.2/room/data-stream/compression.d.ts +49 -49
  94. package/dist/ts4.2/room/data-stream/constants.d.ts +18 -18
  95. package/dist/ts4.2/room/data-stream/incoming/IncomingDataStreamManager.d.ts +29 -29
  96. package/dist/ts4.2/room/data-stream/incoming/StreamReader.d.ts +80 -80
  97. package/dist/ts4.2/room/data-stream/outgoing/OutgoingDataStreamManager.d.ts +73 -73
  98. package/dist/ts4.2/room/data-stream/outgoing/StreamWriter.d.ts +16 -16
  99. package/dist/ts4.2/room/data-stream/outgoing/header-utils.d.ts +18 -18
  100. package/dist/ts4.2/room/data-track/LocalDataTrack.d.ts +79 -80
  101. package/dist/ts4.2/room/data-track/RemoteDataTrack.d.ts +50 -50
  102. package/dist/ts4.2/room/data-track/depacketizer.d.ts +59 -59
  103. package/dist/ts4.2/room/data-track/frame.d.ts +22 -22
  104. package/dist/ts4.2/room/data-track/handle.d.ts +27 -27
  105. package/dist/ts4.2/room/data-track/incoming/IncomingDataTrackManager.d.ts +124 -124
  106. package/dist/ts4.2/room/data-track/incoming/errors.d.ts +24 -24
  107. package/dist/ts4.2/room/data-track/incoming/pipeline.d.ts +41 -41
  108. package/dist/ts4.2/room/data-track/incoming/types.d.ts +20 -20
  109. package/dist/ts4.2/room/data-track/outgoing/OutgoingDataTrackManager.d.ts +126 -126
  110. package/dist/ts4.2/room/data-track/outgoing/errors.d.ts +74 -74
  111. package/dist/ts4.2/room/data-track/outgoing/pipeline.d.ts +23 -23
  112. package/dist/ts4.2/room/data-track/outgoing/types.d.ts +48 -48
  113. package/dist/ts4.2/room/data-track/packet/constants.d.ts +20 -20
  114. package/dist/ts4.2/room/data-track/packet/errors.d.ts +40 -40
  115. package/dist/ts4.2/room/data-track/packet/extensions.d.ts +69 -69
  116. package/dist/ts4.2/room/data-track/packet/index.d.ts +98 -98
  117. package/dist/ts4.2/room/data-track/packet/serializable.d.ts +13 -13
  118. package/dist/ts4.2/room/data-track/packetizer.d.ts +43 -43
  119. package/dist/ts4.2/room/data-track/track-interfaces.d.ts +23 -23
  120. package/dist/ts4.2/room/data-track/types.d.ts +22 -22
  121. package/dist/ts4.2/room/data-track/utils.d.ts +60 -60
  122. package/dist/ts4.2/room/debounce.d.ts +11 -11
  123. package/dist/ts4.2/room/defaults.d.ts +9 -9
  124. package/dist/ts4.2/room/errors.d.ts +180 -162
  125. package/dist/ts4.2/room/events.d.ts +638 -637
  126. package/dist/ts4.2/room/participant/LocalParticipant.d.ts +287 -287
  127. package/dist/ts4.2/room/participant/Participant.d.ts +142 -144
  128. package/dist/ts4.2/room/participant/ParticipantTrackPermission.d.ts +26 -26
  129. package/dist/ts4.2/room/participant/RemoteParticipant.d.ts +85 -86
  130. package/dist/ts4.2/room/participant/publishUtils.d.ts +53 -53
  131. package/dist/ts4.2/room/rpc/client/RpcClientManager.d.ts +43 -43
  132. package/dist/ts4.2/room/rpc/client/events.d.ts +8 -8
  133. package/dist/ts4.2/room/rpc/index.d.ts +7 -7
  134. package/dist/ts4.2/room/rpc/server/RpcServerManager.d.ts +44 -44
  135. package/dist/ts4.2/room/rpc/server/events.d.ts +8 -8
  136. package/dist/ts4.2/room/rpc/utils.d.ts +131 -131
  137. package/dist/ts4.2/room/stats.d.ts +71 -71
  138. package/dist/ts4.2/room/statsSummary.d.ts +13 -13
  139. package/dist/ts4.2/room/timers.d.ts +12 -12
  140. package/dist/ts4.2/room/token-source/TokenSource.d.ts +82 -82
  141. package/dist/ts4.2/room/token-source/types.d.ts +70 -70
  142. package/dist/ts4.2/room/token-source/utils.d.ts +8 -8
  143. package/dist/ts4.2/room/track/FrameMetadataExtractor.d.ts +19 -19
  144. package/dist/ts4.2/room/track/LocalAudioTrack.d.ts +39 -42
  145. package/dist/ts4.2/room/track/LocalTrack.d.ts +125 -125
  146. package/dist/ts4.2/room/track/LocalTrackPublication.d.ts +42 -42
  147. package/dist/ts4.2/room/track/LocalVideoTrack.d.ts +102 -100
  148. package/dist/ts4.2/room/track/RemoteAudioTrack.d.ts +55 -55
  149. package/dist/ts4.2/room/track/RemoteTrack.d.ts +38 -38
  150. package/dist/ts4.2/room/track/RemoteTrackPublication.d.ts +72 -75
  151. package/dist/ts4.2/room/track/RemoteVideoTrack.d.ts +73 -76
  152. package/dist/ts4.2/room/track/Track.d.ts +156 -166
  153. package/dist/ts4.2/room/track/TrackPublication.d.ts +75 -81
  154. package/dist/ts4.2/room/track/create.d.ts +25 -25
  155. package/dist/ts4.2/room/track/facingMode.d.ts +41 -41
  156. package/dist/ts4.2/room/track/options.d.ts +403 -403
  157. package/dist/ts4.2/room/track/processor/types.d.ts +31 -31
  158. package/dist/ts4.2/room/track/record.d.ts +13 -13
  159. package/dist/ts4.2/room/track/types.d.ts +28 -28
  160. package/dist/ts4.2/room/track/utils.d.ts +60 -47
  161. package/dist/ts4.2/room/types.d.ts +127 -127
  162. package/dist/ts4.2/room/utils.d.ts +246 -214
  163. package/dist/ts4.2/test/MockMediaStreamTrack.d.ts +26 -26
  164. package/dist/ts4.2/test/compressionStreamStubs.d.ts +12 -0
  165. package/dist/ts4.2/test/mocks.d.ts +12 -12
  166. package/dist/ts4.2/test/promiseState.d.ts +12 -12
  167. package/dist/ts4.2/test/signalToken.d.ts +26 -26
  168. package/dist/ts4.2/type-polyfills/non-shared-typed-arrays.d.ts +2 -2
  169. package/dist/ts4.2/utils/AsyncQueue.d.ts +23 -23
  170. package/dist/ts4.2/utils/TypedPromise.d.ts +17 -17
  171. package/dist/ts4.2/utils/abort-signal-polyfill.d.ts +13 -13
  172. package/dist/ts4.2/utils/browserParser.d.ts +13 -13
  173. package/dist/ts4.2/utils/camelToSnakeCase.d.ts +8 -8
  174. package/dist/ts4.2/utils/cloneDeep.d.ts +2 -2
  175. package/dist/ts4.2/utils/dataPacketBuffer.d.ts +34 -34
  176. package/dist/ts4.2/utils/deferrable-map.d.ts +32 -32
  177. package/dist/ts4.2/utils/machineInspector.d.ts +54 -54
  178. package/dist/ts4.2/utils/serializer.d.ts +48 -48
  179. package/dist/ts4.2/utils/subscribeToEvents.d.ts +15 -15
  180. package/dist/ts4.2/utils/ttlmap.d.ts +20 -20
  181. package/dist/ts4.2/version.d.ts +15 -15
  182. package/package.json +5 -4
  183. package/src/api/SignalClient.e2e.test.ts +1 -3
  184. package/src/api/SignalClient.test.ts +160 -10
  185. package/src/api/SignalClient.ts +75 -54
  186. package/src/options.ts +16 -0
  187. package/src/room/PCTransport.test.ts +183 -7
  188. package/src/room/PCTransport.ts +197 -36
  189. package/src/room/PCTransportManager.ts +3 -1
  190. package/src/room/RTCEngine.test.ts +84 -0
  191. package/src/room/RTCEngine.ts +24 -5
  192. package/src/room/Room.test.ts +32 -6
  193. package/src/room/Room.ts +26 -6
  194. package/src/room/data-stream/incoming/IncomingDataStreamManager.test.ts +16 -20
  195. package/src/room/data-stream/incoming/IncomingDataStreamManager.ts +5 -5
  196. package/src/room/data-stream/outgoing/OutgoingDataStreamManager.test.ts +60 -39
  197. package/src/room/data-stream/outgoing/OutgoingDataStreamManager.ts +4 -4
  198. package/src/room/defaults.ts +1 -0
  199. package/src/room/errors.test.ts +36 -0
  200. package/src/room/errors.ts +27 -0
  201. package/src/room/events.ts +2 -1
  202. package/src/room/participant/publishUtils.ts +0 -19
  203. package/src/room/rpc/client/RpcClientManager.test.ts +51 -0
  204. package/src/room/rpc/client/RpcClientManager.ts +32 -15
  205. package/src/room/track/LocalTrack.ts +18 -7
  206. package/src/room/track/LocalVideoTrack.ts +10 -3
  207. package/src/room/track/RemoteAudioTrack.ts +3 -3
  208. package/src/room/track/RemoteVideoTrack.test.ts +210 -0
  209. package/src/room/track/RemoteVideoTrack.ts +29 -3
  210. package/src/room/track/utils.test.ts +201 -2
  211. package/src/room/track/utils.ts +88 -0
  212. package/src/room/utils.test.ts +124 -0
  213. package/src/room/utils.ts +70 -0
  214. package/src/test/compressionStreamStubs.ts +53 -0
@@ -1,365 +1,354 @@
1
- import { DataPacket_Kind, DisconnectReason, Encryption_Type, MetricsBatch, ParticipantPermission, ServerInfo, SipDTMF, SubscriptionError, TranscriptionSegment as TranscriptionSegmentModel } from '@livekit/protocol';
2
- import 'webrtc-adapter';
3
- import type TypedEmitter from 'typed-emitter';
4
- import type { InternalRoomOptions, RoomConnectOptions, RoomOptions } from '../options';
5
- import type { NonSharedUint8Array } from '../type-polyfills/non-shared-typed-arrays';
6
- import TypedPromise from '../utils/TypedPromise';
7
- import RTCEngine, { DataChannelKind } from './RTCEngine';
8
- import type { ByteStreamHandler, TextStreamHandler } from './data-stream/incoming/StreamReader';
9
- import type LocalDataTrack from './data-track/LocalDataTrack';
10
- import type RemoteDataTrack from './data-track/RemoteDataTrack';
11
- import type { DataTrackSid } from './data-track/types';
12
- import { UnexpectedConnectionState } from './errors';
13
- import LocalParticipant from './participant/LocalParticipant';
14
- import Participant from './participant/Participant';
15
- import type { ConnectionQuality } from './participant/Participant';
16
- import RemoteParticipant from './participant/RemoteParticipant';
17
- import type { RpcInvocationData } from './rpc';
18
- import LocalTrackPublication from './track/LocalTrackPublication';
19
- import type RemoteTrack from './track/RemoteTrack';
20
- import RemoteTrackPublication from './track/RemoteTrackPublication';
21
- import { Track } from './track/Track';
22
- import type { TrackPublication } from './track/TrackPublication';
23
- import type { ChatMessage, SimulationOptions, SimulationScenario, TranscriptionSegment } from './types';
24
- export declare enum ConnectionState {
25
- Disconnected = "disconnected",
26
- Connecting = "connecting",
27
- Connected = "connected",
28
- Reconnecting = "reconnecting",
29
- SignalReconnecting = "signalReconnecting"
30
- }
31
- declare const Room_base: new () => TypedEmitter<RoomEventCallbacks>;
32
- /**
33
- * In LiveKit, a room is the logical grouping for a list of participants.
34
- * Participants in a room can publish tracks, and subscribe to others' tracks.
35
- *
36
- * a Room fires [[RoomEvent | RoomEvents]].
37
- *
38
- * @noInheritDoc
39
- */
40
- declare class Room extends Room_base {
41
- state: ConnectionState;
42
- /**
43
- * map of identity: [[RemoteParticipant]]
44
- */
45
- remoteParticipants: Map<string, RemoteParticipant>;
46
- /**
47
- * list of participants that are actively speaking. when this changes
48
- * a [[RoomEvent.ActiveSpeakersChanged]] event is fired
49
- */
50
- activeSpeakers: Participant[];
51
- /** @internal */
52
- engine: RTCEngine;
53
- /** the current participant */
54
- localParticipant: LocalParticipant;
55
- /** options of room */
56
- options: InternalRoomOptions;
57
- /** reflects the sender encryption status of the local participant */
58
- isE2EEEnabled: boolean;
59
- serverInfo?: Partial<ServerInfo>;
60
- private roomInfo?;
61
- private sidToIdentity;
62
- /** connect options of room */
63
- private connOptions?;
64
- private audioEnabled;
65
- private audioContext?;
66
- /** used for aborting pending connections to a LiveKit server */
67
- private abortController?;
68
- /** future holding client initiated connection attempt */
69
- private connectFuture?;
70
- private disconnectLock;
71
- private e2eeManager;
72
- private frameMetadataManager;
73
- private e2eeStateMutex;
74
- private connectionReconcileInterval?;
75
- private statsLogInterval?;
76
- private regionUrlProvider?;
77
- private regionUrl?;
78
- private isVideoPlaybackBlocked;
79
- private log;
80
- private statsLog;
81
- private bufferedEvents;
82
- private isResuming;
83
- private pendingTrackAddedCallbacks;
84
- /**
85
- * map to store first point in time when a particular transcription segment was received
86
- */
87
- private transcriptionReceivedTimes;
88
- private incomingDataStreamManager;
89
- private outgoingDataStreamManager;
90
- private incomingDataTrackManager;
91
- private outgoingDataTrackManager;
92
- private rpcClientManager;
93
- private rpcServerManager;
94
- get hasE2EESetup(): boolean;
95
- /**
96
- * Creates a new Room, the primary construct for a LiveKit session.
97
- * @param options
98
- */
99
- constructor(options?: RoomOptions);
100
- registerTextStreamHandler(topic: string, callback: TextStreamHandler): void;
101
- unregisterTextStreamHandler(topic: string): void;
102
- registerByteStreamHandler(topic: string, callback: ByteStreamHandler): void;
103
- unregisterByteStreamHandler(topic: string): void;
104
- /**
105
- * Establishes the participant as a receiver for calls of the specified RPC method.
106
- *
107
- * @param method - The name of the indicated RPC method
108
- * @param handler - Will be invoked when an RPC request for this method is received
109
- * @returns A promise that resolves when the method is successfully registered
110
- * @throws {Error} If a handler for this method is already registered (must call unregisterRpcMethod first)
111
- *
112
- * @example
113
- * ```typescript
114
- * room.localParticipant?.registerRpcMethod(
115
- * 'greet',
116
- * async (data: RpcInvocationData) => {
117
- * console.log(`Received greeting from ${data.callerIdentity}: ${data.payload}`);
118
- * return `Hello, ${data.callerIdentity}!`;
119
- * }
120
- * );
121
- * ```
122
- *
123
- * The handler should return a Promise that resolves to a string.
124
- * If unable to respond within `responseTimeout`, the request will result in an error on the caller's side.
125
- *
126
- * You may throw errors of type `RpcError` with a string `message` in the handler,
127
- * and they will be received on the caller's side with the message intact.
128
- * Other errors thrown in your handler will not be transmitted as-is, and will instead arrive to the caller as `1500` ("Application Error").
129
- */
130
- registerRpcMethod(method: string, handler: (data: RpcInvocationData) => Promise<string>): void;
131
- /**
132
- * Unregisters a previously registered RPC method.
133
- *
134
- * @param method - The name of the RPC method to unregister
135
- */
136
- unregisterRpcMethod(method: string): void;
137
- /**
138
- * @experimental
139
- */
140
- setE2EEEnabled(enabled: boolean): Promise<void>;
141
- private setupE2EE;
142
- private setupFrameMetadata;
143
- private get logContext();
144
- /**
145
- * if the current room has a participant with `recorder: true` in its JWT grant
146
- **/
147
- get isRecording(): boolean;
148
- /**
149
- * server assigned unique room id.
150
- * returns once a sid has been issued by the server.
151
- */
152
- getSid(): TypedPromise<string, UnexpectedConnectionState>;
153
- /** user assigned name, derived from JWT token */
154
- get name(): string;
155
- /** room metadata */
156
- get metadata(): string | undefined;
157
- get numParticipants(): number;
158
- get numPublishers(): number;
159
- private maybeCreateEngine;
160
- private createRegionStrategy;
161
- /**
162
- * getLocalDevices abstracts navigator.mediaDevices.enumerateDevices.
163
- * In particular, it requests device permissions by default if needed
164
- * and makes sure the returned device does not consist of dummy devices
165
- * @param kind
166
- * @returns a list of available local devices
167
- */
168
- static getLocalDevices(kind?: MediaDeviceKind, requestPermissions?: boolean): Promise<MediaDeviceInfo[]>;
169
- static cleanupRegistry: false | FinalizationRegistry<() => void>;
170
- /**
171
- * prepareConnection should be called as soon as the page is loaded, in order
172
- * to speed up the connection attempt. This function will
173
- * - perform DNS resolution and pre-warm the DNS cache
174
- * - establish TLS connection and cache TLS keys
175
- *
176
- * With LiveKit Cloud, it will also determine the best edge data center for
177
- * the current client to connect to if a token is provided.
178
- */
179
- prepareConnection(url: string, token?: string): Promise<void>;
180
- connect: (url: string, token: string, opts?: RoomConnectOptions) => Promise<void>;
181
- private connectSignal;
182
- private applyJoinResponse;
183
- private attemptConnection;
184
- /**
185
- * disconnects the room, emits [[RoomEvent.Disconnected]]
186
- */
187
- disconnect: (stopTracks?: boolean) => Promise<void>;
188
- /**
189
- * retrieves a participant by identity
190
- * @param identity
191
- * @returns
192
- */
193
- getParticipantByIdentity(identity: string): Participant | undefined;
194
- private clearConnectionFutures;
195
- /**
196
- * @internal for testing
197
- */
198
- simulateScenario(scenario: SimulationScenario, arg?: any): Promise<void>;
199
- private onPageLeave;
200
- /**
201
- * Browsers have different policies regarding audio playback. Most requiring
202
- * some form of user interaction (click/tap/etc).
203
- * In those cases, audio will be silent until a click/tap triggering one of the following
204
- * - `startAudio`
205
- * - `getUserMedia`
206
- */
207
- startAudio: () => Promise<void>;
208
- startVideo: () => Promise<void>;
209
- /**
210
- * Returns true if audio playback is enabled
211
- */
212
- get canPlaybackAudio(): boolean;
213
- /**
214
- * Returns true if video playback is enabled
215
- */
216
- get canPlaybackVideo(): boolean;
217
- getActiveDevice(kind: MediaDeviceKind): string | undefined;
218
- /**
219
- * Switches all active devices used in this room to the given device.
220
- *
221
- * Note: setting AudioOutput is not supported on some browsers. See [setSinkId](https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement/setSinkId#browser_compatibility)
222
- *
223
- * @param kind use `videoinput` for camera track,
224
- * `audioinput` for microphone track,
225
- * `audiooutput` to set speaker for all incoming audio tracks
226
- * @param deviceId
227
- */
228
- switchActiveDevice(kind: MediaDeviceKind, deviceId: string, exact?: boolean): Promise<boolean>;
229
- private setupLocalParticipantEvents;
230
- private recreateEngine;
231
- private onTrackAdded;
232
- private cancelPendingTrackAdded;
233
- private handleLocalTrackSubscribed;
234
- private emitLocalTrackSubscribed;
235
- private handleRestarting;
236
- private handleRestarted;
237
- private handleSignalRestarted;
238
- private handleDisconnect;
239
- private handleParticipantUpdates;
240
- private handleParticipantDisconnected;
241
- private handleActiveSpeakersUpdate;
242
- private handleSpeakersChanged;
243
- private handleStreamStateUpdate;
244
- private handleSubscriptionPermissionUpdate;
245
- private handleSubscriptionError;
246
- private handleDataPacket;
247
- private handleUserPacket;
248
- private handleSipDtmf;
249
- private handleTranscription;
250
- private handleChatMessage;
251
- private handleMetrics;
252
- private handleDataStream;
253
- bufferedSegments: Map<string, TranscriptionSegmentModel>;
254
- private handleAudioPlaybackStarted;
255
- private handleAudioPlaybackFailed;
256
- private handleVideoPlaybackStarted;
257
- private handleVideoPlaybackFailed;
258
- /**
259
- * attempt to select the default devices if the previously selected devices are no longer available after a device change event
260
- */
261
- private selectDefaultDevices;
262
- private handleDeviceChange;
263
- private handleRoomUpdate;
264
- private handleConnectionQualityUpdate;
265
- private acquireAudioContext;
266
- private createParticipant;
267
- private getOrCreateParticipant;
268
- private sendSyncState;
269
- /**
270
- * After resuming, we'll need to notify the server of the current
271
- * subscription settings.
272
- */
273
- private updateSubscriptions;
274
- private getRemoteParticipantBySid;
275
- /** The client capabilities this SDK advertises to other participants in its `ClientInfo`. */
276
- private getClientInfoCapabilities;
277
- private getRemoteParticipantClientProtocol;
278
- private getRemoteParticipantCapabilities;
279
- private getAllRemoteParticipantIdentities;
280
- private registerRpcDataStreamHandler;
281
- private setStatsLogging;
282
- /**
283
- * Dumps stats of both peer connections.
284
- */
285
- private logWebRTCStats;
286
- private registerConnectionReconcile;
287
- private clearConnectionReconcile;
288
- private setAndEmitConnectionState;
289
- private emitBufferedEvents;
290
- private emitWhenConnected;
291
- private onLocalParticipantMetadataChanged;
292
- private onLocalParticipantNameChanged;
293
- private onLocalAttributesChanged;
294
- private onLocalTrackMuted;
295
- private onLocalTrackUnmuted;
296
- private onTrackProcessorUpdate;
297
- private onLocalTrackPublished;
298
- private onLocalTrackUnpublished;
299
- private onLocalTrackRestarted;
300
- private onLocalConnectionQualityChanged;
301
- private onMediaDevicesError;
302
- private onLocalParticipantPermissionsChanged;
303
- private onLocalChatMessageSent;
304
- /**
305
- * Allows to populate a room with simulated participants.
306
- * No actual connection to a server will be established, all state is
307
- * @experimental
308
- */
309
- simulateParticipants(options: SimulationOptions): Promise<void>;
310
- emit<E extends keyof RoomEventCallbacks>(event: E, ...args: Parameters<RoomEventCallbacks[E]>): boolean;
311
- }
312
- export default Room;
313
- export type RoomEventCallbacks = {
314
- connected: () => void;
315
- reconnecting: () => void;
316
- signalReconnecting: () => void;
317
- reconnected: () => void;
318
- disconnected: (reason?: DisconnectReason) => void;
319
- connectionStateChanged: (state: ConnectionState) => void;
320
- moved: (name: string) => void;
321
- mediaDevicesChanged: () => void;
322
- participantConnected: (participant: RemoteParticipant) => void;
323
- participantDisconnected: (participant: RemoteParticipant, disconnectReason?: DisconnectReason) => void;
324
- trackPublished: (publication: RemoteTrackPublication, participant: RemoteParticipant) => void;
325
- trackSubscribed: (track: RemoteTrack, publication: RemoteTrackPublication, participant: RemoteParticipant) => void;
326
- trackSubscriptionFailed: (trackSid: string, participant: RemoteParticipant, reason?: SubscriptionError) => void;
327
- trackUnpublished: (publication: RemoteTrackPublication, participant: RemoteParticipant) => void;
328
- trackUnsubscribed: (track: RemoteTrack, publication: RemoteTrackPublication, participant: RemoteParticipant) => void;
329
- trackMuted: (publication: TrackPublication, participant: Participant) => void;
330
- trackUnmuted: (publication: TrackPublication, participant: Participant) => void;
331
- localTrackPublished: (publication: LocalTrackPublication, participant: LocalParticipant) => void;
332
- localTrackUnpublished: (publication: LocalTrackPublication, participant: LocalParticipant) => void;
333
- localAudioSilenceDetected: (publication: LocalTrackPublication) => void;
334
- participantMetadataChanged: (metadata: string | undefined, participant: RemoteParticipant | LocalParticipant) => void;
335
- participantNameChanged: (name: string, participant: RemoteParticipant | LocalParticipant) => void;
336
- participantPermissionsChanged: (prevPermissions: ParticipantPermission | undefined, participant: RemoteParticipant | LocalParticipant) => void;
337
- participantAttributesChanged: (changedAttributes: Record<string, string>, participant: RemoteParticipant | LocalParticipant) => void;
338
- activeSpeakersChanged: (speakers: Array<Participant>) => void;
339
- roomMetadataChanged: (metadata: string) => void;
340
- dataReceived: (payload: NonSharedUint8Array, participant?: RemoteParticipant, kind?: DataPacket_Kind, topic?: string, encryptionType?: Encryption_Type) => void;
341
- sipDTMFReceived: (dtmf: SipDTMF, participant?: RemoteParticipant) => void;
342
- transcriptionReceived: (transcription: TranscriptionSegment[], participant?: Participant, publication?: TrackPublication) => void;
343
- connectionQualityChanged: (quality: ConnectionQuality, participant: Participant) => void;
344
- mediaDevicesError: (error: Error, kind?: MediaDeviceKind) => void;
345
- trackStreamStateChanged: (publication: RemoteTrackPublication, streamState: Track.StreamState, participant: RemoteParticipant) => void;
346
- trackSubscriptionPermissionChanged: (publication: RemoteTrackPublication, status: TrackPublication.PermissionStatus, participant: RemoteParticipant) => void;
347
- trackSubscriptionStatusChanged: (publication: RemoteTrackPublication, status: TrackPublication.SubscriptionStatus, participant: RemoteParticipant) => void;
348
- audioPlaybackChanged: (playing: boolean) => void;
349
- videoPlaybackChanged: (playing: boolean) => void;
350
- signalConnected: () => void;
351
- recordingStatusChanged: (recording: boolean) => void;
352
- participantEncryptionStatusChanged: (encrypted: boolean, participant?: Participant) => void;
353
- encryptionError: (error: Error, participant?: Participant) => void;
354
- dcBufferStatusChanged: (isLow: boolean, kind: DataChannelKind) => void;
355
- activeDeviceChanged: (kind: MediaDeviceKind, deviceId: string) => void;
356
- chatMessage: (message: ChatMessage, participant?: RemoteParticipant | LocalParticipant) => void;
357
- localTrackSubscribed: (publication: LocalTrackPublication, participant: LocalParticipant) => void;
358
- metricsReceived: (metrics: MetricsBatch, participant?: Participant) => void;
359
- participantActive: (participant: Participant) => void;
360
- dataTrackPublished: (track: RemoteDataTrack) => void;
361
- dataTrackUnpublished: (sid: DataTrackSid) => void;
362
- localDataTrackPublished: (track: LocalDataTrack) => void;
363
- localDataTrackUnpublished: (sid: DataTrackSid) => void;
364
- };
365
- //# sourceMappingURL=Room.d.ts.map
1
+ import { DataPacket_Kind, DisconnectReason, Encryption_Type, MetricsBatch, ParticipantPermission, ServerInfo, SipDTMF, SubscriptionError, TranscriptionSegment as TranscriptionSegmentModel } from '@livekit/protocol';
2
+ import 'webrtc-adapter';
3
+ import type TypedEmitter from 'typed-emitter';
4
+ import type { InternalRoomOptions, RoomConnectOptions, RoomOptions } from '../options';
5
+ import type { NonSharedUint8Array } from '../type-polyfills/non-shared-typed-arrays';
6
+ import TypedPromise from '../utils/TypedPromise';
7
+ import RTCEngine, { DataChannelKind } from './RTCEngine';
8
+ import type { ByteStreamHandler, TextStreamHandler } from './data-stream/incoming/StreamReader';
9
+ import type LocalDataTrack from './data-track/LocalDataTrack';
10
+ import type RemoteDataTrack from './data-track/RemoteDataTrack';
11
+ import type { DataTrackSid } from './data-track/types';
12
+ import { UnexpectedConnectionState } from './errors';
13
+ import LocalParticipant from './participant/LocalParticipant';
14
+ import Participant from './participant/Participant';
15
+ import type { ConnectionQuality } from './participant/Participant';
16
+ import RemoteParticipant from './participant/RemoteParticipant';
17
+ import type { RpcInvocationData } from './rpc';
18
+ import LocalTrackPublication from './track/LocalTrackPublication';
19
+ import type RemoteTrack from './track/RemoteTrack';
20
+ import RemoteTrackPublication from './track/RemoteTrackPublication';
21
+ import { Track } from './track/Track';
22
+ import type { TrackPublication } from './track/TrackPublication';
23
+ import type { ChatMessage, SimulationOptions, SimulationScenario, TranscriptionSegment } from './types';
24
+ export declare enum ConnectionState {
25
+ Disconnected = "disconnected",
26
+ Connecting = "connecting",
27
+ Connected = "connected",
28
+ Reconnecting = "reconnecting",
29
+ SignalReconnecting = "signalReconnecting"
30
+ }
31
+ declare const Room_base: new () => TypedEmitter<RoomEventCallbacks>;
32
+ /**
33
+ * In LiveKit, a room is the logical grouping for a list of participants.
34
+ * Participants in a room can publish tracks, and subscribe to others' tracks.
35
+ *
36
+ * a Room fires [[RoomEvent | RoomEvents]].
37
+ *
38
+ * @noInheritDoc
39
+ */
40
+ declare class Room extends Room_base {
41
+ state: ConnectionState;
42
+ /**
43
+ * map of identity: [[RemoteParticipant]]
44
+ */
45
+ remoteParticipants: Map<string, RemoteParticipant>;
46
+ /**
47
+ * list of participants that are actively speaking. when this changes
48
+ * a [[RoomEvent.ActiveSpeakersChanged]] event is fired
49
+ */
50
+ activeSpeakers: Participant[];
51
+ /** @internal */
52
+ engine: RTCEngine;
53
+ /** the current participant */
54
+ localParticipant: LocalParticipant;
55
+ /** options of room */
56
+ options: InternalRoomOptions;
57
+ /** reflects the sender encryption status of the local participant */
58
+ isE2EEEnabled: boolean;
59
+ serverInfo?: Partial<ServerInfo>;
60
+ private roomInfo?;
61
+ private sidToIdentity;
62
+ /** connect options of room */
63
+ private connOptions?;
64
+ private audioEnabled;
65
+ private audioContext?;
66
+ /** used for aborting pending connections to a LiveKit server */
67
+ private abortController?;
68
+ /** future holding client initiated connection attempt */
69
+ private connectFuture?;
70
+ private disconnectLock;
71
+ private e2eeManager;
72
+ private frameMetadataManager;
73
+ private e2eeStateMutex;
74
+ private connectionReconcileInterval?;
75
+ private statsLogInterval?;
76
+ private regionUrlProvider?;
77
+ private regionUrl?;
78
+ private isVideoPlaybackBlocked;
79
+ private log;
80
+ private statsLog;
81
+ private bufferedEvents;
82
+ private isResuming;
83
+ private pendingTrackAddedCallbacks;
84
+ /**
85
+ * map to store first point in time when a particular transcription segment was received
86
+ */
87
+ private transcriptionReceivedTimes;
88
+ private incomingDataStreamManager;
89
+ private outgoingDataStreamManager;
90
+ private incomingDataTrackManager;
91
+ private outgoingDataTrackManager;
92
+ private rpcClientManager;
93
+ private rpcServerManager;
94
+ get hasE2EESetup(): boolean;
95
+ /**
96
+ * Creates a new Room, the primary construct for a LiveKit session.
97
+ * @param options
98
+ */
99
+ constructor(options?: RoomOptions);
100
+ registerTextStreamHandler(topic: string, callback: TextStreamHandler): void;
101
+ unregisterTextStreamHandler(topic: string): void;
102
+ registerByteStreamHandler(topic: string, callback: ByteStreamHandler): void;
103
+ unregisterByteStreamHandler(topic: string): void;
104
+ /**
105
+ * Establishes the participant as a receiver for calls of the specified RPC method.
106
+ *
107
+ * @param method - The name of the indicated RPC method
108
+ * @param handler - Will be invoked when an RPC request for this method is received
109
+ * @returns A promise that resolves when the method is successfully registered
110
+ * @throws {Error} If a handler for this method is already registered (must call unregisterRpcMethod first)
111
+ *
112
+ * @example
113
+ * ```typescript
114
+ * room.localParticipant?.registerRpcMethod(
115
+ * 'greet',
116
+ * async (data: RpcInvocationData) => {
117
+ * console.log(`Received greeting from ${data.callerIdentity}: ${data.payload}`);
118
+ * return `Hello, ${data.callerIdentity}!`;
119
+ * }
120
+ * );
121
+ * ```
122
+ *
123
+ * The handler should return a Promise that resolves to a string.
124
+ * If unable to respond within `responseTimeout`, the request will result in an error on the caller's side.
125
+ *
126
+ * You may throw errors of type `RpcError` with a string `message` in the handler,
127
+ * and they will be received on the caller's side with the message intact.
128
+ * Other errors thrown in your handler will not be transmitted as-is, and will instead arrive to the caller as `1500` ("Application Error").
129
+ */
130
+ registerRpcMethod(method: string, handler: (data: RpcInvocationData) => Promise<string>): void;
131
+ /**
132
+ * Unregisters a previously registered RPC method.
133
+ *
134
+ * @param method - The name of the RPC method to unregister
135
+ */
136
+ unregisterRpcMethod(method: string): void;
137
+ /**
138
+ * @experimental
139
+ */
140
+ setE2EEEnabled(enabled: boolean): Promise<void>;
141
+ private setupE2EE;
142
+ private setupFrameMetadata;
143
+ private get logContext();
144
+ get isRecording(): boolean;
145
+ /**
146
+ * server assigned unique room id.
147
+ * returns once a sid has been issued by the server.
148
+ */
149
+ getSid(): TypedPromise<string, UnexpectedConnectionState>;
150
+ get name(): string;
151
+ get metadata(): (string | undefined);
152
+ get numParticipants(): number;
153
+ get numPublishers(): number;
154
+ private maybeCreateEngine;
155
+ private createRegionStrategy;
156
+ /**
157
+ * getLocalDevices abstracts navigator.mediaDevices.enumerateDevices.
158
+ * In particular, it requests device permissions by default if needed
159
+ * and makes sure the returned device does not consist of dummy devices
160
+ * @param kind
161
+ * @returns a list of available local devices
162
+ */
163
+ static getLocalDevices(kind?: MediaDeviceKind, requestPermissions?: boolean): Promise<MediaDeviceInfo[]>;
164
+ static cleanupRegistry: false | FinalizationRegistry<() => void>;
165
+ /**
166
+ * prepareConnection should be called as soon as the page is loaded, in order
167
+ * to speed up the connection attempt. This function will
168
+ * - perform DNS resolution and pre-warm the DNS cache
169
+ * - establish TLS connection and cache TLS keys
170
+ *
171
+ * With LiveKit Cloud, it will also determine the best edge data center for
172
+ * the current client to connect to if a token is provided.
173
+ */
174
+ prepareConnection(url: string, token?: string): Promise<void>;
175
+ connect: (url: string, token: string, opts?: RoomConnectOptions) => Promise<void>;
176
+ private connectSignal;
177
+ private applyJoinResponse;
178
+ private attemptConnection;
179
+ /**
180
+ * disconnects the room, emits [[RoomEvent.Disconnected]]
181
+ */
182
+ disconnect: (stopTracks?: boolean) => Promise<void>;
183
+ /**
184
+ * retrieves a participant by identity
185
+ * @param identity
186
+ * @returns
187
+ */
188
+ getParticipantByIdentity(identity: string): Participant | undefined;
189
+ private clearConnectionFutures;
190
+ /**
191
+ * @internal for testing
192
+ */
193
+ simulateScenario(scenario: SimulationScenario, arg?: any): Promise<void>;
194
+ private onPageLeave;
195
+ /**
196
+ * Browsers have different policies regarding audio playback. Most requiring
197
+ * some form of user interaction (click/tap/etc).
198
+ * In those cases, audio will be silent until a click/tap triggering one of the following
199
+ * - `startAudio`
200
+ * - `getUserMedia`
201
+ */
202
+ startAudio: () => Promise<void>;
203
+ startVideo: () => Promise<void>;
204
+ get canPlaybackAudio(): boolean;
205
+ get canPlaybackVideo(): boolean;
206
+ getActiveDevice(kind: MediaDeviceKind): string | undefined;
207
+ /**
208
+ * Switches all active devices used in this room to the given device.
209
+ *
210
+ * Note: setting AudioOutput is not supported on some browsers. See [setSinkId](https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement/setSinkId#browser_compatibility)
211
+ *
212
+ * @param kind use `videoinput` for camera track,
213
+ * `audioinput` for microphone track,
214
+ * `audiooutput` to set speaker for all incoming audio tracks
215
+ * @param deviceId
216
+ */
217
+ switchActiveDevice(kind: MediaDeviceKind, deviceId: string, exact?: boolean): Promise<boolean>;
218
+ private setupLocalParticipantEvents;
219
+ private recreateEngine;
220
+ private onTrackAdded;
221
+ private cancelPendingTrackAdded;
222
+ private handleLocalTrackSubscribed;
223
+ private emitLocalTrackSubscribed;
224
+ private handleRestarting;
225
+ private handleRestarted;
226
+ private handleSignalRestarted;
227
+ private handleDisconnect;
228
+ private handleParticipantUpdates;
229
+ private handleParticipantDisconnected;
230
+ private handleActiveSpeakersUpdate;
231
+ private handleSpeakersChanged;
232
+ private handleStreamStateUpdate;
233
+ private handleSubscriptionPermissionUpdate;
234
+ private handleSubscriptionError;
235
+ private handleDataPacket;
236
+ private handleUserPacket;
237
+ private handleSipDtmf;
238
+ private handleTranscription;
239
+ private handleChatMessage;
240
+ private handleMetrics;
241
+ private handleDataStream;
242
+ bufferedSegments: Map<string, TranscriptionSegmentModel>;
243
+ private handleAudioPlaybackStarted;
244
+ private handleAudioPlaybackFailed;
245
+ private handleVideoPlaybackStarted;
246
+ private handleVideoPlaybackFailed;
247
+ /**
248
+ * attempt to select the default devices if the previously selected devices are no longer available after a device change event
249
+ */
250
+ private selectDefaultDevices;
251
+ private handleDeviceChange;
252
+ private handleRoomUpdate;
253
+ private handleConnectionQualityUpdate;
254
+ private acquireAudioContext;
255
+ private createParticipant;
256
+ private getOrCreateParticipant;
257
+ private sendSyncState;
258
+ /**
259
+ * After resuming, we'll need to notify the server of the current
260
+ * subscription settings.
261
+ */
262
+ private updateSubscriptions;
263
+ private getRemoteParticipantBySid;
264
+ /** The client capabilities this SDK advertises to other participants in its `ClientInfo`. */
265
+ private getClientInfoCapabilities;
266
+ private getRemoteParticipantClientProtocol;
267
+ private getRemoteParticipantCapabilities;
268
+ private getAllRemoteParticipantIdentities;
269
+ private registerRpcDataStreamHandler;
270
+ private setStatsLogging;
271
+ /**
272
+ * Dumps stats of both peer connections.
273
+ */
274
+ private logWebRTCStats;
275
+ private registerConnectionReconcile;
276
+ private clearConnectionReconcile;
277
+ private setAndEmitConnectionState;
278
+ private emitBufferedEvents;
279
+ private emitWhenConnected;
280
+ private onLocalParticipantMetadataChanged;
281
+ private onLocalParticipantNameChanged;
282
+ private onLocalAttributesChanged;
283
+ private onLocalTrackMuted;
284
+ private onLocalTrackUnmuted;
285
+ private onTrackProcessorUpdate;
286
+ private onLocalTrackPublished;
287
+ private onLocalTrackUnpublished;
288
+ private onLocalTrackRestarted;
289
+ private onLocalConnectionQualityChanged;
290
+ private onMediaDevicesError;
291
+ private onLocalParticipantPermissionsChanged;
292
+ private onLocalChatMessageSent;
293
+ /**
294
+ * Allows to populate a room with simulated participants.
295
+ * No actual connection to a server will be established, all state is
296
+ * @experimental
297
+ */
298
+ simulateParticipants(options: SimulationOptions): Promise<void>;
299
+ emit<E extends keyof RoomEventCallbacks>(event: E, ...args: Parameters<RoomEventCallbacks[E]>): boolean;
300
+ }
301
+ export default Room;
302
+ export type RoomEventCallbacks = {
303
+ connected: () => void;
304
+ reconnecting: () => void;
305
+ signalReconnecting: () => void;
306
+ reconnected: () => void;
307
+ disconnected: (reason?: DisconnectReason) => void;
308
+ connectionStateChanged: (state: ConnectionState) => void;
309
+ moved: (name: string) => void;
310
+ mediaDevicesChanged: () => void;
311
+ participantConnected: (participant: RemoteParticipant) => void;
312
+ participantDisconnected: (participant: RemoteParticipant, disconnectReason?: DisconnectReason) => void;
313
+ trackPublished: (publication: RemoteTrackPublication, participant: RemoteParticipant) => void;
314
+ trackSubscribed: (track: RemoteTrack, publication: RemoteTrackPublication, participant: RemoteParticipant) => void;
315
+ trackSubscriptionFailed: (trackSid: string, participant: RemoteParticipant, reason?: SubscriptionError) => void;
316
+ trackUnpublished: (publication: RemoteTrackPublication, participant: RemoteParticipant) => void;
317
+ trackUnsubscribed: (track: RemoteTrack, publication: RemoteTrackPublication, participant: RemoteParticipant) => void;
318
+ trackMuted: (publication: TrackPublication, participant: Participant) => void;
319
+ trackUnmuted: (publication: TrackPublication, participant: Participant) => void;
320
+ localTrackPublished: (publication: LocalTrackPublication, participant: LocalParticipant) => void;
321
+ localTrackUnpublished: (publication: LocalTrackPublication, participant: LocalParticipant) => void;
322
+ localAudioSilenceDetected: (publication: LocalTrackPublication) => void;
323
+ participantMetadataChanged: (metadata: string | undefined, participant: RemoteParticipant | LocalParticipant) => void;
324
+ participantNameChanged: (name: string, participant: RemoteParticipant | LocalParticipant) => void;
325
+ participantPermissionsChanged: (prevPermissions: ParticipantPermission | undefined, participant: RemoteParticipant | LocalParticipant) => void;
326
+ participantAttributesChanged: (changedAttributes: Record<string, string>, participant: RemoteParticipant | LocalParticipant) => void;
327
+ activeSpeakersChanged: (speakers: Array<Participant>) => void;
328
+ roomMetadataChanged: (metadata: string) => void;
329
+ dataReceived: (payload: NonSharedUint8Array, participant?: RemoteParticipant, kind?: DataPacket_Kind, topic?: string, encryptionType?: Encryption_Type, participantIdentity?: string) => void;
330
+ sipDTMFReceived: (dtmf: SipDTMF, participant?: RemoteParticipant) => void;
331
+ transcriptionReceived: (transcription: TranscriptionSegment[], participant?: Participant, publication?: TrackPublication) => void;
332
+ connectionQualityChanged: (quality: ConnectionQuality, participant: Participant) => void;
333
+ mediaDevicesError: (error: Error, kind?: MediaDeviceKind) => void;
334
+ trackStreamStateChanged: (publication: RemoteTrackPublication, streamState: Track.StreamState, participant: RemoteParticipant) => void;
335
+ trackSubscriptionPermissionChanged: (publication: RemoteTrackPublication, status: TrackPublication.PermissionStatus, participant: RemoteParticipant) => void;
336
+ trackSubscriptionStatusChanged: (publication: RemoteTrackPublication, status: TrackPublication.SubscriptionStatus, participant: RemoteParticipant) => void;
337
+ audioPlaybackChanged: (playing: boolean) => void;
338
+ videoPlaybackChanged: (playing: boolean) => void;
339
+ signalConnected: () => void;
340
+ recordingStatusChanged: (recording: boolean) => void;
341
+ participantEncryptionStatusChanged: (encrypted: boolean, participant?: Participant) => void;
342
+ encryptionError: (error: Error, participant?: Participant) => void;
343
+ dcBufferStatusChanged: (isLow: boolean, kind: DataChannelKind) => void;
344
+ activeDeviceChanged: (kind: MediaDeviceKind, deviceId: string) => void;
345
+ chatMessage: (message: ChatMessage, participant?: RemoteParticipant | LocalParticipant) => void;
346
+ localTrackSubscribed: (publication: LocalTrackPublication, participant: LocalParticipant) => void;
347
+ metricsReceived: (metrics: MetricsBatch, participant?: Participant) => void;
348
+ participantActive: (participant: Participant) => void;
349
+ dataTrackPublished: (track: RemoteDataTrack) => void;
350
+ dataTrackUnpublished: (sid: DataTrackSid) => void;
351
+ localDataTrackPublished: (track: LocalDataTrack) => void;
352
+ localDataTrackUnpublished: (sid: DataTrackSid) => void;
353
+ };
354
+ //# sourceMappingURL=Room.d.ts.map