@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,449 +1,508 @@
1
- /*
2
- Copyright 2020-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 { type EitherAnd } from "matrix-events-sdk";
18
-
19
- import { NamespacedValue, UnstableValue } from "../NamespacedValue.ts";
20
- import {
21
- type PolicyRuleEventContent,
22
- type RoomAvatarEventContent,
23
- type RoomCanonicalAliasEventContent,
24
- type RoomCreateEventContent,
25
- type RoomEncryptionEventContent,
26
- type RoomGuestAccessEventContent,
27
- type RoomHistoryVisibilityEventContent,
28
- type RoomJoinRulesEventContent,
29
- type RoomMemberEventContent,
30
- type RoomNameEventContent,
31
- type RoomPinnedEventsEventContent,
32
- type RoomPolicyContent,
33
- type RoomPowerLevelsEventContent,
34
- type RoomServerAclEventContent,
35
- type RoomThirdPartyInviteEventContent,
36
- type RoomTombstoneEventContent,
37
- type RoomTopicEventContent,
38
- type SpaceChildEventContent,
39
- type SpaceParentEventContent,
40
- } from "./state_events.ts";
41
- import { type IGroupCallRoomMemberState, type IGroupCallRoomState } from "../webrtc/groupCall.ts";
42
- import { type MSC3089EventContent } from "../models/MSC3089Branch.ts";
43
- import { type M_BEACON, type M_BEACON_INFO, type MBeaconEventContent, type MBeaconInfoEventContent } from "./beacon.ts";
44
- import { type EmptyObject } from "./common.ts";
45
- import { type ReactionEventContent, type RoomMessageEventContent, type StickerEventContent } from "./events.ts";
46
- import {
47
- type MCallAnswer,
48
- type MCallBase,
49
- type MCallCandidates,
50
- type MCallHangupReject,
51
- type MCallInviteNegotiate,
52
- type MCallReplacesEvent,
53
- type MCallSelectAnswer,
54
- type SDPStreamMetadata,
55
- } from "../webrtc/callEventTypes.ts";
56
- import {
57
- type IRTCNotificationContent,
58
- type IRTCDeclineContent,
59
- type EncryptionKeysEventContent,
60
- type ICallNotifyContent,
61
- } from "../matrixrtc/types.ts";
62
- import { type M_POLL_END, type M_POLL_START, type PollEndEventContent, type PollStartEventContent } from "./polls.ts";
63
- import { type RtcMembershipData, type SessionMembershipData } from "../matrixrtc/membershipData/index.ts";
64
- import { type LocalNotificationSettings } from "./local_notifications.ts";
65
- import { type IPushRules } from "./PushRules.ts";
66
- import { type SecretInfo, type SecretStorageKeyDescription } from "../secret-storage.ts";
67
- import { type POLICIES_ACCOUNT_EVENT_TYPE } from "../models/invites-ignorer-types.ts";
68
-
69
- export enum EventType {
70
- // Room state events
71
- RoomCanonicalAlias = "m.room.canonical_alias",
72
- RoomCreate = "m.room.create",
73
- RoomJoinRules = "m.room.join_rules",
74
- RoomMember = "m.room.member",
75
- RoomThirdPartyInvite = "m.room.third_party_invite",
76
- RoomPowerLevels = "m.room.power_levels",
77
- RoomName = "m.room.name",
78
- RoomTopic = "m.room.topic",
79
- RoomAvatar = "m.room.avatar",
80
- RoomPinnedEvents = "m.room.pinned_events",
81
- RoomEncryption = "m.room.encryption",
82
- RoomHistoryVisibility = "m.room.history_visibility",
83
- RoomGuestAccess = "m.room.guest_access",
84
- RoomServerAcl = "m.room.server_acl",
85
- RoomTombstone = "m.room.tombstone",
86
- RoomPredecessor = "org.matrix.msc3946.room_predecessor",
87
-
88
- // Moderation policy lists
89
- PolicyRuleUser = "m.policy.rule.user",
90
- PolicyRuleRoom = "m.policy.rule.room",
91
- PolicyRuleServer = "m.policy.rule.server",
92
-
93
- SpaceChild = "m.space.child",
94
- SpaceParent = "m.space.parent",
95
-
96
- // Room timeline events
97
- RoomRedaction = "m.room.redaction",
98
- RoomMessage = "m.room.message",
99
- RoomMessageEncrypted = "m.room.encrypted",
100
- Sticker = "m.sticker",
101
- CallInvite = "m.call.invite",
102
- CallCandidates = "m.call.candidates",
103
- CallAnswer = "m.call.answer",
104
- CallHangup = "m.call.hangup",
105
- CallReject = "m.call.reject",
106
- CallSelectAnswer = "m.call.select_answer",
107
- CallNegotiate = "m.call.negotiate",
108
- CallSDPStreamMetadataChanged = "m.call.sdp_stream_metadata_changed",
109
- CallSDPStreamMetadataChangedPrefix = "org.matrix.call.sdp_stream_metadata_changed",
110
- CallReplaces = "m.call.replaces",
111
- CallAssertedIdentity = "m.call.asserted_identity",
112
- CallAssertedIdentityPrefix = "org.matrix.call.asserted_identity",
113
- CallEncryptionKeysPrefix = "io.element.call.encryption_keys",
114
- KeyVerificationRequest = "m.key.verification.request",
115
- KeyVerificationStart = "m.key.verification.start",
116
- KeyVerificationCancel = "m.key.verification.cancel",
117
- KeyVerificationMac = "m.key.verification.mac",
118
- KeyVerificationDone = "m.key.verification.done",
119
- KeyVerificationKey = "m.key.verification.key",
120
- KeyVerificationAccept = "m.key.verification.accept",
121
- // Not used directly - see READY_TYPE in VerificationRequest.
122
- KeyVerificationReady = "m.key.verification.ready",
123
- // use of this is discouraged https://matrix.org/docs/spec/client_server/r0.6.1#m-room-message-feedback
124
- RoomMessageFeedback = "m.room.message.feedback",
125
- Reaction = "m.reaction",
126
- PollStart = "org.matrix.msc3381.poll.start",
127
-
128
- // Room ephemeral events
129
- Typing = "m.typing",
130
- Receipt = "m.receipt",
131
- Presence = "m.presence",
132
-
133
- // Room account_data events
134
- FullyRead = "m.fully_read",
135
- Tag = "m.tag",
136
- SpaceOrder = "org.matrix.msc3230.space_order", // MSC3230
137
- MarkedUnread = "m.marked_unread",
138
-
139
- // User account_data events
140
- PushRules = "m.push_rules",
141
- Direct = "m.direct",
142
- IgnoredUserList = "m.ignored_user_list",
143
- InvitePermissionConfig = "m.invite_permission_config", // MSC4380
144
-
145
- // to_device events
146
- RoomKey = "m.room_key",
147
- RoomKeyRequest = "m.room_key_request",
148
- ForwardedRoomKey = "m.forwarded_room_key",
149
- Dummy = "m.dummy",
150
- SecretRequest = "m.secret.request",
151
- SecretSend = "m.secret.send",
152
-
153
- // Group call events
154
- GroupCallPrefix = "org.matrix.msc3401.call",
155
- GroupCallMemberPrefix = "org.matrix.msc3401.call.member",
156
-
157
- // MatrixRTC events
158
- RTCMembership = "org.matrix.msc4143.rtc.member",
159
- CallNotify = "org.matrix.msc4075.call.notify",
160
- RTCNotification = "org.matrix.msc4075.rtc.notification",
161
- RTCDecline = "org.matrix.msc4310.rtc.decline",
162
-
163
- // Policy servers
164
- RoomPolicy = "org.matrix.msc4284.policy",
165
- }
166
-
167
- export enum RelationType {
168
- Annotation = "m.annotation",
169
- Replace = "m.replace",
170
- Reference = "m.reference",
171
-
172
- // Don't use this yet: it's only the stable version. The code still assumes we support the unstable prefix and,
173
- // moreover, our tests currently use the unstable prefix. Use THREAD_RELATION_TYPE.name.
174
- // Once we support *only* the stable prefix, THREAD_RELATION_TYPE can die and we can switch to this.
175
- Thread = "m.thread",
176
- }
177
-
178
- export enum MsgType {
179
- Text = "m.text",
180
- Emote = "m.emote",
181
- Notice = "m.notice",
182
- Image = "m.image",
183
- File = "m.file",
184
- Audio = "m.audio",
185
- Location = "m.location",
186
- Video = "m.video",
187
- KeyVerificationRequest = "m.key.verification.request",
188
- }
189
-
190
- export const RoomCreateTypeField = "type";
191
-
192
- export enum RoomType {
193
- Space = "m.space",
194
- UnstableCall = "org.matrix.msc3417.call",
195
- ElementVideo = "io.element.video",
196
- }
197
-
198
- export const ToDeviceMessageId = "org.matrix.msgid";
199
-
200
- /**
201
- * Identifier for an [MSC3088](https://github.com/matrix-org/matrix-doc/pull/3088)
202
- * room purpose. Note that this reference is UNSTABLE and subject to breaking changes,
203
- * including its eventual removal.
204
- */
205
- export const UNSTABLE_MSC3088_PURPOSE = new UnstableValue("m.room.purpose", "org.matrix.msc3088.purpose");
206
-
207
- /**
208
- * Enabled flag for an [MSC3088](https://github.com/matrix-org/matrix-doc/pull/3088)
209
- * room purpose. Note that this reference is UNSTABLE and subject to breaking changes,
210
- * including its eventual removal.
211
- */
212
- export const UNSTABLE_MSC3088_ENABLED = new UnstableValue("m.enabled", "org.matrix.msc3088.enabled");
213
-
214
- /**
215
- * Subtype for an [MSC3089](https://github.com/matrix-org/matrix-doc/pull/3089) space-room.
216
- * Note that this reference is UNSTABLE and subject to breaking changes, including its
217
- * eventual removal.
218
- */
219
- export const UNSTABLE_MSC3089_TREE_SUBTYPE = new UnstableValue("m.data_tree", "org.matrix.msc3089.data_tree");
220
-
221
- /**
222
- * Leaf type for an event in a [MSC3089](https://github.com/matrix-org/matrix-doc/pull/3089) space-room.
223
- * Note that this reference is UNSTABLE and subject to breaking changes, including its
224
- * eventual removal.
225
- */
226
- export const UNSTABLE_MSC3089_LEAF = new UnstableValue("m.leaf", "org.matrix.msc3089.leaf");
227
-
228
- /**
229
- * Branch (Leaf Reference) type for the index approach in a
230
- * [MSC3089](https://github.com/matrix-org/matrix-doc/pull/3089) space-room. Note that this reference is
231
- * UNSTABLE and subject to breaking changes, including its eventual removal.
232
- */
233
- export const UNSTABLE_MSC3089_BRANCH = new UnstableValue("m.branch", "org.matrix.msc3089.branch");
234
-
235
- /**
236
- * Marker event type to point back at imported historical content in a room. See
237
- * [MSC2716](https://github.com/matrix-org/matrix-spec-proposals/pull/2716).
238
- * Note that this reference is UNSTABLE and subject to breaking changes,
239
- * including its eventual removal.
240
- */
241
- export const UNSTABLE_MSC2716_MARKER = new UnstableValue("m.room.marker", "org.matrix.msc2716.marker");
242
-
243
- /**
244
- * Name of the request property for relation based redactions.
245
- * {@link https://github.com/matrix-org/matrix-spec-proposals/pull/3912}
246
- */
247
- export const MSC3912_RELATION_BASED_REDACTIONS_PROP = new UnstableValue(
248
- "with_rel_types",
249
- "org.matrix.msc3912.with_relations",
250
- );
251
-
252
- /**
253
- * Functional members type for declaring a purpose of room members (e.g. helpful bots).
254
- * Note that this reference is UNSTABLE and subject to breaking changes, including its
255
- * eventual removal.
256
- *
257
- * Schema (TypeScript):
258
- * ```
259
- * {
260
- * service_members?: string[]
261
- * }
262
- * ```
263
- *
264
- * @example
265
- * ```
266
- * {
267
- * "service_members": [
268
- * "@helperbot:localhost",
269
- * "@reminderbot:alice.tdl"
270
- * ]
271
- * }
272
- * ```
273
- */
274
- export const UNSTABLE_ELEMENT_FUNCTIONAL_USERS = new UnstableValue(
275
- "io.element.functional_members",
276
- "io.element.functional_members",
277
- );
278
-
279
- /**
280
- * A type of message that affects visibility of a message,
281
- * as per https://github.com/matrix-org/matrix-doc/pull/3531
282
- *
283
- * @experimental
284
- */
285
- export const EVENT_VISIBILITY_CHANGE_TYPE = new UnstableValue("m.visibility", "org.matrix.msc3531.visibility");
286
-
287
- /**
288
- * https://github.com/matrix-org/matrix-doc/pull/3881
289
- *
290
- * @experimental
291
- */
292
- export const PUSHER_ENABLED = new UnstableValue("enabled", "org.matrix.msc3881.enabled");
293
-
294
- /**
295
- * https://github.com/matrix-org/matrix-doc/pull/3881
296
- *
297
- * @experimental
298
- */
299
- export const PUSHER_DEVICE_ID = new UnstableValue("device_id", "org.matrix.msc3881.device_id");
300
-
301
- /**
302
- * https://github.com/matrix-org/matrix-doc/pull/3890
303
- *
304
- * @experimental
305
- */
306
- export const LOCAL_NOTIFICATION_SETTINGS_PREFIX = new UnstableValue(
307
- "m.local_notification_settings",
308
- "org.matrix.msc3890.local_notification_settings",
309
- );
310
-
311
- /**
312
- * https://github.com/matrix-org/matrix-doc/pull/4023
313
- *
314
- * @experimental
315
- */
316
- export const UNSIGNED_THREAD_ID_FIELD = new UnstableValue("thread_id", "org.matrix.msc4023.thread_id");
317
-
318
- /**
319
- * https://github.com/matrix-org/matrix-spec-proposals/pull/4115
320
- *
321
- * @experimental
322
- */
323
- export const UNSIGNED_MEMBERSHIP_FIELD = new NamespacedValue("membership", "io.element.msc4115.membership");
324
-
325
- /**
326
- * Mapped type from event type to content type for all specified non-state room events.
327
- */
328
- export interface TimelineEvents {
329
- [EventType.RoomMessage]: RoomMessageEventContent;
330
- [EventType.Sticker]: StickerEventContent;
331
- [EventType.Reaction]: ReactionEventContent;
332
- [EventType.CallReplaces]: MCallReplacesEvent;
333
- [EventType.CallAnswer]: MCallAnswer;
334
- [EventType.CallSelectAnswer]: MCallSelectAnswer;
335
- [EventType.CallNegotiate]: Omit<MCallInviteNegotiate, "offer">;
336
- [EventType.CallInvite]: MCallInviteNegotiate;
337
- [EventType.CallCandidates]: MCallCandidates;
338
- [EventType.CallHangup]: MCallHangupReject;
339
- [EventType.CallReject]: MCallHangupReject;
340
- [EventType.CallSDPStreamMetadataChangedPrefix]: MCallBase &
341
- EitherAnd<
342
- { sdp_stream_metadata: SDPStreamMetadata },
343
- { "org.matrix.msc3077.sdp_stream_metadata": SDPStreamMetadata }
344
- >;
345
- [EventType.CallSDPStreamMetadataChanged]: MCallBase &
346
- EitherAnd<
347
- { sdp_stream_metadata: SDPStreamMetadata },
348
- { "org.matrix.msc3077.sdp_stream_metadata": SDPStreamMetadata }
349
- >;
350
- [EventType.CallEncryptionKeysPrefix]: EncryptionKeysEventContent;
351
- [EventType.CallNotify]: ICallNotifyContent;
352
- [EventType.RTCNotification]: IRTCNotificationContent;
353
- [EventType.RTCDecline]: IRTCDeclineContent;
354
- [M_BEACON.name]: MBeaconEventContent;
355
- [M_POLL_START.name]: PollStartEventContent;
356
- [M_POLL_END.name]: PollEndEventContent;
357
- [EventType.RTCMembership]: RtcMembershipData | { msc4354_sticky_key: string }; // An object containing just the sticky key is empty.
358
- }
359
-
360
- /**
361
- * Mapped type from event type to content type for all specified room state events.
362
- */
363
- export interface StateEvents {
364
- [EventType.RoomCanonicalAlias]: RoomCanonicalAliasEventContent;
365
- [EventType.RoomCreate]: RoomCreateEventContent;
366
- [EventType.RoomJoinRules]: RoomJoinRulesEventContent;
367
- [EventType.RoomMember]: RoomMemberEventContent;
368
- // XXX: Spec says this event has 3 required fields but kicking such an invitation requires sending `{}`
369
- [EventType.RoomThirdPartyInvite]: RoomThirdPartyInviteEventContent | EmptyObject;
370
- [EventType.RoomPowerLevels]: RoomPowerLevelsEventContent;
371
- [EventType.RoomName]: RoomNameEventContent;
372
- [EventType.RoomTopic]: RoomTopicEventContent;
373
- [EventType.RoomAvatar]: RoomAvatarEventContent;
374
- [EventType.RoomPinnedEvents]: RoomPinnedEventsEventContent;
375
- [EventType.RoomEncryption]: RoomEncryptionEventContent;
376
- [EventType.RoomHistoryVisibility]: RoomHistoryVisibilityEventContent;
377
- [EventType.RoomGuestAccess]: RoomGuestAccessEventContent;
378
- [EventType.RoomServerAcl]: RoomServerAclEventContent;
379
- [EventType.RoomTombstone]: RoomTombstoneEventContent;
380
- [EventType.SpaceChild]: SpaceChildEventContent;
381
- [EventType.SpaceParent]: SpaceParentEventContent;
382
-
383
- [EventType.PolicyRuleUser]: PolicyRuleEventContent | EmptyObject;
384
- [EventType.PolicyRuleRoom]: PolicyRuleEventContent | EmptyObject;
385
- [EventType.PolicyRuleServer]: PolicyRuleEventContent | EmptyObject;
386
-
387
- // MSC4284: Policy servers
388
- [EventType.RoomPolicy]: RoomPolicyContent | EmptyObject;
389
-
390
- // MSC3401
391
- [EventType.GroupCallPrefix]: IGroupCallRoomState;
392
- [EventType.GroupCallMemberPrefix]: IGroupCallRoomMemberState | SessionMembershipData | EmptyObject;
393
- [EventType.RTCMembership]: RtcMembershipData | EmptyObject;
394
- // MSC3089
395
- [UNSTABLE_MSC3089_BRANCH.name]: MSC3089EventContent;
396
-
397
- // MSC3672
398
- [M_BEACON_INFO.name]: MBeaconInfoEventContent;
399
- }
400
-
401
- /**
402
- * Mapped type from event type to content type for all specified room-specific account_data events.
403
- */
404
- export interface RoomAccountDataEvents extends SecretStorageAccountDataEvents {
405
- [EventType.FullyRead]: { event_id: string };
406
- [EventType.Tag]: { tags: { [name: string]: { order?: number } } };
407
- [EventType.SpaceOrder]: { order: string };
408
- [EventType.MarkedUnread]: { unread: boolean };
409
- }
410
-
411
- /**
412
- * Mapped type from event type to content type for all specified global account_data events.
413
- */
414
- export interface AccountDataEvents extends SecretStorageAccountDataEvents {
415
- [EventType.PushRules]: IPushRules;
416
- [EventType.Direct]: { [userId: string]: string[] };
417
- [EventType.IgnoredUserList]: { ignored_users: { [userId: string]: EmptyObject } };
418
- "m.secret_storage.default_key": { key: string };
419
- // Flag set by the rust SDK (Element X) and also used by us to mark that the user opted out of backup
420
- // (I don't know why it's m.org.matrix...)
421
- "m.org.matrix.custom.backup_disabled": { disabled: boolean };
422
- "m.identity_server": { base_url: string | null };
423
- [key: `${typeof LOCAL_NOTIFICATION_SETTINGS_PREFIX.name}.${string}`]: LocalNotificationSettings;
424
- [key: `m.secret_storage.key.${string}`]: SecretStorageKeyDescription;
425
-
426
- // Invites-ignorer events
427
- [POLICIES_ACCOUNT_EVENT_TYPE.name]: { [key: string]: any };
428
- [POLICIES_ACCOUNT_EVENT_TYPE.altName]: { [key: string]: any };
429
-
430
- [EventType.InvitePermissionConfig]: { default_action?: string };
431
- }
432
-
433
- /**
434
- * Subset of AccountDataEvents, excluding events specified in https://spec.matrix.org/v1.17/client-server-api/#server-behaviour-12
435
- */
436
- export type WritableAccountDataEvents = Exclude<AccountDataEvents, "m.fully_read" | "m.push_rules">;
437
-
438
- /**
439
- * Mapped type from event type to content type for all specified global events encrypted by secret storage.
440
- *
441
- * See https://spec.matrix.org/v1.13/client-server-api/#msecret_storagev1aes-hmac-sha2-1
442
- */
443
- export interface SecretStorageAccountDataEvents {
444
- "m.megolm_backup.v1": SecretInfo;
445
- "m.cross_signing.master": SecretInfo;
446
- "m.cross_signing.self_signing": SecretInfo;
447
- "m.cross_signing.user_signing": SecretInfo;
448
- "org.matrix.msc3814": SecretInfo;
449
- }
1
+ /*
2
+ Copyright 2020-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 { type EitherAnd } from "matrix-events-sdk";
18
+
19
+ import { NamespacedValue, UnstableValue } from "../NamespacedValue.ts";
20
+ import {
21
+ type PolicyRuleEventContent,
22
+ type RoomAvatarEventContent,
23
+ type RoomCanonicalAliasEventContent,
24
+ type RoomCreateEventContent,
25
+ type RoomEncryptionEventContent,
26
+ type RoomGuestAccessEventContent,
27
+ type RoomHistoryVisibilityEventContent,
28
+ type RoomJoinRulesEventContent,
29
+ type RoomMemberEventContent,
30
+ type RoomNameEventContent,
31
+ type RoomPinnedEventsEventContent,
32
+ type RoomPolicyContent,
33
+ type RoomPowerLevelsEventContent,
34
+ type RoomServerAclEventContent,
35
+ type RoomThirdPartyInviteEventContent,
36
+ type RoomTombstoneEventContent,
37
+ type RoomTopicEventContent,
38
+ type SpaceChildEventContent,
39
+ type SpaceParentEventContent,
40
+ } from "./state_events.ts";
41
+ import { type IGroupCallRoomMemberState, type IGroupCallRoomState } from "../webrtc/groupCall.ts";
42
+ import { type MSC3089EventContent } from "../models/MSC3089Branch.ts";
43
+ import { type M_BEACON, type M_BEACON_INFO, type MBeaconEventContent, type MBeaconInfoEventContent } from "./beacon.ts";
44
+ import { type EmptyObject } from "./common.ts";
45
+ import { type ReactionEventContent, type RoomMessageEventContent, type StickerEventContent } from "./events.ts";
46
+ import {
47
+ type MCallAnswer,
48
+ type MCallBase,
49
+ type MCallCandidates,
50
+ type MCallHangupReject,
51
+ type MCallInviteNegotiate,
52
+ type MCallReplacesEvent,
53
+ type MCallSelectAnswer,
54
+ type SDPStreamMetadata,
55
+ } from "../webrtc/callEventTypes.ts";
56
+ import {
57
+ type IRTCNotificationContent,
58
+ type IRTCDeclineContent,
59
+ type EncryptionKeysEventContent,
60
+ type ICallNotifyContent,
61
+ } from "../matrixrtc/types.ts";
62
+ import { type M_POLL_END, type M_POLL_START, type PollEndEventContent, type PollStartEventContent } from "./polls.ts";
63
+ import { type RtcMembershipData, type SessionMembershipData } from "../matrixrtc/membershipData/index.ts";
64
+ import { type LocalNotificationSettings } from "./local_notifications.ts";
65
+ import { type IPushRules } from "./PushRules.ts";
66
+ import { type SecretInfo, type SecretStorageKeyDescription } from "../secret-storage.ts";
67
+ import { type POLICIES_ACCOUNT_EVENT_TYPE } from "../models/invites-ignorer-types.ts";
68
+
69
+ export enum EventType {
70
+ // Room state events
71
+ RoomCanonicalAlias = "m.room.canonical_alias",
72
+ RoomCreate = "m.room.create",
73
+ RoomJoinRules = "m.room.join_rules",
74
+ RoomMember = "m.room.member",
75
+ RoomThirdPartyInvite = "m.room.third_party_invite",
76
+ RoomPowerLevels = "m.room.power_levels",
77
+ RoomName = "m.room.name",
78
+ RoomTopic = "m.room.topic",
79
+ RoomAvatar = "m.room.avatar",
80
+ RoomPinnedEvents = "m.room.pinned_events",
81
+ RoomEncryption = "m.room.encryption",
82
+ RoomHistoryVisibility = "m.room.history_visibility",
83
+ RoomGuestAccess = "m.room.guest_access",
84
+ RoomServerAcl = "m.room.server_acl",
85
+ RoomTombstone = "m.room.tombstone",
86
+ RoomPredecessor = "org.matrix.msc3946.room_predecessor",
87
+
88
+ // Moderation policy lists
89
+ PolicyRuleUser = "m.policy.rule.user",
90
+ PolicyRuleRoom = "m.policy.rule.room",
91
+ PolicyRuleServer = "m.policy.rule.server",
92
+
93
+ SpaceChild = "m.space.child",
94
+ SpaceParent = "m.space.parent",
95
+
96
+ // Room timeline events
97
+ RoomRedaction = "m.room.redaction",
98
+ RoomMessage = "m.room.message",
99
+ RoomMessageEncrypted = "m.room.encrypted",
100
+ Sticker = "m.sticker",
101
+ CallInvite = "m.call.invite",
102
+ CallCandidates = "m.call.candidates",
103
+ CallAnswer = "m.call.answer",
104
+ CallHangup = "m.call.hangup",
105
+ CallReject = "m.call.reject",
106
+ CallSelectAnswer = "m.call.select_answer",
107
+ CallNegotiate = "m.call.negotiate",
108
+ CallSDPStreamMetadataChanged = "m.call.sdp_stream_metadata_changed",
109
+ CallSDPStreamMetadataChangedPrefix = "org.matrix.call.sdp_stream_metadata_changed",
110
+ CallReplaces = "m.call.replaces",
111
+ CallAssertedIdentity = "m.call.asserted_identity",
112
+ CallAssertedIdentityPrefix = "org.matrix.call.asserted_identity",
113
+ CallEncryptionKeysPrefix = "io.element.call.encryption_keys",
114
+ KeyVerificationRequest = "m.key.verification.request",
115
+ KeyVerificationStart = "m.key.verification.start",
116
+ KeyVerificationCancel = "m.key.verification.cancel",
117
+ KeyVerificationMac = "m.key.verification.mac",
118
+ KeyVerificationDone = "m.key.verification.done",
119
+ KeyVerificationKey = "m.key.verification.key",
120
+ KeyVerificationAccept = "m.key.verification.accept",
121
+ // Not used directly - see READY_TYPE in VerificationRequest.
122
+ KeyVerificationReady = "m.key.verification.ready",
123
+ // use of this is discouraged https://matrix.org/docs/spec/client_server/r0.6.1#m-room-message-feedback
124
+ RoomMessageFeedback = "m.room.message.feedback",
125
+ Reaction = "m.reaction",
126
+ PollStart = "org.matrix.msc3381.poll.start",
127
+ UserVerifyRequest = "m.user.verify.request",
128
+ UserVerifyAccept = "m.user.verify.accept",
129
+ UserVerified = "m.user.verified",
130
+
131
+ // Room ephemeral events
132
+ Typing = "m.typing",
133
+ Receipt = "m.receipt",
134
+ Presence = "m.presence",
135
+
136
+ // Room account_data events
137
+ FullyRead = "m.fully_read",
138
+ Tag = "m.tag",
139
+ SpaceOrder = "org.matrix.msc3230.space_order", // MSC3230
140
+ MarkedUnread = "m.marked_unread",
141
+
142
+ // User account_data events
143
+ PushRules = "m.push_rules",
144
+ Direct = "m.direct",
145
+ IgnoredUserList = "m.ignored_user_list",
146
+ InvitePermissionConfig = "m.invite_permission_config", // MSC4380
147
+
148
+ // to_device events
149
+ RoomKey = "m.room_key",
150
+ RoomKeyRequest = "m.room_key_request",
151
+ ForwardedRoomKey = "m.forwarded_room_key",
152
+ Dummy = "m.dummy",
153
+ SecretRequest = "m.secret.request",
154
+ SecretSend = "m.secret.send",
155
+
156
+ // Group call events
157
+ GroupCallPrefix = "org.matrix.msc3401.call",
158
+ GroupCallMemberPrefix = "org.matrix.msc3401.call.member",
159
+
160
+ // MatrixRTC events
161
+ RTCMembership = "org.matrix.msc4143.rtc.member",
162
+ CallNotify = "org.matrix.msc4075.call.notify",
163
+ RTCNotification = "org.matrix.msc4075.rtc.notification",
164
+ RTCDecline = "org.matrix.msc4310.rtc.decline",
165
+
166
+ // Policy servers
167
+ RoomPolicy = "org.matrix.msc4284.policy",
168
+ }
169
+
170
+ export enum RelationType {
171
+ Annotation = "m.annotation",
172
+ Replace = "m.replace",
173
+ Reference = "m.reference",
174
+
175
+ // Don't use this yet: it's only the stable version. The code still assumes we support the unstable prefix and,
176
+ // moreover, our tests currently use the unstable prefix. Use THREAD_RELATION_TYPE.name.
177
+ // Once we support *only* the stable prefix, THREAD_RELATION_TYPE can die and we can switch to this.
178
+ Thread = "m.thread",
179
+ }
180
+
181
+ export enum MsgType {
182
+ Text = "m.text",
183
+ Emote = "m.emote",
184
+ Notice = "m.notice",
185
+ Image = "m.image",
186
+ File = "m.file",
187
+ Audio = "m.audio",
188
+ Location = "m.location",
189
+ Video = "m.video",
190
+ KeyVerificationRequest = "m.key.verification.request",
191
+ }
192
+
193
+ export const RoomCreateTypeField = "type";
194
+
195
+ export enum RoomType {
196
+ Space = "m.space",
197
+ UnstableCall = "org.matrix.msc3417.call",
198
+ ElementVideo = "io.element.video",
199
+ }
200
+
201
+ export const ToDeviceMessageId = "org.matrix.msgid";
202
+
203
+ /**
204
+ * Identifier for an [MSC3088](https://github.com/matrix-org/matrix-doc/pull/3088)
205
+ * room purpose. Note that this reference is UNSTABLE and subject to breaking changes,
206
+ * including its eventual removal.
207
+ */
208
+ export const UNSTABLE_MSC3088_PURPOSE = new UnstableValue("m.room.purpose", "org.matrix.msc3088.purpose");
209
+
210
+ /**
211
+ * Enabled flag for an [MSC3088](https://github.com/matrix-org/matrix-doc/pull/3088)
212
+ * room purpose. Note that this reference is UNSTABLE and subject to breaking changes,
213
+ * including its eventual removal.
214
+ */
215
+ export const UNSTABLE_MSC3088_ENABLED = new UnstableValue("m.enabled", "org.matrix.msc3088.enabled");
216
+
217
+ /**
218
+ * Subtype for an [MSC3089](https://github.com/matrix-org/matrix-doc/pull/3089) space-room.
219
+ * Note that this reference is UNSTABLE and subject to breaking changes, including its
220
+ * eventual removal.
221
+ */
222
+ export const UNSTABLE_MSC3089_TREE_SUBTYPE = new UnstableValue("m.data_tree", "org.matrix.msc3089.data_tree");
223
+
224
+ /**
225
+ * Leaf type for an event in a [MSC3089](https://github.com/matrix-org/matrix-doc/pull/3089) space-room.
226
+ * Note that this reference is UNSTABLE and subject to breaking changes, including its
227
+ * eventual removal.
228
+ */
229
+ export const UNSTABLE_MSC3089_LEAF = new UnstableValue("m.leaf", "org.matrix.msc3089.leaf");
230
+
231
+ /**
232
+ * Branch (Leaf Reference) type for the index approach in a
233
+ * [MSC3089](https://github.com/matrix-org/matrix-doc/pull/3089) space-room. Note that this reference is
234
+ * UNSTABLE and subject to breaking changes, including its eventual removal.
235
+ */
236
+ export const UNSTABLE_MSC3089_BRANCH = new UnstableValue("m.branch", "org.matrix.msc3089.branch");
237
+
238
+ /**
239
+ * Marker event type to point back at imported historical content in a room. See
240
+ * [MSC2716](https://github.com/matrix-org/matrix-spec-proposals/pull/2716).
241
+ * Note that this reference is UNSTABLE and subject to breaking changes,
242
+ * including its eventual removal.
243
+ */
244
+ export const UNSTABLE_MSC2716_MARKER = new UnstableValue("m.room.marker", "org.matrix.msc2716.marker");
245
+
246
+ /**
247
+ * Name of the request property for relation based redactions.
248
+ * {@link https://github.com/matrix-org/matrix-spec-proposals/pull/3912}
249
+ */
250
+ export const MSC3912_RELATION_BASED_REDACTIONS_PROP = new UnstableValue(
251
+ "with_rel_types",
252
+ "org.matrix.msc3912.with_relations",
253
+ );
254
+
255
+ /**
256
+ * Functional members type for declaring a purpose of room members (e.g. helpful bots).
257
+ * Note that this reference is UNSTABLE and subject to breaking changes, including its
258
+ * eventual removal.
259
+ *
260
+ * Schema (TypeScript):
261
+ * ```
262
+ * {
263
+ * service_members?: string[]
264
+ * }
265
+ * ```
266
+ *
267
+ * @example
268
+ * ```
269
+ * {
270
+ * "service_members": [
271
+ * "@helperbot:localhost",
272
+ * "@reminderbot:alice.tdl"
273
+ * ]
274
+ * }
275
+ * ```
276
+ */
277
+ export const UNSTABLE_ELEMENT_FUNCTIONAL_USERS = new UnstableValue(
278
+ "io.element.functional_members",
279
+ "io.element.functional_members",
280
+ );
281
+
282
+ /**
283
+ * A type of message that affects visibility of a message,
284
+ * as per https://github.com/matrix-org/matrix-doc/pull/3531
285
+ *
286
+ * @experimental
287
+ */
288
+ export const EVENT_VISIBILITY_CHANGE_TYPE = new UnstableValue("m.visibility", "org.matrix.msc3531.visibility");
289
+
290
+ /**
291
+ * https://github.com/matrix-org/matrix-doc/pull/3881
292
+ *
293
+ * @experimental
294
+ */
295
+ export const PUSHER_ENABLED = new UnstableValue("enabled", "org.matrix.msc3881.enabled");
296
+
297
+ /**
298
+ * https://github.com/matrix-org/matrix-doc/pull/3881
299
+ *
300
+ * @experimental
301
+ */
302
+ export const PUSHER_DEVICE_ID = new UnstableValue("device_id", "org.matrix.msc3881.device_id");
303
+
304
+ /**
305
+ * https://github.com/matrix-org/matrix-doc/pull/3890
306
+ *
307
+ * @experimental
308
+ */
309
+ export const LOCAL_NOTIFICATION_SETTINGS_PREFIX = new UnstableValue(
310
+ "m.local_notification_settings",
311
+ "org.matrix.msc3890.local_notification_settings",
312
+ );
313
+
314
+ /**
315
+ * https://github.com/matrix-org/matrix-doc/pull/4023
316
+ *
317
+ * @experimental
318
+ */
319
+ export const UNSIGNED_THREAD_ID_FIELD = new UnstableValue("thread_id", "org.matrix.msc4023.thread_id");
320
+
321
+ /**
322
+ * https://github.com/matrix-org/matrix-spec-proposals/pull/4115
323
+ *
324
+ * @experimental
325
+ */
326
+ export const UNSIGNED_MEMBERSHIP_FIELD = new NamespacedValue("membership", "io.element.msc4115.membership");
327
+
328
+ /**
329
+ * Mapped type from event type to content type for all specified non-state room events.
330
+ */
331
+ export interface TimelineEvents {
332
+ [EventType.RoomMessage]: RoomMessageEventContent;
333
+ [EventType.Sticker]: StickerEventContent;
334
+ [EventType.Reaction]: ReactionEventContent;
335
+ [EventType.CallReplaces]: MCallReplacesEvent;
336
+ [EventType.CallAnswer]: MCallAnswer;
337
+ [EventType.CallSelectAnswer]: MCallSelectAnswer;
338
+ [EventType.CallNegotiate]: Omit<MCallInviteNegotiate, "offer">;
339
+ [EventType.CallInvite]: MCallInviteNegotiate;
340
+ [EventType.CallCandidates]: MCallCandidates;
341
+ [EventType.CallHangup]: MCallHangupReject;
342
+ [EventType.CallReject]: MCallHangupReject;
343
+ [EventType.CallSDPStreamMetadataChangedPrefix]: MCallBase &
344
+ EitherAnd<
345
+ { sdp_stream_metadata: SDPStreamMetadata },
346
+ { "org.matrix.msc3077.sdp_stream_metadata": SDPStreamMetadata }
347
+ >;
348
+ [EventType.CallSDPStreamMetadataChanged]: MCallBase &
349
+ EitherAnd<
350
+ { sdp_stream_metadata: SDPStreamMetadata },
351
+ { "org.matrix.msc3077.sdp_stream_metadata": SDPStreamMetadata }
352
+ >;
353
+ [EventType.CallEncryptionKeysPrefix]: EncryptionKeysEventContent;
354
+ [EventType.CallNotify]: ICallNotifyContent;
355
+ [EventType.RTCNotification]: IRTCNotificationContent;
356
+ [EventType.RTCDecline]: IRTCDeclineContent;
357
+ [M_BEACON.name]: MBeaconEventContent;
358
+ [M_POLL_START.name]: PollStartEventContent;
359
+ [M_POLL_END.name]: PollEndEventContent;
360
+ [EventType.RTCMembership]: RtcMembershipData | { msc4354_sticky_key: string }; // An object containing just the sticky key is empty.
361
+ [EventType.UserVerifyRequest]: {
362
+ tx_hash: string;
363
+ issuer_xrpl_address: string;
364
+ target_xrpl_address: string;
365
+ credential_type_bytes?: "textrp_verify";
366
+ trust_model?: "nft_metadata";
367
+ };
368
+ [EventType.UserVerifyAccept]: {
369
+ tx_hash: string;
370
+ issuer_xrpl_address: string;
371
+ accepter_xrpl_address: string;
372
+ credential_type_bytes?: "textrp_verify";
373
+ trust_model?: "nft_metadata";
374
+ nft_token_id?: string;
375
+ ipfs_uri?: string;
376
+ };
377
+ }
378
+
379
+ /**
380
+ * Mapped type from event type to content type for all specified room state events.
381
+ */
382
+ export interface StateEvents {
383
+ [EventType.RoomCanonicalAlias]: RoomCanonicalAliasEventContent;
384
+ [EventType.RoomCreate]: RoomCreateEventContent;
385
+ [EventType.RoomJoinRules]: RoomJoinRulesEventContent;
386
+ [EventType.RoomMember]: RoomMemberEventContent;
387
+ // XXX: Spec says this event has 3 required fields but kicking such an invitation requires sending `{}`
388
+ [EventType.RoomThirdPartyInvite]: RoomThirdPartyInviteEventContent | EmptyObject;
389
+ [EventType.RoomPowerLevels]: RoomPowerLevelsEventContent;
390
+ [EventType.RoomName]: RoomNameEventContent;
391
+ [EventType.RoomTopic]: RoomTopicEventContent;
392
+ [EventType.RoomAvatar]: RoomAvatarEventContent;
393
+ [EventType.RoomPinnedEvents]: RoomPinnedEventsEventContent;
394
+ [EventType.RoomEncryption]: RoomEncryptionEventContent;
395
+ [EventType.RoomHistoryVisibility]: RoomHistoryVisibilityEventContent;
396
+ [EventType.RoomGuestAccess]: RoomGuestAccessEventContent;
397
+ [EventType.RoomServerAcl]: RoomServerAclEventContent;
398
+ [EventType.RoomTombstone]: RoomTombstoneEventContent;
399
+ [EventType.SpaceChild]: SpaceChildEventContent;
400
+ [EventType.SpaceParent]: SpaceParentEventContent;
401
+
402
+ [EventType.PolicyRuleUser]: PolicyRuleEventContent | EmptyObject;
403
+ [EventType.PolicyRuleRoom]: PolicyRuleEventContent | EmptyObject;
404
+ [EventType.PolicyRuleServer]: PolicyRuleEventContent | EmptyObject;
405
+
406
+ // MSC4284: Policy servers
407
+ [EventType.RoomPolicy]: RoomPolicyContent | EmptyObject;
408
+
409
+ // MSC3401
410
+ [EventType.GroupCallPrefix]: IGroupCallRoomState;
411
+ [EventType.GroupCallMemberPrefix]: IGroupCallRoomMemberState | SessionMembershipData | EmptyObject;
412
+ [EventType.RTCMembership]: RtcMembershipData | EmptyObject;
413
+ // MSC3089
414
+ [UNSTABLE_MSC3089_BRANCH.name]: MSC3089EventContent;
415
+
416
+ // MSC3672
417
+ [M_BEACON_INFO.name]: MBeaconInfoEventContent;
418
+ [EventType.UserVerified]: {
419
+ status: "requested" | "verified";
420
+ credential_type?: "textrp_verify";
421
+ trust_model?: "nft_metadata";
422
+ tx_hash: string;
423
+ validated: boolean;
424
+ [key: string]: unknown;
425
+ };
426
+ }
427
+
428
+ /**
429
+ * Mapped type from event type to content type for all specified room-specific account_data events.
430
+ */
431
+ export interface RoomAccountDataEvents extends SecretStorageAccountDataEvents {
432
+ [EventType.FullyRead]: { event_id: string };
433
+ [EventType.Tag]: { tags: { [name: string]: { order?: number } } };
434
+ [EventType.SpaceOrder]: { order: string };
435
+ [EventType.MarkedUnread]: { unread: boolean };
436
+ }
437
+
438
+ /**
439
+ * Mapped type from event type to content type for all specified global account_data events.
440
+ */
441
+ export interface AccountDataEvents extends SecretStorageAccountDataEvents {
442
+ [EventType.PushRules]: IPushRules;
443
+ [EventType.Direct]: { [userId: string]: string[] };
444
+ [EventType.IgnoredUserList]: { ignored_users: { [userId: string]: EmptyObject } };
445
+ "m.secret_storage.default_key": { key: string };
446
+ // Flag set by the rust SDK (Element X) and also used by us to mark that the user opted out of backup
447
+ // (I don't know why it's m.org.matrix...)
448
+ "m.org.matrix.custom.backup_disabled": { disabled: boolean };
449
+ "m.identity_server": { base_url: string | null };
450
+ [key: `${typeof LOCAL_NOTIFICATION_SETTINGS_PREFIX.name}.${string}`]: LocalNotificationSettings;
451
+ [key: `m.secret_storage.key.${string}`]: SecretStorageKeyDescription;
452
+
453
+ // Invites-ignorer events
454
+ [POLICIES_ACCOUNT_EVENT_TYPE.name]: { [key: string]: any };
455
+ [POLICIES_ACCOUNT_EVENT_TYPE.altName]: { [key: string]: any };
456
+
457
+ [EventType.InvitePermissionConfig]: { default_action?: string };
458
+ "org.textrp.wallet.e2ee_recovery.v1": {
459
+ envelope_version: number;
460
+ chain_id: string;
461
+ account_id: string;
462
+ created_at_ms: number;
463
+ key_id: string;
464
+ wallet_wrap: {
465
+ alg: string;
466
+ kdf: string;
467
+ salt: string;
468
+ nonce: string;
469
+ ciphertext: string;
470
+ aad?: string;
471
+ params?: Record<string, unknown>;
472
+ };
473
+ password_wrap: {
474
+ alg: string;
475
+ kdf: string;
476
+ salt: string;
477
+ nonce: string;
478
+ ciphertext: string;
479
+ aad?: string;
480
+ params?: Record<string, unknown>;
481
+ };
482
+ };
483
+ "org.textrp.wallet.identity": {
484
+ chain_id: string;
485
+ account_id: string;
486
+ public_key: string | null;
487
+ network?: string | null;
488
+ key_type?: string | null;
489
+ };
490
+ }
491
+
492
+ /**
493
+ * Subset of AccountDataEvents, excluding events specified in https://spec.matrix.org/v1.17/client-server-api/#server-behaviour-12
494
+ */
495
+ export type WritableAccountDataEvents = Exclude<AccountDataEvents, "m.fully_read" | "m.push_rules">;
496
+
497
+ /**
498
+ * Mapped type from event type to content type for all specified global events encrypted by secret storage.
499
+ *
500
+ * See https://spec.matrix.org/v1.13/client-server-api/#msecret_storagev1aes-hmac-sha2-1
501
+ */
502
+ export interface SecretStorageAccountDataEvents {
503
+ "m.megolm_backup.v1": SecretInfo;
504
+ "m.cross_signing.master": SecretInfo;
505
+ "m.cross_signing.self_signing": SecretInfo;
506
+ "m.cross_signing.user_signing": SecretInfo;
507
+ "org.matrix.msc3814": SecretInfo;
508
+ }