livekit-client 2.22.3 → 2.23.0

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