@textrp/briij-js-sdk 41.0.0 → 42.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 (375) hide show
  1. package/CHANGELOG.md +14 -1
  2. package/LICENSE +177 -177
  3. package/README.md +47 -46
  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 +19 -1
  10. package/lib/@types/auth.d.ts.map +1 -1
  11. package/lib/@types/auth.js +55 -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 +27 -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 +3 -0
  58. package/lib/briij.d.ts.map +1 -1
  59. package/lib/briij.js +3 -0
  60. package/lib/briij.js.map +1 -1
  61. package/lib/client.d.ts +18 -1
  62. package/lib/client.d.ts.map +1 -1
  63. package/lib/client.js +166 -103
  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/webrtc/audioContext.js +24 -24
  202. package/lib/webrtc/audioContext.js.map +1 -1
  203. package/lib/webrtc/callEventTypes.js.map +1 -1
  204. package/lib/webrtc/stats/callFeedStatsReporter.js +14 -14
  205. package/lib/webrtc/stats/callFeedStatsReporter.js.map +1 -1
  206. package/lib/webrtc/stats/callStatsReportGatherer.js +14 -14
  207. package/lib/webrtc/stats/callStatsReportGatherer.js.map +1 -1
  208. package/lib/webrtc/stats/callStatsReportSummary.js.map +1 -1
  209. package/lib/webrtc/stats/connectionStats.js +14 -14
  210. package/lib/webrtc/stats/connectionStats.js.map +1 -1
  211. package/lib/webrtc/stats/connectionStatsBuilder.js +14 -14
  212. package/lib/webrtc/stats/connectionStatsBuilder.js.map +1 -1
  213. package/lib/webrtc/stats/connectionStatsReportBuilder.js +14 -14
  214. package/lib/webrtc/stats/connectionStatsReportBuilder.js.map +1 -1
  215. package/lib/webrtc/stats/groupCallStats.js +14 -14
  216. package/lib/webrtc/stats/groupCallStats.js.map +1 -1
  217. package/lib/webrtc/stats/media/mediaSsrcHandler.js +14 -14
  218. package/lib/webrtc/stats/media/mediaSsrcHandler.js.map +1 -1
  219. package/lib/webrtc/stats/media/mediaTrackHandler.js +14 -14
  220. package/lib/webrtc/stats/media/mediaTrackHandler.js.map +1 -1
  221. package/lib/webrtc/stats/media/mediaTrackStats.js +27 -27
  222. package/lib/webrtc/stats/media/mediaTrackStats.js.map +1 -1
  223. package/lib/webrtc/stats/media/mediaTrackStatsHandler.js +20 -20
  224. package/lib/webrtc/stats/media/mediaTrackStatsHandler.js.map +1 -1
  225. package/lib/webrtc/stats/statsReport.js +14 -14
  226. package/lib/webrtc/stats/statsReport.js.map +1 -1
  227. package/lib/webrtc/stats/statsReportEmitter.js +14 -14
  228. package/lib/webrtc/stats/statsReportEmitter.js.map +1 -1
  229. package/lib/webrtc/stats/trackStatsBuilder.js +4 -4
  230. package/lib/webrtc/stats/trackStatsBuilder.js.map +1 -1
  231. package/lib/webrtc/stats/transportStats.js.map +1 -1
  232. package/lib/webrtc/stats/transportStatsBuilder.js.map +1 -1
  233. package/lib/webrtc/stats/valueFormatter.js +11 -11
  234. package/lib/webrtc/stats/valueFormatter.js.map +1 -1
  235. package/lib/xrpl/identity.d.ts +28 -0
  236. package/lib/xrpl/identity.d.ts.map +1 -0
  237. package/lib/xrpl/identity.js +213 -0
  238. package/lib/xrpl/identity.js.map +1 -0
  239. package/lib/xrpl/trust.d.ts +8 -0
  240. package/lib/xrpl/trust.d.ts.map +1 -0
  241. package/lib/xrpl/trust.js +61 -0
  242. package/lib/xrpl/trust.js.map +1 -0
  243. package/lib/xrpl/verification.d.ts +26 -0
  244. package/lib/xrpl/verification.d.ts.map +1 -0
  245. package/lib/xrpl/verification.js +295 -0
  246. package/lib/xrpl/verification.js.map +1 -0
  247. package/package.json +128 -129
  248. package/src/@types/AESEncryptedSecretStoragePayload.ts +29 -29
  249. package/src/@types/IIdentityServerProvider.ts +24 -24
  250. package/src/@types/PushRules.ts +208 -208
  251. package/src/@types/another-json.d.ts +19 -19
  252. package/src/@types/auth.ts +280 -258
  253. package/src/@types/beacon.ts +140 -140
  254. package/src/@types/common.ts +24 -24
  255. package/src/@types/crypto.ts +71 -71
  256. package/src/@types/event.ts +476 -449
  257. package/src/@types/events.ts +119 -119
  258. package/src/@types/extensible_events.ts +147 -147
  259. package/src/@types/local_notifications.ts +19 -19
  260. package/src/@types/location.ts +92 -92
  261. package/src/@types/matrix-sdk-crypto-wasm.d.ts +39 -39
  262. package/src/@types/media.ts +245 -245
  263. package/src/@types/membership.ts +57 -57
  264. package/src/@types/partials.ts +103 -103
  265. package/src/@types/polls.ts +120 -120
  266. package/src/@types/read_receipts.ts +61 -61
  267. package/src/@types/registration.ts +102 -102
  268. package/src/@types/search.ts +119 -119
  269. package/src/@types/signed.ts +25 -25
  270. package/src/@types/spaces.ts +37 -37
  271. package/src/@types/state_events.ts +153 -153
  272. package/src/@types/synapse.ts +40 -40
  273. package/src/@types/sync.ts +27 -27
  274. package/src/@types/threepids.ts +29 -29
  275. package/src/@types/topic.ts +69 -69
  276. package/src/@types/uia.ts +24 -24
  277. package/src/NamespacedValue.ts +121 -121
  278. package/src/ReEmitter.ts +93 -93
  279. package/src/base64.ts +86 -86
  280. package/src/briij.ts +3 -0
  281. package/src/client.ts +90 -10
  282. package/src/common-crypto/README.md +4 -4
  283. package/src/common-crypto/key-passphrase.ts +43 -43
  284. package/src/content-helpers.ts +298 -298
  285. package/src/content-repo.ts +122 -122
  286. package/src/crypto/store/base.ts +388 -388
  287. package/src/crypto/store/indexeddb-crypto-store-backend.ts +655 -655
  288. package/src/crypto/store/indexeddb-crypto-store.ts +555 -555
  289. package/src/crypto/store/localStorage-crypto-store.ts +409 -409
  290. package/src/crypto/store/memory-crypto-store.ts +326 -326
  291. package/src/crypto-api/CryptoEventHandlerMap.ts +42 -42
  292. package/src/crypto-api/key-passphrase.ts +58 -58
  293. package/src/crypto-api/keybackup.ts +114 -114
  294. package/src/crypto-api/recovery-key.ts +69 -69
  295. package/src/digest.ts +34 -34
  296. package/src/extensible_events_v1/ExtensibleEvent.ts +58 -58
  297. package/src/extensible_events_v1/InvalidEventError.ts +24 -24
  298. package/src/extensible_events_v1/MessageEvent.ts +143 -143
  299. package/src/extensible_events_v1/PollEndEvent.ts +97 -97
  300. package/src/extensible_events_v1/PollResponseEvent.ts +148 -148
  301. package/src/extensible_events_v1/PollStartEvent.ts +207 -207
  302. package/src/extensible_events_v1/utilities.ts +35 -35
  303. package/src/feature.ts +88 -88
  304. package/src/http-api/method.ts +25 -25
  305. package/src/http-api/prefix.ts +48 -48
  306. package/src/indexeddb-helpers.ts +50 -50
  307. package/src/indexeddb-worker.ts +24 -24
  308. package/src/matrixrtc/IKeyTransport.ts +63 -63
  309. package/src/matrixrtc/IMembershipManager.ts +120 -120
  310. package/src/matrixrtc/LivekitTransport.ts +46 -46
  311. package/src/matrixrtc/index.ts +24 -24
  312. package/src/matrixrtc/utils.ts +71 -71
  313. package/src/models/ToDeviceMessage.ts +38 -38
  314. package/src/models/device.ts +85 -85
  315. package/src/models/event-status.ts +39 -39
  316. package/src/models/invites-ignorer-types.ts +58 -58
  317. package/src/models/profile-keys.ts +33 -33
  318. package/src/models/room-summary.ts +78 -78
  319. package/src/models/search-result.ts +57 -57
  320. package/src/models/typed-event-emitter.ts +246 -246
  321. package/src/oidc/authorize.ts +279 -279
  322. package/src/oidc/error.ts +33 -33
  323. package/src/oidc/index.ts +33 -33
  324. package/src/oidc/register.ts +163 -163
  325. package/src/oidc/tokenRefresher.ts +184 -184
  326. package/src/oidc/validate.ts +265 -265
  327. package/src/randomstring.ts +103 -103
  328. package/src/realtime-callbacks.ts +191 -191
  329. package/src/receipt-accumulator.ts +189 -189
  330. package/src/rendezvous/RendezvousChannel.ts +48 -48
  331. package/src/rendezvous/RendezvousCode.ts +25 -25
  332. package/src/rendezvous/RendezvousError.ts +26 -26
  333. package/src/rendezvous/RendezvousFailureReason.ts +49 -49
  334. package/src/rendezvous/RendezvousIntent.ts +20 -20
  335. package/src/rendezvous/RendezvousTransport.ts +58 -58
  336. package/src/rendezvous/channels/MSC4108SecureChannel.ts +270 -270
  337. package/src/rendezvous/channels/index.ts +17 -17
  338. package/src/rendezvous/index.ts +25 -25
  339. package/src/rendezvous/transports/index.ts +17 -17
  340. package/src/rust-crypto/CrossSigningIdentity.ts +195 -195
  341. package/src/rust-crypto/OutgoingRequestsManager.ts +170 -170
  342. package/src/rust-crypto/device-converter.ts +128 -128
  343. package/src/rust-crypto/secret-storage.ts +60 -60
  344. package/src/service-types.ts +20 -20
  345. package/src/store/local-storage-events-emitter.ts +46 -46
  346. package/src/sync-accumulator.ts +779 -779
  347. package/src/thread-utils.ts +31 -31
  348. package/src/types.ts +59 -59
  349. package/src/utils/decryptAESSecretStorageItem.ts +54 -54
  350. package/src/utils/encryptAESSecretStorageItem.ts +73 -73
  351. package/src/utils/internal/deriveKeys.ts +63 -63
  352. package/src/utils/roomVersion.ts +35 -35
  353. package/src/version-support.ts +50 -50
  354. package/src/webrtc/audioContext.ts +44 -44
  355. package/src/webrtc/callEventTypes.ts +101 -101
  356. package/src/webrtc/stats/callFeedStatsReporter.ts +91 -91
  357. package/src/webrtc/stats/callStatsReportGatherer.ts +219 -219
  358. package/src/webrtc/stats/callStatsReportSummary.ts +30 -30
  359. package/src/webrtc/stats/connectionStats.ts +47 -47
  360. package/src/webrtc/stats/connectionStatsBuilder.ts +28 -28
  361. package/src/webrtc/stats/connectionStatsReportBuilder.ts +140 -140
  362. package/src/webrtc/stats/groupCallStats.ts +93 -93
  363. package/src/webrtc/stats/media/mediaSsrcHandler.ts +57 -57
  364. package/src/webrtc/stats/media/mediaTrackHandler.ts +70 -70
  365. package/src/webrtc/stats/media/mediaTrackStats.ts +176 -176
  366. package/src/webrtc/stats/media/mediaTrackStatsHandler.ts +90 -90
  367. package/src/webrtc/stats/statsReport.ts +133 -133
  368. package/src/webrtc/stats/statsReportEmitter.ts +49 -49
  369. package/src/webrtc/stats/trackStatsBuilder.ts +207 -207
  370. package/src/webrtc/stats/transportStats.ts +26 -26
  371. package/src/webrtc/stats/transportStatsBuilder.ts +48 -48
  372. package/src/webrtc/stats/valueFormatter.ts +27 -27
  373. package/src/xrpl/identity.ts +245 -0
  374. package/src/xrpl/trust.ts +64 -0
  375. package/src/xrpl/verification.ts +284 -0
@@ -1,449 +1,476 @@
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
+ }
459
+
460
+ /**
461
+ * Subset of AccountDataEvents, excluding events specified in https://spec.matrix.org/v1.17/client-server-api/#server-behaviour-12
462
+ */
463
+ export type WritableAccountDataEvents = Exclude<AccountDataEvents, "m.fully_read" | "m.push_rules">;
464
+
465
+ /**
466
+ * Mapped type from event type to content type for all specified global events encrypted by secret storage.
467
+ *
468
+ * See https://spec.matrix.org/v1.13/client-server-api/#msecret_storagev1aes-hmac-sha2-1
469
+ */
470
+ export interface SecretStorageAccountDataEvents {
471
+ "m.megolm_backup.v1": SecretInfo;
472
+ "m.cross_signing.master": SecretInfo;
473
+ "m.cross_signing.self_signing": SecretInfo;
474
+ "m.cross_signing.user_signing": SecretInfo;
475
+ "org.matrix.msc3814": SecretInfo;
476
+ }