@textrp/briij-js-sdk 41.0.1 → 43.0.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 (380) hide show
  1. package/CHANGELOG.md +14 -1
  2. package/LICENSE +177 -177
  3. package/README.md +85 -3
  4. package/lib/@types/AESEncryptedSecretStoragePayload.js.map +1 -1
  5. package/lib/@types/IIdentityServerProvider.js.map +1 -1
  6. package/lib/@types/PushRules.js +14 -14
  7. package/lib/@types/PushRules.js.map +1 -1
  8. package/lib/@types/another-json.d.js.map +1 -1
  9. package/lib/@types/auth.d.ts +72 -1
  10. package/lib/@types/auth.d.ts.map +1 -1
  11. package/lib/@types/auth.js +57 -54
  12. package/lib/@types/auth.js.map +1 -1
  13. package/lib/@types/beacon.js +100 -100
  14. package/lib/@types/beacon.js.map +1 -1
  15. package/lib/@types/common.js.map +1 -1
  16. package/lib/@types/crypto.js.map +1 -1
  17. package/lib/@types/event.d.ts +59 -0
  18. package/lib/@types/event.d.ts.map +1 -1
  19. package/lib/@types/event.js +105 -102
  20. package/lib/@types/event.js.map +1 -1
  21. package/lib/@types/events.js.map +1 -1
  22. package/lib/@types/extensible_events.js +53 -53
  23. package/lib/@types/extensible_events.js.map +1 -1
  24. package/lib/@types/local_notifications.js.map +1 -1
  25. package/lib/@types/location.js +41 -41
  26. package/lib/@types/location.js.map +1 -1
  27. package/lib/@types/matrix-sdk-crypto-wasm.d.js.map +1 -1
  28. package/lib/@types/media.js.map +1 -1
  29. package/lib/@types/membership.js +39 -39
  30. package/lib/@types/membership.js.map +1 -1
  31. package/lib/@types/partials.js +25 -25
  32. package/lib/@types/partials.js.map +1 -1
  33. package/lib/@types/polls.js +46 -46
  34. package/lib/@types/polls.js.map +1 -1
  35. package/lib/@types/read_receipts.js +14 -14
  36. package/lib/@types/read_receipts.js.map +1 -1
  37. package/lib/@types/registration.js.map +1 -1
  38. package/lib/@types/search.js +14 -14
  39. package/lib/@types/search.js.map +1 -1
  40. package/lib/@types/signed.js.map +1 -1
  41. package/lib/@types/spaces.js.map +1 -1
  42. package/lib/@types/state_events.js.map +1 -1
  43. package/lib/@types/synapse.js.map +1 -1
  44. package/lib/@types/sync.js +18 -18
  45. package/lib/@types/sync.js.map +1 -1
  46. package/lib/@types/threepids.js +14 -14
  47. package/lib/@types/threepids.js.map +1 -1
  48. package/lib/@types/topic.js +47 -47
  49. package/lib/@types/topic.js.map +1 -1
  50. package/lib/@types/uia.js.map +1 -1
  51. package/lib/NamespacedValue.js +20 -20
  52. package/lib/NamespacedValue.js.map +1 -1
  53. package/lib/ReEmitter.js +16 -16
  54. package/lib/ReEmitter.js.map +1 -1
  55. package/lib/base64.js +32 -32
  56. package/lib/base64.js.map +1 -1
  57. package/lib/briij.d.ts +4 -0
  58. package/lib/briij.d.ts.map +1 -1
  59. package/lib/briij.js +4 -0
  60. package/lib/briij.js.map +1 -1
  61. package/lib/client.d.ts +48 -1
  62. package/lib/client.d.ts.map +1 -1
  63. package/lib/client.js +262 -108
  64. package/lib/client.js.map +1 -1
  65. package/lib/common-crypto/key-passphrase.js +19 -19
  66. package/lib/common-crypto/key-passphrase.js.map +1 -1
  67. package/lib/content-helpers.js +57 -57
  68. package/lib/content-helpers.js.map +1 -1
  69. package/lib/content-repo.js +36 -36
  70. package/lib/content-repo.js.map +1 -1
  71. package/lib/crypto/store/base.js +69 -69
  72. package/lib/crypto/store/base.js.map +1 -1
  73. package/lib/crypto/store/indexeddb-crypto-store-backend.js +58 -58
  74. package/lib/crypto/store/indexeddb-crypto-store-backend.js.map +1 -1
  75. package/lib/crypto/store/indexeddb-crypto-store.js +193 -193
  76. package/lib/crypto/store/indexeddb-crypto-store.js.map +1 -1
  77. package/lib/crypto/store/localStorage-crypto-store.js +72 -72
  78. package/lib/crypto/store/localStorage-crypto-store.js.map +1 -1
  79. package/lib/crypto/store/memory-crypto-store.js +74 -74
  80. package/lib/crypto/store/memory-crypto-store.js.map +1 -1
  81. package/lib/crypto-api/CryptoEventHandlerMap.js.map +1 -1
  82. package/lib/crypto-api/key-passphrase.js +22 -22
  83. package/lib/crypto-api/key-passphrase.js.map +1 -1
  84. package/lib/crypto-api/keybackup.js.map +1 -1
  85. package/lib/crypto-api/recovery-key.js +20 -20
  86. package/lib/crypto-api/recovery-key.js.map +1 -1
  87. package/lib/digest.js +21 -21
  88. package/lib/digest.js.map +1 -1
  89. package/lib/extensible_events_v1/ExtensibleEvent.js +39 -39
  90. package/lib/extensible_events_v1/ExtensibleEvent.js.map +1 -1
  91. package/lib/extensible_events_v1/InvalidEventError.js +16 -16
  92. package/lib/extensible_events_v1/InvalidEventError.js.map +1 -1
  93. package/lib/extensible_events_v1/MessageEvent.js +39 -39
  94. package/lib/extensible_events_v1/MessageEvent.js.map +1 -1
  95. package/lib/extensible_events_v1/PollEndEvent.js +29 -29
  96. package/lib/extensible_events_v1/PollEndEvent.js.map +1 -1
  97. package/lib/extensible_events_v1/PollResponseEvent.js +39 -39
  98. package/lib/extensible_events_v1/PollResponseEvent.js.map +1 -1
  99. package/lib/extensible_events_v1/PollStartEvent.js +52 -52
  100. package/lib/extensible_events_v1/PollStartEvent.js.map +1 -1
  101. package/lib/extensible_events_v1/utilities.js +22 -22
  102. package/lib/extensible_events_v1/utilities.js.map +1 -1
  103. package/lib/feature.js +16 -16
  104. package/lib/feature.js.map +1 -1
  105. package/lib/http-api/method.js +14 -14
  106. package/lib/http-api/method.js.map +1 -1
  107. package/lib/http-api/prefix.js +26 -26
  108. package/lib/http-api/prefix.js.map +1 -1
  109. package/lib/indexeddb-helpers.js +21 -21
  110. package/lib/indexeddb-helpers.js.map +1 -1
  111. package/lib/indexeddb-worker.js +18 -18
  112. package/lib/indexeddb-worker.js.map +1 -1
  113. package/lib/matrixrtc/IKeyTransport.js +17 -17
  114. package/lib/matrixrtc/IKeyTransport.js.map +1 -1
  115. package/lib/matrixrtc/IMembershipManager.js +27 -27
  116. package/lib/matrixrtc/IMembershipManager.js.map +1 -1
  117. package/lib/matrixrtc/LivekitTransport.js +19 -19
  118. package/lib/matrixrtc/LivekitTransport.js.map +1 -1
  119. package/lib/matrixrtc/index.js +14 -14
  120. package/lib/matrixrtc/index.js.map +1 -1
  121. package/lib/matrixrtc/utils.js +27 -27
  122. package/lib/matrixrtc/utils.js.map +1 -1
  123. package/lib/models/ToDeviceMessage.js.map +1 -1
  124. package/lib/models/device.js +24 -24
  125. package/lib/models/device.js.map +1 -1
  126. package/lib/models/event-status.js +17 -17
  127. package/lib/models/event-status.js.map +1 -1
  128. package/lib/models/invites-ignorer-types.js +25 -25
  129. package/lib/models/invites-ignorer-types.js.map +1 -1
  130. package/lib/models/profile-keys.js +26 -26
  131. package/lib/models/profile-keys.js.map +1 -1
  132. package/lib/models/room-summary.js +26 -26
  133. package/lib/models/room-summary.js.map +1 -1
  134. package/lib/models/search-result.js +22 -22
  135. package/lib/models/search-result.js.map +1 -1
  136. package/lib/models/typed-event-emitter.js +122 -122
  137. package/lib/models/typed-event-emitter.js.map +1 -1
  138. package/lib/oidc/authorize.js +76 -76
  139. package/lib/oidc/authorize.js.map +1 -1
  140. package/lib/oidc/error.js +17 -17
  141. package/lib/oidc/error.js.map +1 -1
  142. package/lib/oidc/index.js +17 -17
  143. package/lib/oidc/index.js.map +1 -1
  144. package/lib/oidc/register.js +41 -41
  145. package/lib/oidc/register.js.map +1 -1
  146. package/lib/oidc/tokenRefresher.js +51 -51
  147. package/lib/oidc/tokenRefresher.js.map +1 -1
  148. package/lib/oidc/validate.js +59 -59
  149. package/lib/oidc/validate.js.map +1 -1
  150. package/lib/randomstring.js +35 -35
  151. package/lib/randomstring.js.map +1 -1
  152. package/lib/realtime-callbacks.js +39 -39
  153. package/lib/realtime-callbacks.js.map +1 -1
  154. package/lib/receipt-accumulator.js +44 -44
  155. package/lib/receipt-accumulator.js.map +1 -1
  156. package/lib/rendezvous/RendezvousChannel.js.map +1 -1
  157. package/lib/rendezvous/RendezvousCode.js.map +1 -1
  158. package/lib/rendezvous/RendezvousError.js +14 -14
  159. package/lib/rendezvous/RendezvousError.js.map +1 -1
  160. package/lib/rendezvous/RendezvousFailureReason.js +14 -14
  161. package/lib/rendezvous/RendezvousFailureReason.js.map +1 -1
  162. package/lib/rendezvous/RendezvousIntent.js +14 -14
  163. package/lib/rendezvous/RendezvousIntent.js.map +1 -1
  164. package/lib/rendezvous/RendezvousTransport.js.map +1 -1
  165. package/lib/rendezvous/channels/MSC4108SecureChannel.js +63 -63
  166. package/lib/rendezvous/channels/MSC4108SecureChannel.js.map +1 -1
  167. package/lib/rendezvous/channels/index.js +14 -14
  168. package/lib/rendezvous/channels/index.js.map +1 -1
  169. package/lib/rendezvous/index.js +14 -14
  170. package/lib/rendezvous/index.js.map +1 -1
  171. package/lib/rendezvous/transports/index.js +14 -14
  172. package/lib/rendezvous/transports/index.js.map +1 -1
  173. package/lib/rust-crypto/CrossSigningIdentity.js +29 -29
  174. package/lib/rust-crypto/CrossSigningIdentity.js.map +1 -1
  175. package/lib/rust-crypto/OutgoingRequestsManager.js +37 -37
  176. package/lib/rust-crypto/OutgoingRequestsManager.js.map +1 -1
  177. package/lib/rust-crypto/device-converter.js +30 -30
  178. package/lib/rust-crypto/device-converter.js.map +1 -1
  179. package/lib/rust-crypto/secret-storage.js +30 -30
  180. package/lib/rust-crypto/secret-storage.js.map +1 -1
  181. package/lib/service-types.js +14 -14
  182. package/lib/service-types.js.map +1 -1
  183. package/lib/store/local-storage-events-emitter.js +21 -21
  184. package/lib/store/local-storage-events-emitter.js.map +1 -1
  185. package/lib/sync-accumulator.js +50 -50
  186. package/lib/sync-accumulator.js.map +1 -1
  187. package/lib/thread-utils.js +20 -20
  188. package/lib/thread-utils.js.map +1 -1
  189. package/lib/types.js +34 -34
  190. package/lib/types.js.map +1 -1
  191. package/lib/utils/decryptAESSecretStorageItem.js +22 -22
  192. package/lib/utils/decryptAESSecretStorageItem.js.map +1 -1
  193. package/lib/utils/encryptAESSecretStorageItem.js +26 -26
  194. package/lib/utils/encryptAESSecretStorageItem.js.map +1 -1
  195. package/lib/utils/internal/deriveKeys.js +21 -21
  196. package/lib/utils/internal/deriveKeys.js.map +1 -1
  197. package/lib/utils/roomVersion.js +26 -26
  198. package/lib/utils/roomVersion.js.map +1 -1
  199. package/lib/version-support.js +26 -26
  200. package/lib/version-support.js.map +1 -1
  201. package/lib/wallet-recovery.d.ts +24 -0
  202. package/lib/wallet-recovery.d.ts.map +1 -0
  203. package/lib/wallet-recovery.js +232 -0
  204. package/lib/wallet-recovery.js.map +1 -0
  205. package/lib/webrtc/audioContext.js +24 -24
  206. package/lib/webrtc/audioContext.js.map +1 -1
  207. package/lib/webrtc/callEventTypes.js.map +1 -1
  208. package/lib/webrtc/stats/callFeedStatsReporter.js +14 -14
  209. package/lib/webrtc/stats/callFeedStatsReporter.js.map +1 -1
  210. package/lib/webrtc/stats/callStatsReportGatherer.js +14 -14
  211. package/lib/webrtc/stats/callStatsReportGatherer.js.map +1 -1
  212. package/lib/webrtc/stats/callStatsReportSummary.js.map +1 -1
  213. package/lib/webrtc/stats/connectionStats.js +14 -14
  214. package/lib/webrtc/stats/connectionStats.js.map +1 -1
  215. package/lib/webrtc/stats/connectionStatsBuilder.js +14 -14
  216. package/lib/webrtc/stats/connectionStatsBuilder.js.map +1 -1
  217. package/lib/webrtc/stats/connectionStatsReportBuilder.js +14 -14
  218. package/lib/webrtc/stats/connectionStatsReportBuilder.js.map +1 -1
  219. package/lib/webrtc/stats/groupCallStats.js +14 -14
  220. package/lib/webrtc/stats/groupCallStats.js.map +1 -1
  221. package/lib/webrtc/stats/media/mediaSsrcHandler.js +14 -14
  222. package/lib/webrtc/stats/media/mediaSsrcHandler.js.map +1 -1
  223. package/lib/webrtc/stats/media/mediaTrackHandler.js +14 -14
  224. package/lib/webrtc/stats/media/mediaTrackHandler.js.map +1 -1
  225. package/lib/webrtc/stats/media/mediaTrackStats.js +27 -27
  226. package/lib/webrtc/stats/media/mediaTrackStats.js.map +1 -1
  227. package/lib/webrtc/stats/media/mediaTrackStatsHandler.js +20 -20
  228. package/lib/webrtc/stats/media/mediaTrackStatsHandler.js.map +1 -1
  229. package/lib/webrtc/stats/statsReport.js +14 -14
  230. package/lib/webrtc/stats/statsReport.js.map +1 -1
  231. package/lib/webrtc/stats/statsReportEmitter.js +14 -14
  232. package/lib/webrtc/stats/statsReportEmitter.js.map +1 -1
  233. package/lib/webrtc/stats/trackStatsBuilder.js +4 -4
  234. package/lib/webrtc/stats/trackStatsBuilder.js.map +1 -1
  235. package/lib/webrtc/stats/transportStats.js.map +1 -1
  236. package/lib/webrtc/stats/transportStatsBuilder.js.map +1 -1
  237. package/lib/webrtc/stats/valueFormatter.js +11 -11
  238. package/lib/webrtc/stats/valueFormatter.js.map +1 -1
  239. package/lib/xrpl/identity.d.ts +28 -0
  240. package/lib/xrpl/identity.d.ts.map +1 -0
  241. package/lib/xrpl/identity.js +213 -0
  242. package/lib/xrpl/identity.js.map +1 -0
  243. package/lib/xrpl/trust.d.ts +8 -0
  244. package/lib/xrpl/trust.d.ts.map +1 -0
  245. package/lib/xrpl/trust.js +61 -0
  246. package/lib/xrpl/trust.js.map +1 -0
  247. package/lib/xrpl/verification.d.ts +26 -0
  248. package/lib/xrpl/verification.d.ts.map +1 -0
  249. package/lib/xrpl/verification.js +295 -0
  250. package/lib/xrpl/verification.js.map +1 -0
  251. package/package.json +130 -129
  252. package/src/@types/AESEncryptedSecretStoragePayload.ts +29 -29
  253. package/src/@types/IIdentityServerProvider.ts +24 -24
  254. package/src/@types/PushRules.ts +208 -208
  255. package/src/@types/another-json.d.ts +19 -19
  256. package/src/@types/auth.ts +340 -258
  257. package/src/@types/beacon.ts +140 -140
  258. package/src/@types/common.ts +24 -24
  259. package/src/@types/crypto.ts +71 -71
  260. package/src/@types/event.ts +508 -449
  261. package/src/@types/events.ts +119 -119
  262. package/src/@types/extensible_events.ts +147 -147
  263. package/src/@types/local_notifications.ts +19 -19
  264. package/src/@types/location.ts +92 -92
  265. package/src/@types/matrix-sdk-crypto-wasm.d.ts +39 -39
  266. package/src/@types/media.ts +245 -245
  267. package/src/@types/membership.ts +57 -57
  268. package/src/@types/partials.ts +103 -103
  269. package/src/@types/polls.ts +120 -120
  270. package/src/@types/read_receipts.ts +61 -61
  271. package/src/@types/registration.ts +102 -102
  272. package/src/@types/search.ts +119 -119
  273. package/src/@types/signed.ts +25 -25
  274. package/src/@types/spaces.ts +37 -37
  275. package/src/@types/state_events.ts +153 -153
  276. package/src/@types/synapse.ts +40 -40
  277. package/src/@types/sync.ts +27 -27
  278. package/src/@types/threepids.ts +29 -29
  279. package/src/@types/topic.ts +69 -69
  280. package/src/@types/uia.ts +24 -24
  281. package/src/NamespacedValue.ts +121 -121
  282. package/src/ReEmitter.ts +93 -93
  283. package/src/base64.ts +86 -86
  284. package/src/briij.ts +4 -0
  285. package/src/client.ts +183 -10
  286. package/src/common-crypto/README.md +4 -4
  287. package/src/common-crypto/key-passphrase.ts +43 -43
  288. package/src/content-helpers.ts +298 -298
  289. package/src/content-repo.ts +122 -122
  290. package/src/crypto/store/base.ts +388 -388
  291. package/src/crypto/store/indexeddb-crypto-store-backend.ts +655 -655
  292. package/src/crypto/store/indexeddb-crypto-store.ts +555 -555
  293. package/src/crypto/store/localStorage-crypto-store.ts +409 -409
  294. package/src/crypto/store/memory-crypto-store.ts +326 -326
  295. package/src/crypto-api/CryptoEventHandlerMap.ts +42 -42
  296. package/src/crypto-api/key-passphrase.ts +58 -58
  297. package/src/crypto-api/keybackup.ts +114 -114
  298. package/src/crypto-api/recovery-key.ts +69 -69
  299. package/src/digest.ts +34 -34
  300. package/src/extensible_events_v1/ExtensibleEvent.ts +58 -58
  301. package/src/extensible_events_v1/InvalidEventError.ts +24 -24
  302. package/src/extensible_events_v1/MessageEvent.ts +143 -143
  303. package/src/extensible_events_v1/PollEndEvent.ts +97 -97
  304. package/src/extensible_events_v1/PollResponseEvent.ts +148 -148
  305. package/src/extensible_events_v1/PollStartEvent.ts +207 -207
  306. package/src/extensible_events_v1/utilities.ts +35 -35
  307. package/src/feature.ts +88 -88
  308. package/src/http-api/method.ts +25 -25
  309. package/src/http-api/prefix.ts +48 -48
  310. package/src/indexeddb-helpers.ts +50 -50
  311. package/src/indexeddb-worker.ts +24 -24
  312. package/src/matrixrtc/IKeyTransport.ts +63 -63
  313. package/src/matrixrtc/IMembershipManager.ts +120 -120
  314. package/src/matrixrtc/LivekitTransport.ts +46 -46
  315. package/src/matrixrtc/index.ts +24 -24
  316. package/src/matrixrtc/utils.ts +71 -71
  317. package/src/models/ToDeviceMessage.ts +38 -38
  318. package/src/models/device.ts +85 -85
  319. package/src/models/event-status.ts +39 -39
  320. package/src/models/invites-ignorer-types.ts +58 -58
  321. package/src/models/profile-keys.ts +33 -33
  322. package/src/models/room-summary.ts +78 -78
  323. package/src/models/search-result.ts +57 -57
  324. package/src/models/typed-event-emitter.ts +246 -246
  325. package/src/oidc/authorize.ts +279 -279
  326. package/src/oidc/error.ts +33 -33
  327. package/src/oidc/index.ts +33 -33
  328. package/src/oidc/register.ts +163 -163
  329. package/src/oidc/tokenRefresher.ts +184 -184
  330. package/src/oidc/validate.ts +265 -265
  331. package/src/randomstring.ts +103 -103
  332. package/src/realtime-callbacks.ts +191 -191
  333. package/src/receipt-accumulator.ts +189 -189
  334. package/src/rendezvous/RendezvousChannel.ts +48 -48
  335. package/src/rendezvous/RendezvousCode.ts +25 -25
  336. package/src/rendezvous/RendezvousError.ts +26 -26
  337. package/src/rendezvous/RendezvousFailureReason.ts +49 -49
  338. package/src/rendezvous/RendezvousIntent.ts +20 -20
  339. package/src/rendezvous/RendezvousTransport.ts +58 -58
  340. package/src/rendezvous/channels/MSC4108SecureChannel.ts +270 -270
  341. package/src/rendezvous/channels/index.ts +17 -17
  342. package/src/rendezvous/index.ts +25 -25
  343. package/src/rendezvous/transports/index.ts +17 -17
  344. package/src/rust-crypto/CrossSigningIdentity.ts +195 -195
  345. package/src/rust-crypto/OutgoingRequestsManager.ts +170 -170
  346. package/src/rust-crypto/device-converter.ts +128 -128
  347. package/src/rust-crypto/secret-storage.ts +60 -60
  348. package/src/service-types.ts +20 -20
  349. package/src/store/local-storage-events-emitter.ts +46 -46
  350. package/src/sync-accumulator.ts +779 -779
  351. package/src/thread-utils.ts +31 -31
  352. package/src/types.ts +59 -59
  353. package/src/utils/decryptAESSecretStorageItem.ts +54 -54
  354. package/src/utils/encryptAESSecretStorageItem.ts +73 -73
  355. package/src/utils/internal/deriveKeys.ts +63 -63
  356. package/src/utils/roomVersion.ts +35 -35
  357. package/src/version-support.ts +50 -50
  358. package/src/wallet-recovery.ts +252 -0
  359. package/src/webrtc/audioContext.ts +44 -44
  360. package/src/webrtc/callEventTypes.ts +101 -101
  361. package/src/webrtc/stats/callFeedStatsReporter.ts +91 -91
  362. package/src/webrtc/stats/callStatsReportGatherer.ts +219 -219
  363. package/src/webrtc/stats/callStatsReportSummary.ts +30 -30
  364. package/src/webrtc/stats/connectionStats.ts +47 -47
  365. package/src/webrtc/stats/connectionStatsBuilder.ts +28 -28
  366. package/src/webrtc/stats/connectionStatsReportBuilder.ts +140 -140
  367. package/src/webrtc/stats/groupCallStats.ts +93 -93
  368. package/src/webrtc/stats/media/mediaSsrcHandler.ts +57 -57
  369. package/src/webrtc/stats/media/mediaTrackHandler.ts +70 -70
  370. package/src/webrtc/stats/media/mediaTrackStats.ts +176 -176
  371. package/src/webrtc/stats/media/mediaTrackStatsHandler.ts +90 -90
  372. package/src/webrtc/stats/statsReport.ts +133 -133
  373. package/src/webrtc/stats/statsReportEmitter.ts +49 -49
  374. package/src/webrtc/stats/trackStatsBuilder.ts +207 -207
  375. package/src/webrtc/stats/transportStats.ts +26 -26
  376. package/src/webrtc/stats/transportStatsBuilder.ts +48 -48
  377. package/src/webrtc/stats/valueFormatter.ts +27 -27
  378. package/src/xrpl/identity.ts +245 -0
  379. package/src/xrpl/trust.ts +64 -0
  380. package/src/xrpl/verification.ts +284 -0
@@ -1,120 +1,120 @@
1
- /*
2
- Copyright 2025 The Matrix.org Foundation C.I.C.
3
-
4
- Licensed under the Apache License, Version 2.0 (the "License");
5
- you may not use this file except in compliance with the License.
6
- You may obtain a copy of the License at
7
-
8
- http://www.apache.org/licenses/LICENSE-2.0
9
-
10
- Unless required by applicable law or agreed to in writing, software
11
- distributed under the License is distributed on an "AS IS" BASIS,
12
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
- See the License for the specific language governing permissions and
14
- limitations under the License.
15
- */
16
-
17
- import type { CallMembership } from "./CallMembership.ts";
18
- import type { RTCCallIntent, Status, Transport } from "./types.ts";
19
- import { type TypedEventEmitter } from "../models/typed-event-emitter.ts";
20
-
21
- export enum MembershipManagerEvent {
22
- StatusChanged = "StatusChanged",
23
- /**
24
- * Emitted when the membership manager has not heard back from the server for the duration
25
- * of the delayed event and hence failed to restart the delayed event.
26
- * This means that the user is probably not joined anymore and the leave event was distributed to other session members.
27
- */
28
- ProbablyLeft = "ProbablyLeft",
29
- /**
30
- * Once the membershipManger has aquired the a delay id (after sending the state event)
31
- * It will emit and share the delay id.
32
- */
33
- DelayIdChanged = "DelayIdChanged",
34
- }
35
-
36
- export type MembershipManagerEventHandlerMap = {
37
- [MembershipManagerEvent.StatusChanged]: (prefStatus: Status, newStatus: Status) => void;
38
- [MembershipManagerEvent.ProbablyLeft]: (probablyLeft: boolean) => void;
39
- [MembershipManagerEvent.DelayIdChanged]: (delayId: string | undefined) => void;
40
- };
41
-
42
- /**
43
- * This interface defines what a MembershipManager uses and exposes.
44
- * This interface is what we use to write tests and allows changing the actual implementation
45
- * without breaking tests because of some internal method renaming.
46
- *
47
- * @internal
48
- */
49
- export interface IMembershipManager extends TypedEventEmitter<
50
- MembershipManagerEvent,
51
- MembershipManagerEventHandlerMap
52
- > {
53
- /**
54
- * If we are trying to join, or have successfully joined the session.
55
- * It does not reflect if the room state is already configured to represent us being joined.
56
- * It only means that the Manager should be trying to connect or to disconnect running.
57
- * The Manager is still running right after isJoined becomes false to send the disconnect events.
58
- * @returns true if we intend to be participating in the MatrixRTC session
59
- * @deprecated This name is confusing and replaced by `isActivated()`. (Returns the same as `isActivated()`)
60
- */
61
- isJoined(): boolean;
62
- /**
63
- * If the manager is activated. This means it tries to do its job to join the call, resend state events...
64
- * It does not imply that the room state is already configured to represent being joined.
65
- * It means that the Manager tries to connect or is connected. ("the manager is still active")
66
- * Once `leave()` is called the manager is not activated anymore but still running until `leave()` resolves.
67
- * @returns `true` if we intend to be participating in the MatrixRTC session
68
- */
69
- isActivated(): boolean;
70
- /**
71
- * Get the actual connection status of the manager.
72
- */
73
- get status(): Status;
74
-
75
- /**
76
- * The Current own state event if the manger is connected.
77
- * `undefined` if not connected.
78
- */
79
- get ownMembership(): CallMembership | undefined;
80
-
81
- /**
82
- * If the membership manager has reason to believe that the hs sent a leave event
83
- * and as a consequence the current user is perceived as left for other session participants.
84
- */
85
- get probablyLeft(): boolean;
86
-
87
- /**
88
- * If the membership manager has reason to believe that the hs sent a leave event
89
- * and as a consequence the current user is perceived as left for other session participants.
90
- */
91
- get delayId(): string | undefined;
92
-
93
- /**
94
- * Start sending all necessary events to make this user participate in the RTC session.
95
- * @param fociPreferred the list of preferred foci to use in the joined RTC membership event.
96
- * If multiSfuFocus is set, this is only needed if this client wants to publish to multiple transports simultaneously.
97
- * @param multiSfuFocus the active focus to use in the joined RTC membership event. Setting this implies the
98
- * membership manager will operate in a multi-SFU connection mode. If `undefined`, an `oldest_membership`
99
- * transport selection will be used instead.
100
- * @throws can throw if it exceeds a configured maximum retry.
101
- */
102
- join(fociPreferred: Transport[], multiSfuFocus?: Transport, onError?: (error: unknown) => void): void;
103
- /**
104
- * Send all necessary events to make this user leave the RTC session.
105
- * @param timeout the maximum duration in ms until the promise is forced to resolve.
106
- * @returns It resolves with true in case the leave was sent successfully.
107
- * It resolves with false in case we hit the timeout before sending successfully.
108
- */
109
- leave(timeout?: number): Promise<boolean>;
110
- /**
111
- * Call this if the MatrixRTC session members have changed.
112
- */
113
- onRTCSessionMemberUpdate(memberships: CallMembership[]): Promise<void>;
114
-
115
- /**
116
- * Update the intent of a membership on the call (e.g. user is now providing a video feed)
117
- * @param callIntent The new intent to set.
118
- */
119
- updateCallIntent(callIntent: RTCCallIntent): Promise<void>;
120
- }
1
+ /*
2
+ Copyright 2025 The Matrix.org Foundation C.I.C.
3
+
4
+ Licensed under the Apache License, Version 2.0 (the "License");
5
+ you may not use this file except in compliance with the License.
6
+ You may obtain a copy of the License at
7
+
8
+ http://www.apache.org/licenses/LICENSE-2.0
9
+
10
+ Unless required by applicable law or agreed to in writing, software
11
+ distributed under the License is distributed on an "AS IS" BASIS,
12
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ See the License for the specific language governing permissions and
14
+ limitations under the License.
15
+ */
16
+
17
+ import type { CallMembership } from "./CallMembership.ts";
18
+ import type { RTCCallIntent, Status, Transport } from "./types.ts";
19
+ import { type TypedEventEmitter } from "../models/typed-event-emitter.ts";
20
+
21
+ export enum MembershipManagerEvent {
22
+ StatusChanged = "StatusChanged",
23
+ /**
24
+ * Emitted when the membership manager has not heard back from the server for the duration
25
+ * of the delayed event and hence failed to restart the delayed event.
26
+ * This means that the user is probably not joined anymore and the leave event was distributed to other session members.
27
+ */
28
+ ProbablyLeft = "ProbablyLeft",
29
+ /**
30
+ * Once the membershipManger has aquired the a delay id (after sending the state event)
31
+ * It will emit and share the delay id.
32
+ */
33
+ DelayIdChanged = "DelayIdChanged",
34
+ }
35
+
36
+ export type MembershipManagerEventHandlerMap = {
37
+ [MembershipManagerEvent.StatusChanged]: (prefStatus: Status, newStatus: Status) => void;
38
+ [MembershipManagerEvent.ProbablyLeft]: (probablyLeft: boolean) => void;
39
+ [MembershipManagerEvent.DelayIdChanged]: (delayId: string | undefined) => void;
40
+ };
41
+
42
+ /**
43
+ * This interface defines what a MembershipManager uses and exposes.
44
+ * This interface is what we use to write tests and allows changing the actual implementation
45
+ * without breaking tests because of some internal method renaming.
46
+ *
47
+ * @internal
48
+ */
49
+ export interface IMembershipManager extends TypedEventEmitter<
50
+ MembershipManagerEvent,
51
+ MembershipManagerEventHandlerMap
52
+ > {
53
+ /**
54
+ * If we are trying to join, or have successfully joined the session.
55
+ * It does not reflect if the room state is already configured to represent us being joined.
56
+ * It only means that the Manager should be trying to connect or to disconnect running.
57
+ * The Manager is still running right after isJoined becomes false to send the disconnect events.
58
+ * @returns true if we intend to be participating in the MatrixRTC session
59
+ * @deprecated This name is confusing and replaced by `isActivated()`. (Returns the same as `isActivated()`)
60
+ */
61
+ isJoined(): boolean;
62
+ /**
63
+ * If the manager is activated. This means it tries to do its job to join the call, resend state events...
64
+ * It does not imply that the room state is already configured to represent being joined.
65
+ * It means that the Manager tries to connect or is connected. ("the manager is still active")
66
+ * Once `leave()` is called the manager is not activated anymore but still running until `leave()` resolves.
67
+ * @returns `true` if we intend to be participating in the MatrixRTC session
68
+ */
69
+ isActivated(): boolean;
70
+ /**
71
+ * Get the actual connection status of the manager.
72
+ */
73
+ get status(): Status;
74
+
75
+ /**
76
+ * The Current own state event if the manger is connected.
77
+ * `undefined` if not connected.
78
+ */
79
+ get ownMembership(): CallMembership | undefined;
80
+
81
+ /**
82
+ * If the membership manager has reason to believe that the hs sent a leave event
83
+ * and as a consequence the current user is perceived as left for other session participants.
84
+ */
85
+ get probablyLeft(): boolean;
86
+
87
+ /**
88
+ * If the membership manager has reason to believe that the hs sent a leave event
89
+ * and as a consequence the current user is perceived as left for other session participants.
90
+ */
91
+ get delayId(): string | undefined;
92
+
93
+ /**
94
+ * Start sending all necessary events to make this user participate in the RTC session.
95
+ * @param fociPreferred the list of preferred foci to use in the joined RTC membership event.
96
+ * If multiSfuFocus is set, this is only needed if this client wants to publish to multiple transports simultaneously.
97
+ * @param multiSfuFocus the active focus to use in the joined RTC membership event. Setting this implies the
98
+ * membership manager will operate in a multi-SFU connection mode. If `undefined`, an `oldest_membership`
99
+ * transport selection will be used instead.
100
+ * @throws can throw if it exceeds a configured maximum retry.
101
+ */
102
+ join(fociPreferred: Transport[], multiSfuFocus?: Transport, onError?: (error: unknown) => void): void;
103
+ /**
104
+ * Send all necessary events to make this user leave the RTC session.
105
+ * @param timeout the maximum duration in ms until the promise is forced to resolve.
106
+ * @returns It resolves with true in case the leave was sent successfully.
107
+ * It resolves with false in case we hit the timeout before sending successfully.
108
+ */
109
+ leave(timeout?: number): Promise<boolean>;
110
+ /**
111
+ * Call this if the MatrixRTC session members have changed.
112
+ */
113
+ onRTCSessionMemberUpdate(memberships: CallMembership[]): Promise<void>;
114
+
115
+ /**
116
+ * Update the intent of a membership on the call (e.g. user is now providing a video feed)
117
+ * @param callIntent The new intent to set.
118
+ */
119
+ updateCallIntent(callIntent: RTCCallIntent): Promise<void>;
120
+ }
@@ -1,46 +1,46 @@
1
- /*
2
- Copyright 2025 New Vector Ltd
3
-
4
- Licensed under the Apache License, Version 2.0 (the "License");
5
- you may not use this file except in compliance with the License.
6
- You may obtain a copy of the License at
7
-
8
- http://www.apache.org/licenses/LICENSE-2.0
9
-
10
- Unless required by applicable law or agreed to in writing, software
11
- distributed under the License is distributed on an "AS IS" BASIS,
12
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
- See the License for the specific language governing permissions and
14
- limitations under the License.
15
- */
16
-
17
- import { type Transport } from "./types.ts";
18
-
19
- export interface LivekitTransportConfig extends Transport {
20
- type: "livekit";
21
- livekit_service_url: string;
22
- }
23
-
24
- export const isLivekitTransportConfig = (object: any): object is LivekitTransportConfig =>
25
- object.type === "livekit" && "livekit_service_url" in object;
26
-
27
- export interface LivekitTransport extends LivekitTransportConfig {
28
- livekit_alias: string;
29
- }
30
-
31
- export const isLivekitTransport = (object: any): object is LivekitTransport =>
32
- isLivekitTransportConfig(object) && "livekit_alias" in object;
33
-
34
- /**
35
- * @deprecated, this is just needed for the old focus active / focus fields of a call membership.
36
- * Not needed for new implementations.
37
- */
38
- export interface LivekitFocusSelection extends Transport {
39
- type: "livekit";
40
- focus_selection: "oldest_membership" | "multi_sfu";
41
- }
42
- /**
43
- * @deprecated see LivekitFocusSelection
44
- */
45
- export const isLivekitFocusSelection = (object: any): object is LivekitFocusSelection =>
46
- object.type === "livekit" && "focus_selection" in object;
1
+ /*
2
+ Copyright 2025 New Vector Ltd
3
+
4
+ Licensed under the Apache License, Version 2.0 (the "License");
5
+ you may not use this file except in compliance with the License.
6
+ You may obtain a copy of the License at
7
+
8
+ http://www.apache.org/licenses/LICENSE-2.0
9
+
10
+ Unless required by applicable law or agreed to in writing, software
11
+ distributed under the License is distributed on an "AS IS" BASIS,
12
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ See the License for the specific language governing permissions and
14
+ limitations under the License.
15
+ */
16
+
17
+ import { type Transport } from "./types.ts";
18
+
19
+ export interface LivekitTransportConfig extends Transport {
20
+ type: "livekit";
21
+ livekit_service_url: string;
22
+ }
23
+
24
+ export const isLivekitTransportConfig = (object: any): object is LivekitTransportConfig =>
25
+ object.type === "livekit" && "livekit_service_url" in object;
26
+
27
+ export interface LivekitTransport extends LivekitTransportConfig {
28
+ livekit_alias: string;
29
+ }
30
+
31
+ export const isLivekitTransport = (object: any): object is LivekitTransport =>
32
+ isLivekitTransportConfig(object) && "livekit_alias" in object;
33
+
34
+ /**
35
+ * @deprecated, this is just needed for the old focus active / focus fields of a call membership.
36
+ * Not needed for new implementations.
37
+ */
38
+ export interface LivekitFocusSelection extends Transport {
39
+ type: "livekit";
40
+ focus_selection: "oldest_membership" | "multi_sfu";
41
+ }
42
+ /**
43
+ * @deprecated see LivekitFocusSelection
44
+ */
45
+ export const isLivekitFocusSelection = (object: any): object is LivekitFocusSelection =>
46
+ object.type === "livekit" && "focus_selection" in object;
@@ -1,24 +1,24 @@
1
- /*
2
- Copyright 2024 The Matrix.org Foundation C.I.C.
3
-
4
- Licensed under the Apache License, Version 2.0 (the "License");
5
- you may not use this file except in compliance with the License.
6
- You may obtain a copy of the License at
7
-
8
- http://www.apache.org/licenses/LICENSE-2.0
9
-
10
- Unless required by applicable law or agreed to in writing, software
11
- distributed under the License is distributed on an "AS IS" BASIS,
12
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
- See the License for the specific language governing permissions and
14
- limitations under the License.
15
- */
16
-
17
- export * from "./CallMembership.ts";
18
- export * from "./LivekitTransport.ts";
19
- export * from "./MatrixRTCSession.ts";
20
- export * from "./MatrixRTCSessionManager.ts";
21
- export type * from "./types.ts";
22
- export { type SessionMembershipData, type RtcMembershipData } from "./membershipData/index.ts";
23
- export { Status, parseCallNotificationContent, isMyMembership } from "./types.ts";
24
- export { MembershipManagerEvent } from "./IMembershipManager.ts";
1
+ /*
2
+ Copyright 2024 The Matrix.org Foundation C.I.C.
3
+
4
+ Licensed under the Apache License, Version 2.0 (the "License");
5
+ you may not use this file except in compliance with the License.
6
+ You may obtain a copy of the License at
7
+
8
+ http://www.apache.org/licenses/LICENSE-2.0
9
+
10
+ Unless required by applicable law or agreed to in writing, software
11
+ distributed under the License is distributed on an "AS IS" BASIS,
12
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ See the License for the specific language governing permissions and
14
+ limitations under the License.
15
+ */
16
+
17
+ export * from "./CallMembership.ts";
18
+ export * from "./LivekitTransport.ts";
19
+ export * from "./MatrixRTCSession.ts";
20
+ export * from "./MatrixRTCSessionManager.ts";
21
+ export type * from "./types.ts";
22
+ export { type SessionMembershipData, type RtcMembershipData } from "./membershipData/index.ts";
23
+ export { Status, parseCallNotificationContent, isMyMembership } from "./types.ts";
24
+ export { MembershipManagerEvent } from "./IMembershipManager.ts";
@@ -1,71 +1,71 @@
1
- /*
2
- Copyright 2025-2026 The Matrix.org Foundation C.I.C.
3
-
4
- Licensed under the Apache License, Version 2.0 (the "License");
5
- you may not use this file except in compliance with the License.
6
- You may obtain a copy of the License at
7
-
8
- http://www.apache.org/licenses/LICENSE-2.0
9
-
10
- Unless required by applicable law or agreed to in writing, software
11
- distributed under the License is distributed on an "AS IS" BASIS,
12
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
- See the License for the specific language governing permissions and
14
- limitations under the License.
15
- */
16
-
17
- import { getEncryptionKeyMapKey, type CallMembershipIdentityParts } from "./EncryptionManager.ts";
18
- import type { InboundEncryptionSession, EncryptionKeyMapKey, SlotDescription } from "./types.ts";
19
-
20
- /**
21
- * Detects when a key for a given index is outdated.
22
- */
23
- export class OutdatedKeyFilter {
24
- // Map of participantId -> keyIndex -> timestamp
25
- private tsBuffer: Map<EncryptionKeyMapKey, Map<number, number>> = new Map();
26
-
27
- public constructor() {}
28
-
29
- /**
30
- * Check if there is a recent key with the same keyId (index) and then use the creationTS to decide what to
31
- * do with the key. If the key received is older than the one already in the buffer, it is ignored.
32
- * @param participantId
33
- * @param item
34
- */
35
- public isOutdated(membership: CallMembershipIdentityParts, item: InboundEncryptionSession): boolean {
36
- const mapKey = getEncryptionKeyMapKey(membership);
37
- if (!this.tsBuffer.has(mapKey)) {
38
- this.tsBuffer.set(mapKey, new Map<number, number>());
39
- }
40
-
41
- const latestTimestamp = this.tsBuffer.get(mapKey)?.get(item.keyIndex);
42
- if (latestTimestamp && latestTimestamp > item.creationTS) {
43
- // The existing key is more recent, ignore this one
44
- return true;
45
- }
46
- this.tsBuffer.get(mapKey)!.set(item.keyIndex, item.creationTS);
47
- return false;
48
- }
49
- }
50
-
51
- /**
52
- * Converts a slot ID into it's component application and ID portions.
53
- * @param slotId e.g. `m.call#call_id`
54
- * @throws If the format of `slotId` is invalid.
55
- */
56
- export function slotIdToDescription(slotId: string): SlotDescription {
57
- const [application, id, ...unexpectedAdditionalValues] = slotId.split("#");
58
- if (unexpectedAdditionalValues.length) {
59
- throw Error(
60
- "MatrixRTC Slot IDs *must* only contain two components seperated by one '#'. Additional '#' characters detected.",
61
- );
62
- }
63
- return { application, id };
64
- }
65
-
66
- /**
67
- * Converts a SlotDescription into it's slot ID format.
68
- */
69
- export function computeSlotId(slotDescription: SlotDescription): string {
70
- return `${slotDescription.application}#${slotDescription.id}`;
71
- }
1
+ /*
2
+ Copyright 2025-2026 The Matrix.org Foundation C.I.C.
3
+
4
+ Licensed under the Apache License, Version 2.0 (the "License");
5
+ you may not use this file except in compliance with the License.
6
+ You may obtain a copy of the License at
7
+
8
+ http://www.apache.org/licenses/LICENSE-2.0
9
+
10
+ Unless required by applicable law or agreed to in writing, software
11
+ distributed under the License is distributed on an "AS IS" BASIS,
12
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ See the License for the specific language governing permissions and
14
+ limitations under the License.
15
+ */
16
+
17
+ import { getEncryptionKeyMapKey, type CallMembershipIdentityParts } from "./EncryptionManager.ts";
18
+ import type { InboundEncryptionSession, EncryptionKeyMapKey, SlotDescription } from "./types.ts";
19
+
20
+ /**
21
+ * Detects when a key for a given index is outdated.
22
+ */
23
+ export class OutdatedKeyFilter {
24
+ // Map of participantId -> keyIndex -> timestamp
25
+ private tsBuffer: Map<EncryptionKeyMapKey, Map<number, number>> = new Map();
26
+
27
+ public constructor() {}
28
+
29
+ /**
30
+ * Check if there is a recent key with the same keyId (index) and then use the creationTS to decide what to
31
+ * do with the key. If the key received is older than the one already in the buffer, it is ignored.
32
+ * @param participantId
33
+ * @param item
34
+ */
35
+ public isOutdated(membership: CallMembershipIdentityParts, item: InboundEncryptionSession): boolean {
36
+ const mapKey = getEncryptionKeyMapKey(membership);
37
+ if (!this.tsBuffer.has(mapKey)) {
38
+ this.tsBuffer.set(mapKey, new Map<number, number>());
39
+ }
40
+
41
+ const latestTimestamp = this.tsBuffer.get(mapKey)?.get(item.keyIndex);
42
+ if (latestTimestamp && latestTimestamp > item.creationTS) {
43
+ // The existing key is more recent, ignore this one
44
+ return true;
45
+ }
46
+ this.tsBuffer.get(mapKey)!.set(item.keyIndex, item.creationTS);
47
+ return false;
48
+ }
49
+ }
50
+
51
+ /**
52
+ * Converts a slot ID into it's component application and ID portions.
53
+ * @param slotId e.g. `m.call#call_id`
54
+ * @throws If the format of `slotId` is invalid.
55
+ */
56
+ export function slotIdToDescription(slotId: string): SlotDescription {
57
+ const [application, id, ...unexpectedAdditionalValues] = slotId.split("#");
58
+ if (unexpectedAdditionalValues.length) {
59
+ throw Error(
60
+ "MatrixRTC Slot IDs *must* only contain two components seperated by one '#'. Additional '#' characters detected.",
61
+ );
62
+ }
63
+ return { application, id };
64
+ }
65
+
66
+ /**
67
+ * Converts a SlotDescription into it's slot ID format.
68
+ */
69
+ export function computeSlotId(slotDescription: SlotDescription): string {
70
+ return `${slotDescription.application}#${slotDescription.id}`;
71
+ }
@@ -1,38 +1,38 @@
1
- /*
2
- Copyright 2022 The Matrix.org Foundation C.I.C.
3
-
4
- Licensed under the Apache License, Version 2.0 (the "License");
5
- you may not use this file except in compliance with the License.
6
- You may obtain a copy of the License at
7
-
8
- http://www.apache.org/licenses/LICENSE-2.0
9
-
10
- Unless required by applicable law or agreed to in writing, software
11
- distributed under the License is distributed on an "AS IS" BASIS,
12
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
- See the License for the specific language governing permissions and
14
- limitations under the License.
15
- */
16
-
17
- export type ToDevicePayload = Record<string, any>;
18
-
19
- export interface ToDeviceMessage {
20
- userId: string;
21
- deviceId: string;
22
- payload: ToDevicePayload;
23
- }
24
-
25
- export interface ToDeviceBatch {
26
- eventType: string;
27
- batch: ToDeviceMessage[];
28
- }
29
-
30
- // Only used internally
31
- export interface ToDeviceBatchWithTxnId extends ToDeviceBatch {
32
- txnId: string;
33
- }
34
-
35
- // Only used internally
36
- export interface IndexedToDeviceBatch extends ToDeviceBatchWithTxnId {
37
- id: number;
38
- }
1
+ /*
2
+ Copyright 2022 The Matrix.org Foundation C.I.C.
3
+
4
+ Licensed under the Apache License, Version 2.0 (the "License");
5
+ you may not use this file except in compliance with the License.
6
+ You may obtain a copy of the License at
7
+
8
+ http://www.apache.org/licenses/LICENSE-2.0
9
+
10
+ Unless required by applicable law or agreed to in writing, software
11
+ distributed under the License is distributed on an "AS IS" BASIS,
12
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ See the License for the specific language governing permissions and
14
+ limitations under the License.
15
+ */
16
+
17
+ export type ToDevicePayload = Record<string, any>;
18
+
19
+ export interface ToDeviceMessage {
20
+ userId: string;
21
+ deviceId: string;
22
+ payload: ToDevicePayload;
23
+ }
24
+
25
+ export interface ToDeviceBatch {
26
+ eventType: string;
27
+ batch: ToDeviceMessage[];
28
+ }
29
+
30
+ // Only used internally
31
+ export interface ToDeviceBatchWithTxnId extends ToDeviceBatch {
32
+ txnId: string;
33
+ }
34
+
35
+ // Only used internally
36
+ export interface IndexedToDeviceBatch extends ToDeviceBatchWithTxnId {
37
+ id: number;
38
+ }