@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,50 +1,50 @@
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
- /**
18
- * A list of the spec versions which the js-sdk is compatible with.
19
- *
20
- * In practice, this means: when we connect to a server, it must declare support for one of the versions in this list.
21
- *
22
- * Note that it does not *necessarily* mean that the js-sdk has good support for all the features in the listed spec
23
- * versions; only that we should be able to provide a base level of functionality with a server that offers support for
24
- * any of the listed versions.
25
- */
26
- export const SUPPORTED_MATRIX_VERSIONS = [
27
- "v1.1",
28
- "v1.2",
29
- "v1.3",
30
- "v1.4",
31
- "v1.5",
32
- "v1.6",
33
- "v1.7",
34
- "v1.8",
35
- "v1.9",
36
- "v1.10",
37
- "v1.11",
38
- "v1.12",
39
- "v1.13",
40
- ];
41
-
42
- /**
43
- * The oldest Matrix specification version the js-sdk supports.
44
- */
45
- export const MINIMUM_MATRIX_VERSION = SUPPORTED_MATRIX_VERSIONS[0];
46
-
47
- /**
48
- * The most recent Matrix specification version the js-sdk supports.
49
- */
50
- export const MAXIMUM_MATRIX_VERSION = SUPPORTED_MATRIX_VERSIONS[SUPPORTED_MATRIX_VERSIONS.length - 1];
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
+ /**
18
+ * A list of the spec versions which the js-sdk is compatible with.
19
+ *
20
+ * In practice, this means: when we connect to a server, it must declare support for one of the versions in this list.
21
+ *
22
+ * Note that it does not *necessarily* mean that the js-sdk has good support for all the features in the listed spec
23
+ * versions; only that we should be able to provide a base level of functionality with a server that offers support for
24
+ * any of the listed versions.
25
+ */
26
+ export const SUPPORTED_MATRIX_VERSIONS = [
27
+ "v1.1",
28
+ "v1.2",
29
+ "v1.3",
30
+ "v1.4",
31
+ "v1.5",
32
+ "v1.6",
33
+ "v1.7",
34
+ "v1.8",
35
+ "v1.9",
36
+ "v1.10",
37
+ "v1.11",
38
+ "v1.12",
39
+ "v1.13",
40
+ ];
41
+
42
+ /**
43
+ * The oldest Matrix specification version the js-sdk supports.
44
+ */
45
+ export const MINIMUM_MATRIX_VERSION = SUPPORTED_MATRIX_VERSIONS[0];
46
+
47
+ /**
48
+ * The most recent Matrix specification version the js-sdk supports.
49
+ */
50
+ export const MAXIMUM_MATRIX_VERSION = SUPPORTED_MATRIX_VERSIONS[SUPPORTED_MATRIX_VERSIONS.length - 1];
@@ -0,0 +1,252 @@
1
+ /*
2
+ Copyright 2026 TextRP
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 WalletE2eeRecoveryEnvelope, type WalletRecoveryWrap } from "./@types/auth.ts";
18
+
19
+ const ENVELOPE_VERSION = 1;
20
+ const KEY_BYTES = 32;
21
+ const NONCE_BYTES = 12;
22
+ const SALT_BYTES = 16;
23
+ const PASSWORD_KDF_ITERATIONS = 210_000;
24
+
25
+ export interface CreateDualWrapEnvelopeParams {
26
+ chainId: string;
27
+ accountId: string;
28
+ backupPassword: string;
29
+ walletWrapKey: Uint8Array;
30
+ createdAtMs?: number;
31
+ keyId?: string;
32
+ recoveryKey?: Uint8Array;
33
+ }
34
+
35
+ export interface UnwrapWithWalletParams {
36
+ envelope: WalletE2eeRecoveryEnvelope;
37
+ walletWrapKey: Uint8Array;
38
+ }
39
+
40
+ export interface UnwrapWithPasswordParams {
41
+ envelope: WalletE2eeRecoveryEnvelope;
42
+ backupPassword: string;
43
+ }
44
+
45
+ function assert(condition: boolean, message: string): asserts condition {
46
+ if (!condition) throw new Error(message);
47
+ }
48
+
49
+ function toBase64(bytes: Uint8Array): string {
50
+ if (typeof Buffer !== "undefined") return Buffer.from(bytes).toString("base64");
51
+ let binary = "";
52
+ bytes.forEach((b) => (binary += String.fromCodePoint(b)));
53
+ return btoa(binary);
54
+ }
55
+
56
+ function fromBase64(value: string): Uint8Array {
57
+ if (typeof Buffer !== "undefined") return new Uint8Array(Buffer.from(value, "base64"));
58
+ const binary = atob(value);
59
+ const out = new Uint8Array(binary.length);
60
+ for (let i = 0; i < binary.length; i++) out[i] = binary.codePointAt(i)!;
61
+ return out;
62
+ }
63
+
64
+ function toUtf8(value: string): Uint8Array {
65
+ return new TextEncoder().encode(value);
66
+ }
67
+
68
+ function toArrayBuffer(value: Uint8Array): ArrayBuffer {
69
+ return value.buffer.slice(value.byteOffset, value.byteOffset + value.byteLength) as ArrayBuffer;
70
+ }
71
+
72
+ function randomBytes(len: number): Uint8Array {
73
+ const out = new Uint8Array(len);
74
+ globalThis.crypto.getRandomValues(out);
75
+ return out;
76
+ }
77
+
78
+ async function importAesGcmKey(key: Uint8Array): Promise<CryptoKey> {
79
+ return await globalThis.crypto.subtle.importKey(
80
+ "raw",
81
+ toArrayBuffer(key),
82
+ { name: "AES-GCM" },
83
+ false,
84
+ ["encrypt", "decrypt"],
85
+ );
86
+ }
87
+
88
+ async function encryptWrap(
89
+ plaintext: Uint8Array,
90
+ {
91
+ key,
92
+ aad,
93
+ kdf,
94
+ params,
95
+ }: {
96
+ key: Uint8Array;
97
+ aad: Uint8Array;
98
+ kdf: string;
99
+ params?: Record<string, unknown>;
100
+ },
101
+ ): Promise<WalletRecoveryWrap> {
102
+ assert(key.length >= KEY_BYTES, "wallet recovery key must be at least 32 bytes");
103
+ const salt = randomBytes(SALT_BYTES);
104
+ const nonce = randomBytes(NONCE_BYTES);
105
+ const cryptoKey = await importAesGcmKey(key.slice(0, KEY_BYTES));
106
+ const ciphertext = await globalThis.crypto.subtle.encrypt(
107
+ {
108
+ name: "AES-GCM",
109
+ iv: toArrayBuffer(nonce),
110
+ additionalData: toArrayBuffer(aad),
111
+ tagLength: 128,
112
+ },
113
+ cryptoKey,
114
+ toArrayBuffer(plaintext),
115
+ );
116
+ return {
117
+ alg: "aes-256-gcm",
118
+ kdf,
119
+ salt: toBase64(salt),
120
+ nonce: toBase64(nonce),
121
+ ciphertext: toBase64(new Uint8Array(ciphertext)),
122
+ aad: toBase64(aad),
123
+ params,
124
+ };
125
+ }
126
+
127
+ async function decryptWrap(wrap: WalletRecoveryWrap, key: Uint8Array): Promise<Uint8Array> {
128
+ const nonce = fromBase64(wrap.nonce);
129
+ const aad = wrap.aad ? fromBase64(wrap.aad) : new Uint8Array();
130
+ const ciphertext = fromBase64(wrap.ciphertext);
131
+ const cryptoKey = await importAesGcmKey(key.slice(0, KEY_BYTES));
132
+ const plaintext = await globalThis.crypto.subtle.decrypt(
133
+ {
134
+ name: "AES-GCM",
135
+ iv: toArrayBuffer(nonce),
136
+ additionalData: toArrayBuffer(aad),
137
+ tagLength: 128,
138
+ },
139
+ cryptoKey,
140
+ toArrayBuffer(ciphertext),
141
+ );
142
+ return new Uint8Array(plaintext);
143
+ }
144
+
145
+ async function derivePasswordWrapKey(password: string, salt: Uint8Array): Promise<Uint8Array> {
146
+ const keyMaterial = await globalThis.crypto.subtle.importKey("raw", toArrayBuffer(toUtf8(password)), "PBKDF2", false, [
147
+ "deriveBits",
148
+ ]);
149
+ const bits = await globalThis.crypto.subtle.deriveBits(
150
+ {
151
+ name: "PBKDF2",
152
+ hash: "SHA-256",
153
+ salt: toArrayBuffer(salt),
154
+ iterations: PASSWORD_KDF_ITERATIONS,
155
+ },
156
+ keyMaterial,
157
+ KEY_BYTES * 8,
158
+ );
159
+ return new Uint8Array(bits);
160
+ }
161
+
162
+ export async function deriveWalletWrapKeyFromSecret(
163
+ walletSecret: string,
164
+ chainId: string,
165
+ accountId: string,
166
+ homeserver: string,
167
+ ): Promise<Uint8Array> {
168
+ const context = `briij-wallet-auth-wrap-v1:${homeserver}:${chainId}:${accountId}`;
169
+ const digest = await globalThis.crypto.subtle.digest(
170
+ "SHA-256",
171
+ toArrayBuffer(toUtf8(`${context}:${walletSecret}`)),
172
+ );
173
+ return new Uint8Array(digest);
174
+ }
175
+
176
+ export function validateRecoveryEnvelopeShape(
177
+ value: unknown,
178
+ ): asserts value is WalletE2eeRecoveryEnvelope {
179
+ assert(!!value && typeof value === "object", "recovery envelope must be an object");
180
+ const envelope = value as WalletE2eeRecoveryEnvelope;
181
+ assert(typeof envelope.envelope_version === "number", "envelope_version must be a number");
182
+ assert(typeof envelope.chain_id === "string" && envelope.chain_id.length > 0, "chain_id is required");
183
+ assert(typeof envelope.account_id === "string" && envelope.account_id.length > 0, "account_id is required");
184
+ assert(typeof envelope.created_at_ms === "number", "created_at_ms must be a number");
185
+ assert(typeof envelope.key_id === "string" && envelope.key_id.length > 0, "key_id is required");
186
+ assert(!!envelope.wallet_wrap && typeof envelope.wallet_wrap === "object", "wallet_wrap is required");
187
+ assert(!!envelope.password_wrap && typeof envelope.password_wrap === "object", "password_wrap is required");
188
+ for (const wrap of [envelope.wallet_wrap, envelope.password_wrap]) {
189
+ assert(typeof wrap.alg === "string" && wrap.alg.length > 0, "wrap.alg is required");
190
+ assert(typeof wrap.kdf === "string" && wrap.kdf.length > 0, "wrap.kdf is required");
191
+ assert(typeof wrap.salt === "string" && wrap.salt.length > 0, "wrap.salt is required");
192
+ assert(typeof wrap.nonce === "string" && wrap.nonce.length > 0, "wrap.nonce is required");
193
+ assert(typeof wrap.ciphertext === "string" && wrap.ciphertext.length > 0, "wrap.ciphertext is required");
194
+ }
195
+ }
196
+
197
+ export async function createDualWrapEnvelope(params: CreateDualWrapEnvelopeParams): Promise<WalletE2eeRecoveryEnvelope> {
198
+ assert(params.chainId.length > 0, "chainId is required");
199
+ assert(params.accountId.length > 0, "accountId is required");
200
+ assert(params.backupPassword.length > 0, "backupPassword is required");
201
+ assert(params.walletWrapKey.length >= KEY_BYTES, "walletWrapKey must be at least 32 bytes");
202
+
203
+ const createdAtMs = params.createdAtMs ?? Date.now();
204
+ const keyId = params.keyId ?? `k-${toBase64(randomBytes(8)).replace(/=+$/g, "")}`;
205
+ const recoveryKey = params.recoveryKey ?? randomBytes(KEY_BYTES);
206
+ assert(recoveryKey.length === KEY_BYTES, "recoveryKey must be 32 bytes");
207
+
208
+ const aad = toUtf8(`briij-recovery-envelope-v1:${params.chainId}:${params.accountId}:${keyId}:${createdAtMs}`);
209
+ const walletWrap = await encryptWrap(recoveryKey, {
210
+ key: params.walletWrapKey,
211
+ aad,
212
+ kdf: "sha256-context-v1",
213
+ });
214
+
215
+ const passwordSalt = randomBytes(SALT_BYTES);
216
+ const passwordWrapKey = await derivePasswordWrapKey(params.backupPassword, passwordSalt);
217
+ const passwordWrap = await encryptWrap(recoveryKey, {
218
+ key: passwordWrapKey,
219
+ aad,
220
+ kdf: "pbkdf2-sha256-v1",
221
+ params: {
222
+ iterations: PASSWORD_KDF_ITERATIONS,
223
+ hash: "SHA-256",
224
+ },
225
+ });
226
+ passwordWrap.salt = toBase64(passwordSalt);
227
+
228
+ return {
229
+ envelope_version: ENVELOPE_VERSION,
230
+ chain_id: params.chainId,
231
+ account_id: params.accountId,
232
+ created_at_ms: createdAtMs,
233
+ key_id: keyId,
234
+ wallet_wrap: walletWrap,
235
+ password_wrap: passwordWrap,
236
+ };
237
+ }
238
+
239
+ export async function unwrapWithWallet({ envelope, walletWrapKey }: UnwrapWithWalletParams): Promise<Uint8Array> {
240
+ validateRecoveryEnvelopeShape(envelope);
241
+ return await decryptWrap(envelope.wallet_wrap, walletWrapKey);
242
+ }
243
+
244
+ export async function unwrapWithPassword({
245
+ envelope,
246
+ backupPassword,
247
+ }: UnwrapWithPasswordParams): Promise<Uint8Array> {
248
+ validateRecoveryEnvelopeShape(envelope);
249
+ const passwordSalt = fromBase64(envelope.password_wrap.salt);
250
+ const passwordWrapKey = await derivePasswordWrapKey(backupPassword, passwordSalt);
251
+ return await decryptWrap(envelope.password_wrap, passwordWrapKey);
252
+ }
@@ -1,44 +1,44 @@
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
- let audioContext: AudioContext | null = null;
18
- let refCount = 0;
19
-
20
- /**
21
- * Acquires a reference to the shared AudioContext.
22
- * It's highly recommended to reuse this AudioContext rather than creating your
23
- * own, because multiple AudioContexts can be problematic in some browsers.
24
- * Make sure to call releaseContext when you're done using it.
25
- * @returns The shared AudioContext
26
- */
27
- export const acquireContext = (): AudioContext => {
28
- if (audioContext === null) audioContext = new AudioContext();
29
- refCount++;
30
- return audioContext;
31
- };
32
-
33
- /**
34
- * Signals that one of the references to the shared AudioContext has been
35
- * released, allowing the context and associated hardware resources to be
36
- * cleaned up if nothing else is using it.
37
- */
38
- export const releaseContext = (): void => {
39
- refCount--;
40
- if (refCount === 0) {
41
- audioContext?.close();
42
- audioContext = null;
43
- }
44
- };
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
+ let audioContext: AudioContext | null = null;
18
+ let refCount = 0;
19
+
20
+ /**
21
+ * Acquires a reference to the shared AudioContext.
22
+ * It's highly recommended to reuse this AudioContext rather than creating your
23
+ * own, because multiple AudioContexts can be problematic in some browsers.
24
+ * Make sure to call releaseContext when you're done using it.
25
+ * @returns The shared AudioContext
26
+ */
27
+ export const acquireContext = (): AudioContext => {
28
+ if (audioContext === null) audioContext = new AudioContext();
29
+ refCount++;
30
+ return audioContext;
31
+ };
32
+
33
+ /**
34
+ * Signals that one of the references to the shared AudioContext has been
35
+ * released, allowing the context and associated hardware resources to be
36
+ * cleaned up if nothing else is using it.
37
+ */
38
+ export const releaseContext = (): void => {
39
+ refCount--;
40
+ if (refCount === 0) {
41
+ audioContext?.close();
42
+ audioContext = null;
43
+ }
44
+ };
@@ -1,101 +1,101 @@
1
- // allow non-camelcase as these are events type that go onto the wire
2
- /* eslint-disable camelcase */
3
-
4
- import { type CallErrorCode } from "./call.ts";
5
- import { NamespacedValue } from "../NamespacedValue.ts";
6
-
7
- export const SDPStreamMetadataKey = new NamespacedValue(
8
- "sdp_stream_metadata",
9
- "org.matrix.msc3077.sdp_stream_metadata",
10
- );
11
-
12
- export enum SDPStreamMetadataPurpose {
13
- Usermedia = "m.usermedia",
14
- Screenshare = "m.screenshare",
15
- }
16
-
17
- export interface SDPStreamMetadataObject {
18
- purpose: SDPStreamMetadataPurpose;
19
- audio_muted: boolean;
20
- video_muted: boolean;
21
- }
22
-
23
- export interface SDPStreamMetadata {
24
- [key: string]: SDPStreamMetadataObject;
25
- }
26
-
27
- export interface CallCapabilities {
28
- "m.call.transferee": boolean;
29
- "m.call.dtmf": boolean;
30
- }
31
-
32
- export interface CallReplacesTarget {
33
- id: string;
34
- display_name: string;
35
- avatar_url: string;
36
- }
37
-
38
- export interface MCallBase {
39
- call_id: string;
40
- conf_id?: string;
41
- version: string | number;
42
- party_id?: string;
43
- sender_session_id?: string;
44
- dest_session_id?: string;
45
- }
46
-
47
- type Description = Pick<RTCSessionDescription, "type" | "sdp">;
48
-
49
- export interface MCallAnswer extends MCallBase {
50
- "answer": Description;
51
- "capabilities"?: CallCapabilities;
52
- "sdp_stream_metadata"?: SDPStreamMetadata;
53
- "org.matrix.msc3077.sdp_stream_metadata"?: SDPStreamMetadata;
54
- }
55
-
56
- export interface MCallSelectAnswer extends MCallBase {
57
- selected_party_id: string;
58
- }
59
-
60
- export interface MCallInviteNegotiate extends MCallBase {
61
- "offer": Description;
62
- "description": Description;
63
- "lifetime": number;
64
- "capabilities"?: CallCapabilities;
65
- "invitee"?: string;
66
- "sender_session_id"?: string;
67
- "dest_session_id"?: string;
68
- "sdp_stream_metadata"?: SDPStreamMetadata;
69
- "org.matrix.msc3077.sdp_stream_metadata"?: SDPStreamMetadata;
70
- }
71
-
72
- export interface MCallSDPStreamMetadataChanged extends MCallBase {
73
- "sdp_stream_metadata"?: SDPStreamMetadata;
74
- "org.matrix.msc3077.sdp_stream_metadata"?: SDPStreamMetadata;
75
- }
76
-
77
- export interface MCallReplacesEvent extends MCallBase {
78
- replacement_id: string;
79
- target_user: CallReplacesTarget;
80
- create_call: string;
81
- await_call: string;
82
- target_room: string;
83
- }
84
-
85
- export interface MCAllAssertedIdentity extends MCallBase {
86
- asserted_identity: {
87
- id: string;
88
- display_name: string;
89
- avatar_url: string;
90
- };
91
- }
92
-
93
- export interface MCallCandidates extends MCallBase {
94
- candidates: Omit<RTCIceCandidateInit, "usernameFragment">[];
95
- }
96
-
97
- export interface MCallHangupReject extends MCallBase {
98
- reason?: CallErrorCode;
99
- }
100
-
101
- /* eslint-enable camelcase */
1
+ // allow non-camelcase as these are events type that go onto the wire
2
+ /* eslint-disable camelcase */
3
+
4
+ import { type CallErrorCode } from "./call.ts";
5
+ import { NamespacedValue } from "../NamespacedValue.ts";
6
+
7
+ export const SDPStreamMetadataKey = new NamespacedValue(
8
+ "sdp_stream_metadata",
9
+ "org.matrix.msc3077.sdp_stream_metadata",
10
+ );
11
+
12
+ export enum SDPStreamMetadataPurpose {
13
+ Usermedia = "m.usermedia",
14
+ Screenshare = "m.screenshare",
15
+ }
16
+
17
+ export interface SDPStreamMetadataObject {
18
+ purpose: SDPStreamMetadataPurpose;
19
+ audio_muted: boolean;
20
+ video_muted: boolean;
21
+ }
22
+
23
+ export interface SDPStreamMetadata {
24
+ [key: string]: SDPStreamMetadataObject;
25
+ }
26
+
27
+ export interface CallCapabilities {
28
+ "m.call.transferee": boolean;
29
+ "m.call.dtmf": boolean;
30
+ }
31
+
32
+ export interface CallReplacesTarget {
33
+ id: string;
34
+ display_name: string;
35
+ avatar_url: string;
36
+ }
37
+
38
+ export interface MCallBase {
39
+ call_id: string;
40
+ conf_id?: string;
41
+ version: string | number;
42
+ party_id?: string;
43
+ sender_session_id?: string;
44
+ dest_session_id?: string;
45
+ }
46
+
47
+ type Description = Pick<RTCSessionDescription, "type" | "sdp">;
48
+
49
+ export interface MCallAnswer extends MCallBase {
50
+ "answer": Description;
51
+ "capabilities"?: CallCapabilities;
52
+ "sdp_stream_metadata"?: SDPStreamMetadata;
53
+ "org.matrix.msc3077.sdp_stream_metadata"?: SDPStreamMetadata;
54
+ }
55
+
56
+ export interface MCallSelectAnswer extends MCallBase {
57
+ selected_party_id: string;
58
+ }
59
+
60
+ export interface MCallInviteNegotiate extends MCallBase {
61
+ "offer": Description;
62
+ "description": Description;
63
+ "lifetime": number;
64
+ "capabilities"?: CallCapabilities;
65
+ "invitee"?: string;
66
+ "sender_session_id"?: string;
67
+ "dest_session_id"?: string;
68
+ "sdp_stream_metadata"?: SDPStreamMetadata;
69
+ "org.matrix.msc3077.sdp_stream_metadata"?: SDPStreamMetadata;
70
+ }
71
+
72
+ export interface MCallSDPStreamMetadataChanged extends MCallBase {
73
+ "sdp_stream_metadata"?: SDPStreamMetadata;
74
+ "org.matrix.msc3077.sdp_stream_metadata"?: SDPStreamMetadata;
75
+ }
76
+
77
+ export interface MCallReplacesEvent extends MCallBase {
78
+ replacement_id: string;
79
+ target_user: CallReplacesTarget;
80
+ create_call: string;
81
+ await_call: string;
82
+ target_room: string;
83
+ }
84
+
85
+ export interface MCAllAssertedIdentity extends MCallBase {
86
+ asserted_identity: {
87
+ id: string;
88
+ display_name: string;
89
+ avatar_url: string;
90
+ };
91
+ }
92
+
93
+ export interface MCallCandidates extends MCallBase {
94
+ candidates: Omit<RTCIceCandidateInit, "usernameFragment">[];
95
+ }
96
+
97
+ export interface MCallHangupReject extends MCallBase {
98
+ reason?: CallErrorCode;
99
+ }
100
+
101
+ /* eslint-enable camelcase */