zapo-js 0.1.1 → 0.2.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 (589) hide show
  1. package/README.md +20 -4
  2. package/dist/appstate/WaAppStateCrypto.js +19 -26
  3. package/dist/appstate/WaAppStateSyncClient.js +293 -181
  4. package/dist/appstate/WaAppStateSyncResponseParser.js +16 -5
  5. package/dist/appstate/constants.js +4 -3
  6. package/dist/appstate/{store/sqlite.js → encoding.js} +13 -8
  7. package/dist/appstate/index.js +8 -6
  8. package/dist/appstate/utils.js +9 -34
  9. package/dist/auth/WaAuthClient.js +43 -61
  10. package/dist/auth/flow/WaAuthCredentialsFlow.js +22 -15
  11. package/dist/auth/index.js +1 -8
  12. package/dist/auth/pairing/WaPairingCodeCrypto.js +6 -4
  13. package/dist/auth/pairing/WaPairingFlow.js +34 -26
  14. package/dist/auth/pairing/WaQrFlow.js +37 -24
  15. package/dist/client/WaClient.js +275 -324
  16. package/dist/client/WaClientFactory.js +500 -133
  17. package/dist/client/connection/WaConnectionManager.js +301 -0
  18. package/dist/client/connection/WaKeyShareCoordinator.js +63 -0
  19. package/dist/client/connection/WaReceiptQueue.js +51 -0
  20. package/dist/client/coordinators/WaAppStateMutationCoordinator.js +471 -0
  21. package/dist/client/coordinators/WaBusinessCoordinator.js +241 -0
  22. package/dist/client/coordinators/WaGroupCoordinator.js +30 -16
  23. package/dist/client/coordinators/WaIncomingNodeCoordinator.js +21 -27
  24. package/dist/client/coordinators/WaMessageDispatchCoordinator.js +439 -701
  25. package/dist/client/coordinators/WaPassiveTasksCoordinator.js +74 -31
  26. package/dist/client/coordinators/WaPrivacyCoordinator.js +134 -0
  27. package/dist/client/coordinators/WaProfileCoordinator.js +212 -0
  28. package/dist/client/coordinators/WaRetryCoordinator.js +242 -57
  29. package/dist/client/coordinators/WaStreamControlCoordinator.js +18 -11
  30. package/dist/client/coordinators/WaTrustedContactTokenCoordinator.js +166 -0
  31. package/dist/client/dirty.js +74 -48
  32. package/dist/client/events/chat.js +4 -3
  33. package/dist/client/events/devices.js +72 -0
  34. package/dist/client/events/group.js +62 -47
  35. package/dist/client/events/identity.js +22 -0
  36. package/dist/client/events/privacy-token.js +39 -0
  37. package/dist/client/history-sync.js +94 -63
  38. package/dist/client/incoming.js +60 -27
  39. package/dist/client/mailbox.js +24 -23
  40. package/dist/client/messages.js +107 -31
  41. package/dist/client/messaging/fanout.js +199 -0
  42. package/dist/client/messaging/key-protocol.js +130 -0
  43. package/dist/client/messaging/participants.js +193 -0
  44. package/dist/client/persistence/WriteBehindPersistence.js +129 -0
  45. package/dist/client/tokens/cs-token.js +50 -0
  46. package/dist/client/tokens/tc-token.js +25 -0
  47. package/dist/crypto/core/hkdf.js +3 -8
  48. package/dist/crypto/core/index.js +2 -5
  49. package/dist/crypto/core/keys.js +6 -7
  50. package/dist/crypto/core/nonce.js +2 -0
  51. package/dist/crypto/core/primitives.js +12 -23
  52. package/dist/crypto/core/random.js +26 -23
  53. package/dist/crypto/curves/Ed25519.js +7 -8
  54. package/dist/crypto/curves/X25519.js +38 -22
  55. package/dist/crypto/index.js +1 -3
  56. package/dist/crypto/math/constants.js +13 -36
  57. package/dist/crypto/math/edwards.js +171 -44
  58. package/dist/crypto/math/fe.js +706 -0
  59. package/dist/crypto/math/mod.js +10 -3
  60. package/dist/esm/appstate/WaAppStateCrypto.js +7 -14
  61. package/dist/esm/appstate/WaAppStateSyncClient.js +284 -172
  62. package/dist/esm/appstate/WaAppStateSyncResponseParser.js +17 -6
  63. package/dist/esm/appstate/constants.js +3 -2
  64. package/dist/esm/appstate/{store/sqlite.js → encoding.js} +13 -8
  65. package/dist/esm/appstate/index.js +2 -2
  66. package/dist/esm/appstate/utils.js +8 -30
  67. package/dist/esm/auth/WaAuthClient.js +43 -61
  68. package/dist/esm/auth/flow/WaAuthCredentialsFlow.js +22 -15
  69. package/dist/esm/auth/index.js +0 -3
  70. package/dist/esm/auth/pairing/WaPairingCodeCrypto.js +6 -4
  71. package/dist/esm/auth/pairing/WaPairingFlow.js +28 -20
  72. package/dist/esm/auth/pairing/WaQrFlow.js +37 -24
  73. package/dist/esm/client/WaClient.js +275 -324
  74. package/dist/esm/client/WaClientFactory.js +501 -134
  75. package/dist/esm/client/connection/WaConnectionManager.js +297 -0
  76. package/dist/esm/client/connection/WaKeyShareCoordinator.js +59 -0
  77. package/dist/esm/client/connection/WaReceiptQueue.js +47 -0
  78. package/dist/esm/client/coordinators/WaAppStateMutationCoordinator.js +467 -0
  79. package/dist/esm/client/coordinators/WaBusinessCoordinator.js +238 -0
  80. package/dist/esm/client/coordinators/WaGroupCoordinator.js +23 -9
  81. package/dist/esm/client/coordinators/WaIncomingNodeCoordinator.js +21 -27
  82. package/dist/esm/client/coordinators/WaMessageDispatchCoordinator.js +443 -705
  83. package/dist/esm/client/coordinators/WaPassiveTasksCoordinator.js +74 -31
  84. package/dist/esm/client/coordinators/WaPrivacyCoordinator.js +131 -0
  85. package/dist/esm/client/coordinators/WaProfileCoordinator.js +209 -0
  86. package/dist/esm/client/coordinators/WaRetryCoordinator.js +244 -59
  87. package/dist/esm/client/coordinators/WaStreamControlCoordinator.js +19 -12
  88. package/dist/esm/client/coordinators/WaTrustedContactTokenCoordinator.js +162 -0
  89. package/dist/esm/client/dirty.js +69 -43
  90. package/dist/esm/client/events/chat.js +4 -3
  91. package/dist/esm/client/events/devices.js +68 -0
  92. package/dist/esm/client/events/group.js +53 -39
  93. package/dist/esm/client/events/identity.js +19 -0
  94. package/dist/esm/client/events/privacy-token.js +36 -0
  95. package/dist/esm/client/history-sync.js +91 -60
  96. package/dist/esm/client/incoming.js +61 -28
  97. package/dist/esm/client/mailbox.js +24 -23
  98. package/dist/esm/client/messages.js +108 -32
  99. package/dist/esm/client/messaging/fanout.js +196 -0
  100. package/dist/esm/client/messaging/key-protocol.js +127 -0
  101. package/dist/esm/client/messaging/participants.js +190 -0
  102. package/dist/esm/client/persistence/WriteBehindPersistence.js +125 -0
  103. package/dist/esm/client/tokens/cs-token.js +46 -0
  104. package/dist/esm/client/tokens/tc-token.js +18 -0
  105. package/dist/esm/crypto/core/hkdf.js +3 -8
  106. package/dist/esm/crypto/core/index.js +2 -3
  107. package/dist/esm/crypto/core/keys.js +3 -4
  108. package/dist/esm/crypto/core/nonce.js +2 -0
  109. package/dist/esm/crypto/core/primitives.js +12 -22
  110. package/dist/esm/crypto/core/random.js +25 -23
  111. package/dist/esm/crypto/curves/Ed25519.js +4 -5
  112. package/dist/esm/crypto/curves/X25519.js +35 -19
  113. package/dist/esm/crypto/index.js +0 -1
  114. package/dist/esm/crypto/math/constants.js +12 -35
  115. package/dist/esm/crypto/math/edwards.js +174 -47
  116. package/dist/esm/crypto/math/fe.js +691 -0
  117. package/dist/esm/crypto/math/mod.js +10 -1
  118. package/dist/esm/index.js +1 -1
  119. package/dist/esm/infra/log/ConsoleLogger.js +18 -17
  120. package/dist/esm/infra/log/PinoLogger.js +15 -9
  121. package/dist/esm/infra/log/types.js +11 -1
  122. package/dist/esm/infra/perf/BackgroundQueue.js +478 -0
  123. package/dist/esm/infra/perf/BoundedTaskQueue.js +16 -18
  124. package/dist/esm/infra/perf/PromiseDedup.js +20 -0
  125. package/dist/esm/infra/perf/SharedExclusiveGate.js +109 -0
  126. package/dist/esm/infra/perf/StoreLock.js +77 -0
  127. package/dist/esm/media/WaMediaCrypto.js +96 -16
  128. package/dist/esm/media/WaMediaTransferClient.js +251 -91
  129. package/dist/esm/media/conn.js +10 -6
  130. package/dist/esm/media/constants.js +6 -2
  131. package/dist/esm/message/WaMessageClient.js +30 -32
  132. package/dist/esm/message/ack.js +6 -6
  133. package/dist/esm/message/addon-crypto.js +59 -0
  134. package/dist/esm/message/content.js +195 -9
  135. package/dist/esm/message/icdc.js +76 -0
  136. package/dist/esm/message/incoming.js +129 -122
  137. package/dist/esm/message/index.js +2 -0
  138. package/dist/esm/message/phash.js +3 -1
  139. package/dist/esm/message/reporting-token.js +425 -0
  140. package/dist/esm/message/use-case-secret.js +49 -0
  141. package/dist/esm/protocol/appstate.js +27 -0
  142. package/dist/esm/protocol/browser.js +10 -18
  143. package/dist/esm/protocol/constants.js +6 -3
  144. package/dist/esm/protocol/defaults.js +6 -0
  145. package/dist/esm/protocol/index.js +2 -11
  146. package/dist/esm/protocol/jid.js +133 -52
  147. package/dist/esm/protocol/media.js +3 -3
  148. package/dist/esm/protocol/message.js +61 -1
  149. package/dist/esm/protocol/nodes.js +4 -0
  150. package/dist/esm/protocol/notification.js +3 -1
  151. package/dist/esm/protocol/privacy-token.js +17 -0
  152. package/dist/esm/protocol/privacy.js +55 -0
  153. package/dist/esm/protocol/stream.js +26 -1
  154. package/dist/esm/protocol/usync.js +11 -0
  155. package/dist/esm/retry/codec.js +216 -0
  156. package/dist/esm/retry/constants.js +1 -1
  157. package/dist/esm/retry/index.js +3 -2
  158. package/dist/esm/retry/parse.js +88 -86
  159. package/dist/esm/retry/replay.js +54 -51
  160. package/dist/esm/retry/tracker.js +94 -0
  161. package/dist/esm/signal/api/SignalDeviceSyncApi.js +276 -92
  162. package/dist/esm/signal/api/SignalDigestSyncApi.js +17 -8
  163. package/dist/esm/signal/api/SignalIdentitySyncApi.js +67 -37
  164. package/dist/esm/signal/api/SignalMissingPreKeysSyncApi.js +86 -67
  165. package/dist/esm/signal/api/SignalRotateKeyApi.js +4 -2
  166. package/dist/esm/signal/api/SignalSessionSyncApi.js +36 -34
  167. package/dist/esm/signal/api/result-map.js +10 -0
  168. package/dist/esm/signal/constants.js +0 -4
  169. package/dist/esm/signal/crypto/WaAdvSignature.js +13 -9
  170. package/dist/esm/signal/{store/sqlite.js → encoding.js} +93 -60
  171. package/dist/esm/signal/group/SenderKeyChain.js +28 -23
  172. package/dist/esm/signal/group/SenderKeyCodec.js +5 -6
  173. package/dist/esm/signal/group/SenderKeyManager.js +144 -115
  174. package/dist/esm/signal/index.js +2 -0
  175. package/dist/esm/signal/registration/keygen.js +6 -2
  176. package/dist/esm/signal/registration/utils.js +1 -0
  177. package/dist/esm/signal/session/SignalProtocol.js +164 -53
  178. package/dist/esm/signal/session/SignalRatchet.js +24 -15
  179. package/dist/esm/signal/session/SignalSession.js +14 -9
  180. package/dist/esm/signal/session/resolver.js +221 -0
  181. package/dist/esm/store/contracts/privacy-token.store.js +1 -0
  182. package/dist/esm/store/createStore.js +100 -188
  183. package/dist/esm/store/index.js +1 -10
  184. package/dist/esm/store/locks/appstate.lock.js +26 -0
  185. package/dist/esm/store/locks/auth.lock.js +15 -0
  186. package/dist/esm/store/locks/contact.lock.js +20 -0
  187. package/dist/esm/store/locks/device-list.lock.js +20 -0
  188. package/dist/esm/store/locks/message.lock.js +21 -0
  189. package/dist/esm/store/locks/participants.lock.js +20 -0
  190. package/dist/esm/store/locks/privacy-token.lock.js +18 -0
  191. package/dist/esm/store/locks/retry.lock.js +29 -0
  192. package/dist/esm/store/locks/sender-key.lock.js +52 -0
  193. package/dist/esm/store/locks/signal.lock.js +63 -0
  194. package/dist/esm/store/locks/thread.lock.js +21 -0
  195. package/dist/esm/store/noop.store.js +4 -7
  196. package/dist/esm/store/providers/memory/appstate.store.js +38 -16
  197. package/dist/esm/store/providers/memory/contact.store.js +5 -0
  198. package/dist/esm/store/providers/memory/device-list.store.js +12 -34
  199. package/dist/esm/store/providers/memory/message.store.js +11 -5
  200. package/dist/esm/store/providers/memory/participants.store.js +1 -8
  201. package/dist/esm/store/providers/memory/privacy-token.store.js +43 -0
  202. package/dist/esm/store/providers/memory/retry.store.js +77 -2
  203. package/dist/esm/store/providers/memory/sender-key.store.js +11 -8
  204. package/dist/esm/store/providers/memory/signal.store.js +47 -18
  205. package/dist/esm/store/providers/memory/thread.store.js +5 -0
  206. package/dist/esm/transport/WaComms.js +28 -24
  207. package/dist/esm/transport/WaWebSocket.js +115 -18
  208. package/dist/esm/transport/binary/constants.js +0 -30
  209. package/dist/esm/transport/binary/decoder.js +8 -8
  210. package/dist/esm/transport/binary/encoder.js +10 -9
  211. package/dist/esm/transport/binary/index.js +0 -1
  212. package/dist/esm/transport/index.js +1 -0
  213. package/dist/esm/transport/keepalive/WaKeepAlive.js +2 -8
  214. package/dist/esm/transport/node/WaNodeOrchestrator.js +25 -21
  215. package/dist/esm/transport/node/WaNodeTransport.js +0 -3
  216. package/dist/esm/transport/node/builders/{accountSync.js → account-sync.js} +16 -36
  217. package/dist/esm/transport/node/builders/business.js +129 -0
  218. package/dist/esm/transport/node/builders/global.js +370 -0
  219. package/dist/esm/transport/node/builders/index.js +7 -3
  220. package/dist/esm/transport/node/builders/message.js +63 -230
  221. package/dist/esm/transport/node/builders/pairing.js +2 -27
  222. package/dist/esm/transport/node/builders/privacy-token.js +41 -0
  223. package/dist/esm/transport/node/builders/privacy.js +48 -0
  224. package/dist/esm/transport/node/builders/profile.js +70 -0
  225. package/dist/esm/transport/node/builders/retry.js +10 -22
  226. package/dist/esm/transport/node/builders/usync.js +45 -0
  227. package/dist/esm/transport/node/helpers.js +125 -5
  228. package/dist/esm/transport/node/usync.js +5 -0
  229. package/dist/esm/transport/node/xml.js +35 -14
  230. package/dist/esm/transport/noise/WaClientPayload.js +10 -10
  231. package/dist/esm/transport/noise/WaFrameCodec.js +48 -33
  232. package/dist/esm/transport/noise/WaNoiseCert.js +4 -7
  233. package/dist/esm/transport/noise/WaNoiseSession.js +77 -29
  234. package/dist/esm/transport/noise/WaNoiseSocket.js +8 -4
  235. package/dist/esm/transport/proxy.js +27 -0
  236. package/dist/esm/transport/stream/parse.js +17 -48
  237. package/dist/esm/util/bytes.js +67 -45
  238. package/dist/esm/util/coercion.js +6 -14
  239. package/dist/esm/util/index.js +5 -0
  240. package/dist/esm/util/primitives.js +40 -14
  241. package/dist/index.js +7 -1
  242. package/dist/infra/log/ConsoleLogger.js +18 -17
  243. package/dist/infra/log/PinoLogger.js +15 -9
  244. package/dist/infra/log/types.js +12 -0
  245. package/dist/infra/perf/BackgroundQueue.js +482 -0
  246. package/dist/infra/perf/BoundedTaskQueue.js +16 -18
  247. package/dist/infra/perf/PromiseDedup.js +24 -0
  248. package/dist/infra/perf/SharedExclusiveGate.js +113 -0
  249. package/dist/infra/perf/StoreLock.js +81 -0
  250. package/dist/media/WaMediaCrypto.js +95 -15
  251. package/dist/media/WaMediaTransferClient.js +284 -91
  252. package/dist/media/conn.js +10 -6
  253. package/dist/media/constants.js +6 -2
  254. package/dist/message/WaMessageClient.js +31 -33
  255. package/dist/message/ack.js +6 -6
  256. package/dist/message/addon-crypto.js +65 -0
  257. package/dist/message/content.js +198 -9
  258. package/dist/message/icdc.js +81 -0
  259. package/dist/message/incoming.js +127 -120
  260. package/dist/message/index.js +2 -0
  261. package/dist/message/phash.js +3 -1
  262. package/dist/message/reporting-token.js +429 -0
  263. package/dist/message/use-case-secret.js +55 -0
  264. package/dist/protocol/appstate.js +28 -1
  265. package/dist/protocol/browser.js +10 -18
  266. package/dist/protocol/constants.js +26 -1
  267. package/dist/protocol/defaults.js +6 -0
  268. package/dist/protocol/index.js +23 -42
  269. package/dist/protocol/jid.js +140 -52
  270. package/dist/protocol/media.js +3 -3
  271. package/dist/protocol/message.js +62 -2
  272. package/dist/protocol/nodes.js +4 -0
  273. package/dist/protocol/notification.js +3 -1
  274. package/dist/protocol/privacy-token.js +20 -0
  275. package/dist/protocol/privacy.js +58 -0
  276. package/dist/protocol/stream.js +27 -2
  277. package/dist/protocol/usync.js +14 -0
  278. package/dist/retry/codec.js +220 -0
  279. package/dist/retry/constants.js +1 -1
  280. package/dist/retry/index.js +7 -5
  281. package/dist/retry/parse.js +88 -85
  282. package/dist/retry/replay.js +52 -49
  283. package/dist/retry/tracker.js +97 -0
  284. package/dist/signal/api/SignalDeviceSyncApi.js +273 -89
  285. package/dist/signal/api/SignalDigestSyncApi.js +17 -8
  286. package/dist/signal/api/SignalIdentitySyncApi.js +66 -36
  287. package/dist/signal/api/SignalMissingPreKeysSyncApi.js +82 -63
  288. package/dist/signal/api/SignalRotateKeyApi.js +4 -2
  289. package/dist/signal/api/SignalSessionSyncApi.js +36 -34
  290. package/dist/signal/api/result-map.js +13 -0
  291. package/dist/signal/constants.js +1 -5
  292. package/dist/signal/crypto/WaAdvSignature.js +11 -7
  293. package/dist/signal/{store/sqlite.js → encoding.js} +94 -61
  294. package/dist/signal/group/SenderKeyChain.js +27 -22
  295. package/dist/signal/group/SenderKeyCodec.js +5 -6
  296. package/dist/signal/group/SenderKeyManager.js +144 -115
  297. package/dist/signal/index.js +15 -1
  298. package/dist/signal/registration/keygen.js +6 -2
  299. package/dist/signal/registration/utils.js +1 -0
  300. package/dist/signal/session/SignalProtocol.js +164 -53
  301. package/dist/signal/session/SignalRatchet.js +24 -15
  302. package/dist/signal/session/SignalSession.js +14 -9
  303. package/dist/signal/session/resolver.js +224 -0
  304. package/dist/store/contracts/privacy-token.store.js +2 -0
  305. package/dist/store/createStore.js +100 -188
  306. package/dist/store/index.js +15 -33
  307. package/dist/store/locks/appstate.lock.js +29 -0
  308. package/dist/store/locks/auth.lock.js +18 -0
  309. package/dist/store/locks/contact.lock.js +23 -0
  310. package/dist/store/locks/device-list.lock.js +23 -0
  311. package/dist/store/locks/message.lock.js +24 -0
  312. package/dist/store/locks/participants.lock.js +23 -0
  313. package/dist/store/locks/privacy-token.lock.js +21 -0
  314. package/dist/store/locks/retry.lock.js +32 -0
  315. package/dist/store/locks/sender-key.lock.js +55 -0
  316. package/dist/store/locks/signal.lock.js +66 -0
  317. package/dist/store/locks/thread.lock.js +24 -0
  318. package/dist/store/noop.store.js +4 -7
  319. package/dist/store/providers/memory/appstate.store.js +36 -14
  320. package/dist/store/providers/memory/contact.store.js +5 -0
  321. package/dist/store/providers/memory/device-list.store.js +12 -34
  322. package/dist/store/providers/memory/message.store.js +11 -5
  323. package/dist/store/providers/memory/participants.store.js +1 -8
  324. package/dist/store/providers/memory/privacy-token.store.js +47 -0
  325. package/dist/store/providers/memory/retry.store.js +77 -2
  326. package/dist/store/providers/memory/sender-key.store.js +14 -11
  327. package/dist/store/providers/memory/signal.store.js +54 -25
  328. package/dist/store/providers/memory/thread.store.js +5 -0
  329. package/dist/transport/WaComms.js +30 -26
  330. package/dist/transport/WaWebSocket.js +148 -18
  331. package/dist/transport/binary/constants.js +1 -31
  332. package/dist/transport/binary/decoder.js +8 -8
  333. package/dist/transport/binary/encoder.js +10 -9
  334. package/dist/transport/binary/index.js +0 -4
  335. package/dist/transport/index.js +7 -1
  336. package/dist/transport/keepalive/WaKeepAlive.js +1 -7
  337. package/dist/transport/node/WaNodeOrchestrator.js +25 -21
  338. package/dist/transport/node/WaNodeTransport.js +0 -3
  339. package/dist/transport/node/builders/{accountSync.js → account-sync.js} +15 -35
  340. package/dist/transport/node/builders/business.js +137 -0
  341. package/dist/transport/node/builders/global.js +375 -0
  342. package/dist/transport/node/builders/index.js +29 -17
  343. package/dist/transport/node/builders/message.js +64 -236
  344. package/dist/transport/node/builders/pairing.js +2 -29
  345. package/dist/transport/node/builders/privacy-token.js +46 -0
  346. package/dist/transport/node/builders/privacy.js +55 -0
  347. package/dist/transport/node/builders/profile.js +78 -0
  348. package/dist/transport/node/builders/retry.js +9 -21
  349. package/dist/transport/node/builders/usync.js +49 -0
  350. package/dist/transport/node/helpers.js +131 -4
  351. package/dist/transport/node/usync.js +8 -0
  352. package/dist/transport/node/xml.js +35 -14
  353. package/dist/transport/noise/WaClientPayload.js +13 -13
  354. package/dist/transport/noise/WaFrameCodec.js +47 -32
  355. package/dist/transport/noise/WaNoiseCert.js +5 -8
  356. package/dist/transport/noise/WaNoiseSession.js +77 -29
  357. package/dist/transport/noise/WaNoiseSocket.js +8 -4
  358. package/dist/transport/proxy.js +34 -0
  359. package/dist/transport/stream/parse.js +20 -52
  360. package/dist/types/appstate/WaAppStateCrypto.d.ts +0 -1
  361. package/dist/types/appstate/WaAppStateSyncClient.d.ts +5 -2
  362. package/dist/types/appstate/constants.d.ts +1 -0
  363. package/dist/types/appstate/encoding.d.ts +7 -0
  364. package/dist/types/appstate/index.d.ts +3 -3
  365. package/dist/types/appstate/utils.d.ts +0 -3
  366. package/dist/types/auth/WaAuthClient.d.ts +10 -12
  367. package/dist/types/auth/flow/WaAuthCredentialsFlow.d.ts +1 -1
  368. package/dist/types/auth/index.d.ts +0 -4
  369. package/dist/types/auth/pairing/WaQrFlow.d.ts +1 -1
  370. package/dist/types/auth/types.d.ts +7 -9
  371. package/dist/types/client/WaClient.d.ts +42 -25
  372. package/dist/types/client/WaClientFactory.d.ts +33 -26
  373. package/dist/types/client/connection/WaConnectionManager.d.ts +66 -0
  374. package/dist/types/client/connection/WaKeyShareCoordinator.d.ts +14 -0
  375. package/dist/types/client/connection/WaReceiptQueue.d.ts +13 -0
  376. package/dist/types/client/coordinators/WaAppStateMutationCoordinator.d.ts +46 -0
  377. package/dist/types/client/coordinators/WaBusinessCoordinator.d.ts +57 -0
  378. package/dist/types/client/coordinators/WaIncomingNodeCoordinator.d.ts +3 -2
  379. package/dist/types/client/coordinators/WaMessageDispatchCoordinator.d.ts +29 -38
  380. package/dist/types/client/coordinators/WaPassiveTasksCoordinator.d.ts +4 -0
  381. package/dist/types/client/coordinators/WaPrivacyCoordinator.d.ts +26 -0
  382. package/dist/types/client/coordinators/WaProfileCoordinator.d.ts +36 -0
  383. package/dist/types/client/coordinators/WaRetryCoordinator.d.ts +8 -0
  384. package/dist/types/client/coordinators/WaStreamControlCoordinator.d.ts +3 -2
  385. package/dist/types/client/coordinators/WaTrustedContactTokenCoordinator.d.ts +45 -0
  386. package/dist/types/client/dirty.d.ts +1 -0
  387. package/dist/types/client/events/devices.d.ts +20 -0
  388. package/dist/types/client/events/group.d.ts +2 -1
  389. package/dist/types/client/events/identity.d.ts +9 -0
  390. package/dist/types/client/events/privacy-token.d.ts +7 -0
  391. package/dist/types/client/history-sync.d.ts +9 -6
  392. package/dist/types/client/incoming.d.ts +3 -1
  393. package/dist/types/client/index.d.ts +1 -1
  394. package/dist/types/client/mailbox.d.ts +3 -5
  395. package/dist/types/client/messages.d.ts +1 -2
  396. package/dist/types/client/messaging/fanout.d.ts +14 -0
  397. package/dist/types/client/messaging/key-protocol.d.ts +18 -0
  398. package/dist/types/client/messaging/participants.d.ts +13 -0
  399. package/dist/types/client/persistence/WriteBehindPersistence.d.ts +34 -0
  400. package/dist/types/client/tokens/cs-token.d.ts +10 -0
  401. package/dist/types/client/tokens/tc-token.d.ts +5 -0
  402. package/dist/types/client/types.d.ts +75 -4
  403. package/dist/types/crypto/core/hkdf.d.ts +0 -6
  404. package/dist/types/crypto/core/index.d.ts +2 -3
  405. package/dist/types/crypto/core/nonce.d.ts +2 -0
  406. package/dist/types/crypto/core/primitives.d.ts +0 -1
  407. package/dist/types/crypto/core/random.d.ts +2 -7
  408. package/dist/types/crypto/index.d.ts +0 -1
  409. package/dist/types/crypto/math/constants.d.ts +4 -2
  410. package/dist/types/crypto/math/fe.d.ts +30 -0
  411. package/dist/types/crypto/math/mod.d.ts +0 -2
  412. package/dist/types/crypto/math/types.d.ts +11 -4
  413. package/dist/types/index.d.ts +5 -3
  414. package/dist/types/infra/log/ConsoleLogger.d.ts +2 -1
  415. package/dist/types/infra/log/PinoLogger.d.ts +1 -1
  416. package/dist/types/infra/log/types.d.ts +1 -0
  417. package/dist/types/infra/perf/BackgroundQueue.d.ts +58 -0
  418. package/dist/types/infra/perf/BoundedTaskQueue.d.ts +1 -1
  419. package/dist/types/infra/perf/PromiseDedup.d.ts +4 -0
  420. package/dist/types/infra/perf/SharedExclusiveGate.d.ts +17 -0
  421. package/dist/types/infra/perf/StoreLock.d.ts +10 -0
  422. package/dist/types/media/WaMediaCrypto.d.ts +3 -2
  423. package/dist/types/media/WaMediaTransferClient.d.ts +16 -15
  424. package/dist/types/media/constants.d.ts +1 -1
  425. package/dist/types/media/index.d.ts +1 -1
  426. package/dist/types/media/types.d.ts +15 -2
  427. package/dist/types/message/addon-crypto.d.ts +25 -0
  428. package/dist/types/message/content.d.ts +8 -0
  429. package/dist/types/message/icdc.d.ts +13 -0
  430. package/dist/types/message/index.d.ts +2 -0
  431. package/dist/types/message/reporting-token.d.ts +18 -0
  432. package/dist/types/message/types.d.ts +45 -6
  433. package/dist/types/message/use-case-secret.d.ts +20 -0
  434. package/dist/types/protocol/appstate.d.ts +47 -0
  435. package/dist/types/protocol/constants.d.ts +8 -3
  436. package/dist/types/protocol/defaults.d.ts +6 -0
  437. package/dist/types/protocol/index.d.ts +2 -11
  438. package/dist/types/protocol/jid.d.ts +22 -5
  439. package/dist/types/protocol/message.d.ts +60 -0
  440. package/dist/types/protocol/nodes.d.ts +4 -0
  441. package/dist/types/protocol/notification.d.ts +2 -0
  442. package/dist/types/protocol/privacy-token.d.ts +17 -0
  443. package/dist/types/protocol/privacy.d.ts +75 -0
  444. package/dist/types/protocol/stream.d.ts +30 -0
  445. package/dist/types/protocol/usync.d.ts +11 -0
  446. package/dist/types/retry/codec.d.ts +3 -0
  447. package/dist/types/retry/index.d.ts +4 -3
  448. package/dist/types/retry/parse.d.ts +5 -2
  449. package/dist/types/retry/replay.d.ts +0 -4
  450. package/dist/types/retry/tracker.d.ts +20 -0
  451. package/dist/types/retry/types.d.ts +10 -4
  452. package/dist/types/signal/api/SignalDeviceSyncApi.d.ts +15 -2
  453. package/dist/types/signal/api/SignalDigestSyncApi.d.ts +6 -0
  454. package/dist/types/signal/api/SignalIdentitySyncApi.d.ts +2 -0
  455. package/dist/types/signal/api/SignalRotateKeyApi.d.ts +4 -5
  456. package/dist/types/signal/api/SignalSessionSyncApi.d.ts +8 -6
  457. package/dist/types/signal/api/result-map.d.ts +1 -0
  458. package/dist/types/signal/constants.d.ts +0 -3
  459. package/dist/types/signal/{store/sqlite.d.ts → encoding.d.ts} +3 -3
  460. package/dist/types/signal/group/SenderKeyCodec.d.ts +4 -6
  461. package/dist/types/signal/group/SenderKeyManager.d.ts +10 -5
  462. package/dist/types/signal/index.d.ts +3 -0
  463. package/dist/types/signal/session/SignalProtocol.d.ts +19 -4
  464. package/dist/types/signal/session/resolver.d.ts +22 -0
  465. package/dist/types/store/contracts/appstate.store.d.ts +4 -1
  466. package/dist/types/store/contracts/contact.store.d.ts +1 -0
  467. package/dist/types/store/contracts/device-list.store.d.ts +0 -3
  468. package/dist/types/store/contracts/message.store.d.ts +1 -0
  469. package/dist/types/store/contracts/participants.store.d.ts +0 -1
  470. package/dist/types/store/contracts/privacy-token.store.d.ts +16 -0
  471. package/dist/types/store/contracts/retry.store.d.ts +7 -0
  472. package/dist/types/store/contracts/sender-key.store.d.ts +0 -1
  473. package/dist/types/store/contracts/signal.store.d.ts +13 -0
  474. package/dist/types/store/contracts/thread.store.d.ts +1 -0
  475. package/dist/types/store/createStore.d.ts +1 -1
  476. package/dist/types/store/index.d.ts +5 -13
  477. package/dist/types/store/locks/appstate.lock.d.ts +3 -0
  478. package/dist/types/store/locks/auth.lock.d.ts +3 -0
  479. package/dist/types/store/locks/contact.lock.d.ts +3 -0
  480. package/dist/types/store/locks/device-list.lock.d.ts +2 -0
  481. package/dist/types/store/locks/message.lock.d.ts +3 -0
  482. package/dist/types/store/locks/participants.lock.d.ts +2 -0
  483. package/dist/types/store/locks/privacy-token.lock.d.ts +2 -0
  484. package/dist/types/store/locks/retry.lock.d.ts +2 -0
  485. package/dist/types/store/locks/sender-key.lock.d.ts +3 -0
  486. package/dist/types/store/locks/signal.lock.d.ts +3 -0
  487. package/dist/types/store/locks/thread.lock.d.ts +3 -0
  488. package/dist/types/store/providers/memory/appstate.store.d.ts +3 -1
  489. package/dist/types/store/providers/memory/contact.store.d.ts +1 -0
  490. package/dist/types/store/providers/memory/device-list.store.d.ts +0 -3
  491. package/dist/types/store/providers/memory/message.store.d.ts +1 -0
  492. package/dist/types/store/providers/memory/participants.store.d.ts +0 -1
  493. package/dist/types/store/providers/memory/privacy-token.store.d.ts +13 -0
  494. package/dist/types/store/providers/memory/retry.store.d.ts +8 -0
  495. package/dist/types/store/providers/memory/sender-key.store.d.ts +0 -1
  496. package/dist/types/store/providers/memory/signal.store.d.ts +8 -1
  497. package/dist/types/store/providers/memory/thread.store.d.ts +1 -0
  498. package/dist/types/store/types.d.ts +49 -58
  499. package/dist/types/transport/WaWebSocket.d.ts +3 -1
  500. package/dist/types/transport/binary/constants.d.ts +0 -30
  501. package/dist/types/transport/binary/index.d.ts +0 -1
  502. package/dist/types/transport/index.d.ts +2 -1
  503. package/dist/types/transport/keepalive/WaKeepAlive.d.ts +0 -1
  504. package/dist/types/transport/node/WaNodeOrchestrator.d.ts +3 -4
  505. package/dist/types/transport/node/WaNodeTransport.d.ts +0 -9
  506. package/dist/types/transport/node/builders/business.d.ts +29 -0
  507. package/dist/types/transport/node/builders/global.d.ts +102 -0
  508. package/dist/types/transport/node/builders/group.d.ts +4 -6
  509. package/dist/types/transport/node/builders/index.d.ts +7 -3
  510. package/dist/types/transport/node/builders/message.d.ts +20 -30
  511. package/dist/types/transport/node/builders/pairing.d.ts +0 -2
  512. package/dist/types/transport/node/builders/privacy-token.d.ts +9 -0
  513. package/dist/types/transport/node/builders/privacy.d.ts +7 -0
  514. package/dist/types/transport/node/builders/profile.d.ts +8 -0
  515. package/dist/types/transport/node/builders/retry.d.ts +2 -5
  516. package/dist/types/transport/node/builders/usync.d.ts +21 -0
  517. package/dist/types/transport/node/helpers.d.ts +13 -0
  518. package/dist/types/transport/node/usync.d.ts +2 -0
  519. package/dist/types/transport/noise/WaFrameCodec.d.ts +3 -0
  520. package/dist/types/transport/noise/WaNoiseSession.d.ts +4 -2
  521. package/dist/types/transport/noise/WaNoiseSocket.d.ts +4 -2
  522. package/dist/types/transport/proxy.d.ts +6 -0
  523. package/dist/types/transport/stream/parse.d.ts +0 -1
  524. package/dist/types/transport/types.d.ts +18 -1
  525. package/dist/types/util/bytes.d.ts +5 -0
  526. package/dist/types/util/index.d.ts +5 -0
  527. package/dist/types/util/primitives.d.ts +2 -0
  528. package/dist/util/bytes.js +72 -46
  529. package/dist/util/coercion.js +6 -14
  530. package/dist/util/index.js +23 -0
  531. package/dist/util/primitives.js +42 -14
  532. package/package.json +52 -9
  533. package/proto/index.js +1 -1
  534. package/dist/crypto/core/constants.js +0 -4
  535. package/dist/crypto/core/encoding.js +0 -29
  536. package/dist/esm/crypto/core/constants.js +0 -1
  537. package/dist/esm/crypto/core/encoding.js +0 -25
  538. package/dist/esm/retry/outbound.js +0 -83
  539. package/dist/esm/store/providers/sqlite/BaseSqliteStore.js +0 -37
  540. package/dist/esm/store/providers/sqlite/appstate.store.js +0 -169
  541. package/dist/esm/store/providers/sqlite/auth.store.js +0 -176
  542. package/dist/esm/store/providers/sqlite/connection.js +0 -240
  543. package/dist/esm/store/providers/sqlite/contact.store.js +0 -61
  544. package/dist/esm/store/providers/sqlite/device-list.store.js +0 -155
  545. package/dist/esm/store/providers/sqlite/message.store.js +0 -119
  546. package/dist/esm/store/providers/sqlite/migrations.js +0 -347
  547. package/dist/esm/store/providers/sqlite/participants.store.js +0 -85
  548. package/dist/esm/store/providers/sqlite/retry.store.js +0 -144
  549. package/dist/esm/store/providers/sqlite/sender-key.store.js +0 -203
  550. package/dist/esm/store/providers/sqlite/signal.store.js +0 -353
  551. package/dist/esm/store/providers/sqlite/thread.store.js +0 -72
  552. package/dist/esm/util/base64.js +0 -18
  553. package/dist/esm/util/signal-address.js +0 -5
  554. package/dist/retry/outbound.js +0 -88
  555. package/dist/store/providers/sqlite/BaseSqliteStore.js +0 -41
  556. package/dist/store/providers/sqlite/appstate.store.js +0 -173
  557. package/dist/store/providers/sqlite/auth.store.js +0 -180
  558. package/dist/store/providers/sqlite/connection.js +0 -276
  559. package/dist/store/providers/sqlite/contact.store.js +0 -65
  560. package/dist/store/providers/sqlite/device-list.store.js +0 -159
  561. package/dist/store/providers/sqlite/message.store.js +0 -123
  562. package/dist/store/providers/sqlite/migrations.js +0 -350
  563. package/dist/store/providers/sqlite/participants.store.js +0 -89
  564. package/dist/store/providers/sqlite/retry.store.js +0 -148
  565. package/dist/store/providers/sqlite/sender-key.store.js +0 -207
  566. package/dist/store/providers/sqlite/signal.store.js +0 -357
  567. package/dist/store/providers/sqlite/thread.store.js +0 -76
  568. package/dist/types/appstate/store/sqlite.d.ts +0 -21
  569. package/dist/types/crypto/core/constants.d.ts +0 -1
  570. package/dist/types/crypto/core/encoding.d.ts +0 -11
  571. package/dist/types/retry/outbound.d.ts +0 -4
  572. package/dist/types/store/providers/sqlite/BaseSqliteStore.d.ts +0 -12
  573. package/dist/types/store/providers/sqlite/appstate.store.d.ts +0 -15
  574. package/dist/types/store/providers/sqlite/auth.store.d.ts +0 -10
  575. package/dist/types/store/providers/sqlite/connection.d.ts +0 -10
  576. package/dist/types/store/providers/sqlite/contact.store.d.ts +0 -10
  577. package/dist/types/store/providers/sqlite/device-list.store.d.ts +0 -18
  578. package/dist/types/store/providers/sqlite/message.store.d.ts +0 -11
  579. package/dist/types/store/providers/sqlite/migrations.d.ts +0 -3
  580. package/dist/types/store/providers/sqlite/participants.store.d.ts +0 -13
  581. package/dist/types/store/providers/sqlite/retry.store.d.ts +0 -16
  582. package/dist/types/store/providers/sqlite/sender-key.store.d.ts +0 -25
  583. package/dist/types/store/providers/sqlite/signal.store.d.ts +0 -46
  584. package/dist/types/store/providers/sqlite/thread.store.d.ts +0 -11
  585. package/dist/types/util/base64.d.ts +0 -4
  586. package/dist/types/util/signal-address.d.ts +0 -2
  587. package/dist/util/base64.js +0 -24
  588. package/dist/util/signal-address.js +0 -8
  589. /package/dist/types/transport/node/builders/{accountSync.d.ts → account-sync.d.ts} +0 -0
@@ -11,6 +11,66 @@ export declare const WA_MESSAGE_TYPES: Readonly<{
11
11
  readonly ACK_TYPE_ERROR: "error";
12
12
  readonly ACK_CLASS_ERROR: "error";
13
13
  readonly ACK_CLASS_MESSAGE: "message";
14
+ readonly RECEIPT_TYPE_DELIVERY: "delivery";
15
+ readonly RECEIPT_TYPE_SENDER: "sender";
16
+ readonly RECEIPT_TYPE_INACTIVE: "inactive";
17
+ readonly RECEIPT_TYPE_READ: "read";
18
+ readonly RECEIPT_TYPE_READ_SELF: "read-self";
19
+ readonly RECEIPT_TYPE_PLAYED: "played";
20
+ readonly RECEIPT_TYPE_PLAYED_SELF: "played-self";
21
+ readonly RECEIPT_TYPE_HISTORY_SYNC: "hist_sync";
14
22
  readonly RECEIPT_TYPE_PEER: "peer_msg";
23
+ readonly RECEIPT_TYPE_SERVER_ERROR: "server-error";
24
+ readonly RECEIPT_TYPE_RETRY: "retry";
15
25
  }>;
16
26
  export declare const WA_RETRYABLE_ACK_CODES: readonly ["408", "429", "500", "503"];
27
+ export declare const WA_STANZA_MSG_TYPES: Readonly<{
28
+ readonly TEXT: "text";
29
+ readonly MEDIA: "media";
30
+ readonly MEDIA_NOTIFY: "medianotify";
31
+ readonly PAY: "pay";
32
+ readonly POLL: "poll";
33
+ readonly REACTION: "reaction";
34
+ readonly EVENT: "event";
35
+ }>;
36
+ export declare const WA_EDIT_ATTRS: Readonly<{
37
+ readonly MESSAGE_EDIT: "1";
38
+ readonly PIN_IN_CHAT: "2";
39
+ readonly SENDER_REVOKE: "7";
40
+ readonly ADMIN_REVOKE: "8";
41
+ }>;
42
+ export declare const WA_POLL_META_TYPES: Readonly<{
43
+ readonly CREATION: "creation";
44
+ readonly VOTE: "vote";
45
+ readonly RESULT_SNAPSHOT: "result_snapshot";
46
+ readonly EDIT: "edit";
47
+ }>;
48
+ export declare const WA_EVENT_META_TYPES: Readonly<{
49
+ readonly CREATION: "creation";
50
+ readonly RESPONSE: "response";
51
+ readonly EDIT: "edit";
52
+ }>;
53
+ export declare const WA_ENC_MEDIA_TYPES: Readonly<{
54
+ readonly IMAGE: "image";
55
+ readonly VIDEO: "video";
56
+ readonly PTV: "ptv";
57
+ readonly AUDIO: "audio";
58
+ readonly PTT: "ptt";
59
+ readonly LOCATION: "location";
60
+ readonly LIVE_LOCATION: "livelocation";
61
+ readonly VCARD: "vcard";
62
+ readonly CONTACT_ARRAY: "contact_array";
63
+ readonly DOCUMENT: "document";
64
+ readonly URL: "url";
65
+ readonly GIF: "gif";
66
+ readonly STICKER: "sticker";
67
+ readonly STICKER_PACK: "sticker_pack";
68
+ readonly LIST: "list";
69
+ readonly LIST_RESPONSE: "list_response";
70
+ readonly BUTTON: "button";
71
+ readonly BUTTON_RESPONSE: "buttons_response";
72
+ readonly ORDER: "order";
73
+ readonly PRODUCT: "product";
74
+ readonly NATIVE_FLOW_RESPONSE: "native_flow_response";
75
+ readonly GROUP_HISTORY: "group_history";
76
+ }>;
@@ -23,6 +23,8 @@ export declare const WA_NODE_TAGS: Readonly<{
23
23
  readonly KEY_FETCH: "key_fetch";
24
24
  readonly LIST: "list";
25
25
  readonly USER: "user";
26
+ readonly CONTACT: "contact";
27
+ readonly LID: "lid";
26
28
  readonly PICTURE: "picture";
27
29
  readonly PRIVACY: "privacy";
28
30
  readonly PARTICIPATING: "participating";
@@ -76,6 +78,8 @@ export declare const WA_XMLNS: Readonly<{
76
78
  readonly PRIVACY: "privacy";
77
79
  readonly BLOCKLIST: "blocklist";
78
80
  readonly USYNC: "usync";
81
+ readonly BUSINESS: "w:biz";
82
+ readonly STATUS: "status";
79
83
  readonly GROUPS: "w:g2";
80
84
  readonly NEWSLETTER: "newsletter";
81
85
  readonly XMPP_PING: "urn:xmpp:ping";
@@ -1,5 +1,7 @@
1
1
  export declare const WA_NOTIFICATION_TYPES: Readonly<{
2
2
  readonly GROUP: "w:gp2";
3
+ readonly ENCRYPT: "encrypt";
4
+ readonly DEVICES: "devices";
3
5
  }>;
4
6
  export declare const WA_GROUP_NOTIFICATION_TAGS: Readonly<{
5
7
  readonly REMOVE: "remove";
@@ -0,0 +1,17 @@
1
+ export declare const WA_PRIVACY_TOKEN_TYPES: Readonly<{
2
+ readonly TRUSTED_CONTACT: "trusted_contact";
3
+ }>;
4
+ export declare const WA_PRIVACY_TOKEN_TAGS: Readonly<{
5
+ readonly TOKENS: "tokens";
6
+ readonly TOKEN: "token";
7
+ readonly TC_TOKEN: "tctoken";
8
+ readonly CS_TOKEN: "cstoken";
9
+ }>;
10
+ export declare const WA_PRIVACY_TOKEN_NOTIFICATION_TYPE = "privacy_token";
11
+ export declare const WA_TC_TOKEN_DEFAULTS: Readonly<{
12
+ readonly DURATION_S: 604800;
13
+ readonly NUM_BUCKETS: 4;
14
+ readonly SENDER_DURATION_S: 604800;
15
+ readonly SENDER_NUM_BUCKETS: 4;
16
+ readonly MAX_DURATION_S: 15552000;
17
+ }>;
@@ -0,0 +1,75 @@
1
+ export declare const WA_PRIVACY_CATEGORIES: Readonly<{
2
+ readonly READ_RECEIPTS: "readreceipts";
3
+ readonly LAST_SEEN: "last";
4
+ readonly ONLINE: "online";
5
+ readonly PROFILE_PICTURE: "profile";
6
+ readonly ABOUT: "status";
7
+ readonly GROUP_ADD: "groupadd";
8
+ readonly CALL_ADD: "calladd";
9
+ readonly MESSAGES: "messages";
10
+ readonly DEFENSE_MODE: "defense";
11
+ }>;
12
+ export type WaPrivacyCategory = (typeof WA_PRIVACY_CATEGORIES)[keyof typeof WA_PRIVACY_CATEGORIES];
13
+ export declare const WA_PRIVACY_VALUES: Readonly<{
14
+ readonly ALL: "all";
15
+ readonly CONTACTS: "contacts";
16
+ readonly CONTACT_BLACKLIST: "contact_blacklist";
17
+ readonly NONE: "none";
18
+ readonly MATCH_LAST_SEEN: "match_last_seen";
19
+ readonly KNOWN: "known";
20
+ readonly OFF: "off";
21
+ readonly ON_STANDARD: "on_standard";
22
+ readonly ERROR: "error";
23
+ }>;
24
+ export type WaPrivacyValue = (typeof WA_PRIVACY_VALUES)[keyof typeof WA_PRIVACY_VALUES];
25
+ export declare const WA_PRIVACY_CATEGORY_TO_SETTING: Readonly<{
26
+ readonly readreceipts: "readReceipts";
27
+ readonly last: "lastSeen";
28
+ readonly online: "online";
29
+ readonly profile: "profilePicture";
30
+ readonly status: "about";
31
+ readonly groupadd: "groupAdd";
32
+ readonly calladd: "callAdd";
33
+ readonly messages: "messages";
34
+ readonly defense: "defenseMode";
35
+ }>;
36
+ export declare const WA_PRIVACY_SETTING_TO_CATEGORY: Readonly<{
37
+ readonly readReceipts: "readreceipts";
38
+ readonly lastSeen: "last";
39
+ readonly online: "online";
40
+ readonly profilePicture: "profile";
41
+ readonly about: "status";
42
+ readonly groupAdd: "groupadd";
43
+ readonly callAdd: "calladd";
44
+ readonly messages: "messages";
45
+ readonly defenseMode: "defense";
46
+ }>;
47
+ export type WaPrivacySettingName = keyof typeof WA_PRIVACY_SETTING_TO_CATEGORY;
48
+ export type WaPrivacyVisibility = 'all' | 'contacts' | 'contact_blacklist' | 'none';
49
+ export interface WaPrivacySettingValueMap {
50
+ readonly readReceipts: 'all' | 'none';
51
+ readonly lastSeen: WaPrivacyVisibility;
52
+ readonly online: 'all' | 'none' | 'match_last_seen';
53
+ readonly profilePicture: WaPrivacyVisibility;
54
+ readonly about: WaPrivacyVisibility;
55
+ readonly groupAdd: 'all' | 'contacts' | 'contact_blacklist';
56
+ readonly callAdd: 'all' | 'known' | 'contacts';
57
+ readonly messages: 'all' | 'contacts';
58
+ readonly defenseMode: 'off' | 'on_standard';
59
+ }
60
+ export declare const WA_PRIVACY_DISALLOWED_LIST_CATEGORIES: Readonly<{
61
+ readonly ABOUT: "status";
62
+ readonly GROUP_ADD: "groupadd";
63
+ readonly LAST_SEEN: "last";
64
+ readonly PROFILE_PICTURE: "profile";
65
+ }>;
66
+ type DisallowedCategoryToSetting = {
67
+ readonly [K in keyof typeof WA_PRIVACY_DISALLOWED_LIST_CATEGORIES]: (typeof WA_PRIVACY_CATEGORY_TO_SETTING)[(typeof WA_PRIVACY_DISALLOWED_LIST_CATEGORIES)[K]];
68
+ };
69
+ export type WaPrivacyDisallowedListSettingName = DisallowedCategoryToSetting[keyof DisallowedCategoryToSetting];
70
+ export declare const WA_PRIVACY_TAGS: Readonly<{
71
+ readonly CATEGORY: "category";
72
+ readonly LIST: "list";
73
+ readonly USER: "user";
74
+ }>;
75
+ export {};
@@ -49,6 +49,18 @@ export declare const WA_STREAM_SIGNALING: Readonly<{
49
49
  readonly FORCE_LOGIN_CODE: 515;
50
50
  readonly FORCE_LOGOUT_CODE: 516;
51
51
  }>;
52
+ export declare const WA_FAILURE_REASONS: Readonly<{
53
+ readonly GENERIC_FAILURE: 400;
54
+ readonly NOT_AUTHORIZED: 401;
55
+ readonly TEMP_BANNED: 402;
56
+ readonly LOCKED: 403;
57
+ readonly CLIENT_TOO_OLD: 405;
58
+ readonly BANNED: 406;
59
+ readonly BAD_USER_AGENT: 409;
60
+ readonly INTERNAL_SERVER_ERROR: 500;
61
+ readonly EXPERIMENTAL: 501;
62
+ readonly SERVICE_UNAVAILABLE: 503;
63
+ }>;
52
64
  export declare const WA_DISCONNECT_REASONS: Readonly<{
53
65
  readonly CLIENT_DISCONNECTED: "client_disconnected";
54
66
  readonly COMMS_STOPPED: "comms_stopped";
@@ -57,4 +69,22 @@ export declare const WA_DISCONNECT_REASONS: Readonly<{
57
69
  readonly STREAM_ERROR_ACK: "stream_error_ack";
58
70
  readonly STREAM_ERROR_XML_NOT_WELL_FORMED: "stream_error_xml_not_well_formed";
59
71
  readonly STREAM_ERROR_OTHER: "stream_error_other";
72
+ readonly STREAM_ERROR_FORCE_LOGIN: "stream_error_force_login";
73
+ readonly STREAM_ERROR_FORCE_LOGOUT: "stream_error_force_logout";
74
+ readonly FAILURE_LOCKED: "failure_locked";
75
+ readonly FAILURE_NOT_AUTHORIZED: "failure_not_authorized";
76
+ readonly FAILURE_BANNED: "failure_banned";
77
+ readonly FAILURE_CLIENT_TOO_OLD: "failure_client_too_old";
78
+ readonly FAILURE_BAD_USER_AGENT: "failure_bad_user_agent";
79
+ readonly FAILURE_SERVICE_UNAVAILABLE: "failure_service_unavailable";
80
+ readonly PRIMARY_IDENTITY_KEY_CHANGE: "primary_identity_key_change";
81
+ }>;
82
+ export declare const WA_CONNECTION_REASONS: Readonly<{
83
+ readonly CONNECTED: "connected";
84
+ readonly RECONNECTED: "reconnected";
60
85
  }>;
86
+ export type WaFailureReasonCode = (typeof WA_FAILURE_REASONS)[keyof typeof WA_FAILURE_REASONS];
87
+ export type WaStreamErrorCode = typeof WA_STREAM_SIGNALING.FORCE_LOGIN_CODE | typeof WA_STREAM_SIGNALING.FORCE_LOGOUT_CODE;
88
+ export type WaConnectionCode = WaFailureReasonCode | WaStreamErrorCode;
89
+ export type WaDisconnectReason = (typeof WA_DISCONNECT_REASONS)[keyof typeof WA_DISCONNECT_REASONS];
90
+ export type WaConnectionOpenReason = (typeof WA_CONNECTION_REASONS)[keyof typeof WA_CONNECTION_REASONS];
@@ -0,0 +1,11 @@
1
+ export declare const WA_USYNC_MODES: Readonly<{
2
+ readonly QUERY: "query";
3
+ }>;
4
+ export declare const WA_USYNC_CONTEXTS: Readonly<{
5
+ readonly INTERACTIVE: "interactive";
6
+ readonly NOTIFICATION: "notification";
7
+ }>;
8
+ export declare const WA_USYNC_DEFAULTS: Readonly<{
9
+ readonly INDEX: "0";
10
+ readonly LAST: "true";
11
+ }>;
@@ -0,0 +1,3 @@
1
+ import type { WaRetryReplayPayload } from './types';
2
+ export declare function encodeRetryReplayPayload(payload: WaRetryReplayPayload): Uint8Array;
3
+ export declare function decodeRetryReplayPayload(raw: Uint8Array): WaRetryReplayPayload;
@@ -1,7 +1,8 @@
1
1
  export { MAX_RETRY_ATTEMPTS, RETRY_KEYS_MIN_COUNT, RETRY_OUTBOUND_TTL_MS, RETRY_REASON, RETRY_RECEIPT_VERSION } from './constants';
2
2
  export type { WaRetryReasonCode } from './constants';
3
3
  export { mapRetryReasonFromError } from './reason';
4
- export { parseRetryReceiptRequest } from './parse';
5
- export type { WaParsedRetryRequest, WaRetryDecryptFailureContext, WaRetryEncryptedReplayPayload, WaRetryKey, WaRetryKeyBundle, WaRetryOpaqueNodeReplayPayload, WaRetryOutboundMessageRecord, WaRetryOutboundMode, WaRetryOutboundState, WaRetryPlaintextReplayPayload, WaRetryReceiptType, WaRetryReplayPayload, WaRetrySignedKey } from './types';
6
- export { decodeRetryReplayPayload, encodeRetryReplayPayload, pickRetryStateMax } from './outbound';
4
+ export { parseRetryReceiptRequest, pickRetryStateMax } from './parse';
5
+ export type { WaParsedRetryRequest, WaRetryDecryptFailureContext, WaRetryEncryptedReplayPayload, WaRetryKey, WaRetryKeyBundle, WaRetryOpaqueNodeReplayPayload, WaRetryOutboundMessageRecord, WaRetryOutboundMode, WaRetryOutboundState, WaRetryPlaintextReplayPayload, WaRetryReceiptType, WaRetryReplayPayload, WaRetryStoredReplayPayload, WaRetrySignedKey } from './types';
6
+ export { decodeRetryReplayPayload, encodeRetryReplayPayload } from './codec';
7
7
  export { WaRetryReplayService, type WaRetryReplayServiceOptions, type WaRetryResendResult } from './replay';
8
+ export { createOutboundRetryTracker, type OutboundRetryTrackHint, type OutboundRetryTracker } from './tracker';
@@ -1,3 +1,6 @@
1
- import type { WaParsedRetryRequest } from './types';
1
+ import type { WaParsedRetryRequest, WaRetryOutboundState } from './types';
2
2
  import type { BinaryNode } from '../transport/types';
3
- export declare function parseRetryReceiptRequest(node: BinaryNode): WaParsedRetryRequest | null;
3
+ export declare function parseRetryReceiptRequest(node: BinaryNode, options?: {
4
+ readonly expectedToJids?: readonly string[];
5
+ }): WaParsedRetryRequest | null;
6
+ export declare function pickRetryStateMax(left: WaRetryOutboundState, right: WaRetryOutboundState): WaRetryOutboundState;
@@ -22,9 +22,5 @@ export declare class WaRetryReplayService {
22
22
  private resendOpaquePayload;
23
23
  private maybeWrapGroupRetryPlaintextForSelfDevice;
24
24
  private isRequesterCurrentAccount;
25
- private get logger();
26
- private get messageClient();
27
- private get signalProtocol();
28
- private getCurrentSignedIdentity;
29
25
  private isOpaqueReplayCompatible;
30
26
  }
@@ -0,0 +1,20 @@
1
+ import type { Logger } from '../infra/log/types';
2
+ import type { WaMessagePublishResult } from '../message/types';
3
+ import type { WaRetryReplayPayload } from './types';
4
+ import type { WaRetryStore } from '../store/contracts/retry.store';
5
+ export type OutboundRetryTrackHint = {
6
+ readonly messageIdHint?: string;
7
+ readonly toJid?: string;
8
+ readonly type: string;
9
+ readonly replayPayload: WaRetryReplayPayload;
10
+ readonly participantJid?: string;
11
+ readonly recipientJid?: string;
12
+ readonly eligibleRequesterDeviceJids?: readonly string[];
13
+ };
14
+ export type OutboundRetryTracker = {
15
+ track(hint: OutboundRetryTrackHint, publish: () => Promise<WaMessagePublishResult>): Promise<WaMessagePublishResult>;
16
+ };
17
+ export declare function createOutboundRetryTracker(options: {
18
+ readonly retryStore: WaRetryStore;
19
+ readonly logger: Logger;
20
+ }): OutboundRetryTracker;
@@ -5,15 +5,16 @@ export type WaRetryOutboundState = 'pending' | 'delivered' | 'read' | 'played' |
5
5
  export interface WaRetryKey {
6
6
  readonly id: number;
7
7
  readonly publicKey: Uint8Array;
8
+ readonly signature?: Uint8Array;
8
9
  }
9
- export interface WaRetrySignedKey extends WaRetryKey {
10
+ export type WaRetrySignedKey = WaRetryKey & {
10
11
  readonly signature: Uint8Array;
11
- }
12
+ };
12
13
  export interface WaRetryKeyBundle {
13
14
  readonly identity: Uint8Array;
14
15
  readonly deviceIdentity?: Uint8Array;
15
16
  readonly key?: WaRetryKey;
16
- readonly skey: WaRetrySignedKey;
17
+ readonly skey: WaRetryKey;
17
18
  }
18
19
  export interface WaParsedRetryRequest {
19
20
  readonly type: WaRetryReceiptType;
@@ -21,6 +22,8 @@ export interface WaParsedRetryRequest {
21
22
  readonly from: string;
22
23
  readonly participant?: string;
23
24
  readonly recipient?: string;
25
+ readonly offline: boolean;
26
+ readonly isLid: boolean;
24
27
  readonly originalMsgId: string;
25
28
  readonly retryCount: number;
26
29
  readonly retryReason?: number;
@@ -55,14 +58,17 @@ export interface WaRetryOpaqueNodeReplayPayload {
55
58
  readonly node: Uint8Array;
56
59
  }
57
60
  export type WaRetryReplayPayload = WaRetryPlaintextReplayPayload | WaRetryEncryptedReplayPayload | WaRetryOpaqueNodeReplayPayload;
61
+ export type WaRetryStoredReplayPayload = Uint8Array | WaRetryReplayPayload;
58
62
  export interface WaRetryOutboundMessageRecord {
59
63
  readonly messageId: string;
60
64
  readonly toJid: string;
61
65
  readonly participantJid?: string;
62
66
  readonly recipientJid?: string;
67
+ readonly eligibleRequesterDeviceJids?: readonly string[];
68
+ readonly deliveredRequesterDeviceJids?: readonly string[];
63
69
  readonly messageType: string;
64
70
  readonly replayMode: WaRetryOutboundMode;
65
- readonly replayPayload: Uint8Array;
71
+ readonly replayPayload: WaRetryStoredReplayPayload;
66
72
  readonly state: WaRetryOutboundState;
67
73
  readonly createdAtMs: number;
68
74
  readonly updatedAtMs: number;
@@ -1,5 +1,6 @@
1
1
  import type { Logger } from '../../infra/log/types';
2
2
  import type { WaDeviceListStore } from '../../store/contracts/device-list.store';
3
+ import { type WaUsyncSidGenerator } from '../../transport/node/usync';
3
4
  import type { BinaryNode } from '../../transport/types';
4
5
  interface SignalDeviceSyncApiOptions {
5
6
  readonly logger: Logger;
@@ -7,6 +8,12 @@ interface SignalDeviceSyncApiOptions {
7
8
  readonly deviceListStore?: WaDeviceListStore;
8
9
  readonly defaultTimeoutMs?: number;
9
10
  readonly hostDomain?: string;
11
+ readonly generateSid?: WaUsyncSidGenerator;
12
+ }
13
+ export interface SignalLidSyncResult {
14
+ readonly phoneJid: string;
15
+ readonly lidJid: string | null;
16
+ readonly exists: boolean;
10
17
  }
11
18
  export declare class SignalDeviceSyncApi {
12
19
  private readonly logger;
@@ -14,18 +21,24 @@ export declare class SignalDeviceSyncApi {
14
21
  private readonly deviceListStore?;
15
22
  private readonly defaultTimeoutMs;
16
23
  private readonly hostDomain;
24
+ private readonly generateSid;
25
+ private readonly syncDedup;
17
26
  constructor(options: SignalDeviceSyncApiOptions);
18
27
  syncDeviceList(userJids: readonly string[], timeoutMs?: number): Promise<readonly {
19
28
  readonly jid: string;
20
29
  readonly deviceJids: readonly string[];
21
30
  }[]>;
31
+ private syncDeviceListInternal;
32
+ queryLidsByPhoneJids(phoneJids: readonly string[], timeoutMs?: number): Promise<readonly SignalLidSyncResult[]>;
22
33
  private collectUsersToQuery;
23
34
  private makeDeviceSyncRequest;
35
+ private makeLidSyncRequest;
24
36
  private parseDeviceSyncResponse;
37
+ private parseLidSyncResponse;
38
+ private buildLidSyncResult;
39
+ private parseLidSyncContactExists;
25
40
  private parseUserDeviceJids;
26
41
  private normalizeUsers;
27
42
  private normalizeUserJid;
28
- private toDeviceJid;
29
- private makeSid;
30
43
  }
31
44
  export {};
@@ -1,4 +1,5 @@
1
1
  import type { Logger } from '../../infra/log/types';
2
+ import type { RegistrationInfo, SignedPreKeyRecord } from '../types';
2
3
  import type { WaSignalStore } from '../../store/contracts/signal.store';
3
4
  import type { BinaryNode } from '../../transport/types';
4
5
  interface SignalDigestSyncApiOptions {
@@ -14,6 +15,10 @@ export interface SignalDigestValidationResult {
14
15
  readonly reason: 'ok' | 'missing_remote_digest' | 'unsupported_key_bundle_type' | 'missing_local_state' | 'registration_mismatch' | 'identity_mismatch' | 'signed_prekey_mismatch' | 'missing_local_prekey' | 'hash_mismatch';
15
16
  readonly preKeyCount: number;
16
17
  }
18
+ export interface SignalDigestPrefetchedLocalKeyBundle {
19
+ readonly registrationInfo: RegistrationInfo;
20
+ readonly signedPreKey: SignedPreKeyRecord;
21
+ }
17
22
  export declare class SignalDigestSyncApi {
18
23
  private readonly logger;
19
24
  private readonly query;
@@ -22,6 +27,7 @@ export declare class SignalDigestSyncApi {
22
27
  private readonly hostDomain;
23
28
  constructor(options: SignalDigestSyncApiOptions);
24
29
  validateLocalKeyBundle(timeoutMs?: number): Promise<SignalDigestValidationResult>;
30
+ validateLocalKeyBundle(prefetched?: SignalDigestPrefetchedLocalKeyBundle, timeoutMs?: number): Promise<SignalDigestValidationResult>;
25
31
  private parseDigestPayload;
26
32
  }
27
33
  export {};
@@ -19,8 +19,10 @@ export declare class SignalIdentitySyncApi {
19
19
  private readonly signalStore?;
20
20
  private readonly defaultTimeoutMs;
21
21
  private readonly hostDomain;
22
+ private readonly syncDedup;
22
23
  constructor(options: SignalIdentitySyncApiOptions);
23
24
  syncIdentityKeys(targetJids: readonly string[], timeoutMs?: number): Promise<readonly SignalIdentitySyncEntry[]>;
25
+ private syncIdentityKeysInternal;
24
26
  private parseIdentitySyncResponse;
25
27
  }
26
28
  export {};
@@ -7,16 +7,15 @@ interface SignalRotateKeyApiOptions {
7
7
  readonly signalStore: WaSignalStore;
8
8
  readonly defaultTimeoutMs?: number;
9
9
  }
10
- export interface SignalRotateKeyResult {
11
- readonly shouldDigestKey: boolean;
12
- readonly errorCode?: number;
13
- }
14
10
  export declare class SignalRotateKeyApi {
15
11
  private readonly logger;
16
12
  private readonly query;
17
13
  private readonly signalStore;
18
14
  private readonly defaultTimeoutMs;
19
15
  constructor(options: SignalRotateKeyApiOptions);
20
- rotateSignedPreKey(timeoutMs?: number): Promise<SignalRotateKeyResult>;
16
+ rotateSignedPreKey(timeoutMs?: number): Promise<{
17
+ shouldDigestKey: boolean;
18
+ errorCode?: number;
19
+ }>;
21
20
  }
22
21
  export {};
@@ -7,10 +7,6 @@ interface SignalSessionSyncApiOptions {
7
7
  readonly defaultTimeoutMs?: number;
8
8
  readonly hostDomain?: string;
9
9
  }
10
- interface SignalSessionSyncTarget {
11
- readonly jid: string;
12
- readonly reasonIdentity?: boolean;
13
- }
14
10
  export type SignalSessionKeyBundleResult = {
15
11
  readonly jid: string;
16
12
  readonly bundle: SignalPreKeyBundle;
@@ -26,12 +22,18 @@ export declare class SignalSessionSyncApi {
26
22
  private readonly defaultTimeoutMs;
27
23
  private readonly hostDomain;
28
24
  constructor(options: SignalSessionSyncApiOptions);
29
- fetchKeyBundle(target: SignalSessionSyncTarget, timeoutMs?: number): Promise<{
25
+ fetchKeyBundle(target: {
26
+ readonly jid: string;
27
+ readonly reasonIdentity?: boolean;
28
+ }, timeoutMs?: number): Promise<{
30
29
  readonly jid: string;
31
30
  readonly bundle: SignalPreKeyBundle;
32
31
  readonly deviceIdentity?: Uint8Array;
33
32
  }>;
34
- fetchKeyBundles(targets: readonly SignalSessionSyncTarget[], timeoutMs?: number): Promise<readonly SignalSessionKeyBundleResult[]>;
33
+ fetchKeyBundles(targets: readonly {
34
+ readonly jid: string;
35
+ readonly reasonIdentity?: boolean;
36
+ }[], timeoutMs?: number): Promise<readonly SignalSessionKeyBundleResult[]>;
35
37
  private parseFetchKeyBundleResponse;
36
38
  private parseUserKeyBundle;
37
39
  }
@@ -0,0 +1 @@
1
+ export declare function registerParsedResultByRawAndCanonicalKey<T>(parsedByRawKey: Map<string, T>, parsedByCanonicalKey: Map<string, T>, rawKey: string, canonicalKey: string, result: T, isPreferred: (value: T) => boolean): void;
@@ -1,9 +1,6 @@
1
1
  export declare const SIGNAL_VERSION = 3;
2
2
  export declare const SIGNAL_GROUP_VERSION = 3;
3
- export declare const SERIALIZED_PUB_KEY_PREFIX = 5;
4
- export declare const KEY_TYPE_CURVE25519 = 5;
5
3
  export declare const SIGNAL_MAC_SIZE = 8;
6
- export declare const SIGNATURE_SIZE = 64;
7
4
  export declare const MAX_PREV_SESSIONS = 40;
8
5
  export declare const MAX_UNUSED_KEYS = 2000;
9
6
  export declare const FUTURE_MESSAGES_MAX = 2000;
@@ -1,4 +1,4 @@
1
- import type { PreKeyRecord, RegistrationInfo, SenderKeyDistributionRecord, SenderKeyRecord, SignalAddress, SignalSessionRecord, SignedPreKeyRecord } from '../types';
1
+ import type { PreKeyRecord, RegistrationInfo, SenderKeyDistributionRecord, SenderKeyRecord, SignalAddress, SignalSessionRecord, SignedPreKeyRecord } from './types';
2
2
  export interface SignalAddressParts {
3
3
  readonly user: string;
4
4
  readonly server: string;
@@ -51,7 +51,7 @@ export interface SenderKeyDistributionRow extends Record<string, unknown> {
51
51
  readonly key_id: unknown;
52
52
  readonly timestamp_ms: unknown;
53
53
  }
54
- export interface SqliteCountRow extends Record<string, unknown> {
54
+ export interface StoreCountRow extends Record<string, unknown> {
55
55
  readonly count: unknown;
56
56
  }
57
57
  export declare function toSignalAddressParts(address: SignalAddress): SignalAddressParts;
@@ -68,5 +68,5 @@ export declare function decodeSignalSessionRecord(raw: unknown): SignalSessionRe
68
68
  export declare function encodeSenderKeyRecord(record: SenderKeyRecord): Uint8Array;
69
69
  export declare function decodeSenderKeyRecord(raw: unknown, groupId: string, sender: SignalAddress): SenderKeyRecord;
70
70
  export declare function decodeSenderKeyDistributionRow(row: SenderKeyDistributionRow): SenderKeyDistributionRecord;
71
- export declare function decodeSqliteCount(row: SqliteCountRow | null, field: string): number;
71
+ export declare function decodeStoreCount(row: StoreCountRow | null, field: string): number;
72
72
  export declare function decodeSignalRemoteIdentity(raw: unknown): Uint8Array;
@@ -1,14 +1,12 @@
1
- export interface ParsedDistributionPayload {
1
+ export declare function parseDistributionPayload(payload: Uint8Array): {
2
2
  readonly keyId: number;
3
3
  readonly iteration: number;
4
4
  readonly chainKey: Uint8Array;
5
5
  readonly signingPublicKey: Uint8Array;
6
- }
7
- export interface ParsedSenderKeyMessage {
6
+ };
7
+ export declare function parseSenderKeyMessage(versionContentMac: Uint8Array): {
8
8
  readonly keyId: number;
9
9
  readonly iteration: number;
10
10
  readonly ciphertext: Uint8Array;
11
11
  readonly versionContentMac: Uint8Array;
12
- }
13
- export declare function parseDistributionPayload(payload: Uint8Array): ParsedDistributionPayload;
14
- export declare function parseSenderKeyMessage(versionContentMac: Uint8Array): ParsedSenderKeyMessage;
12
+ };
@@ -10,13 +10,18 @@ interface GroupSenderKeyCiphertext {
10
10
  }
11
11
  export declare class SenderKeyManager {
12
12
  private readonly store;
13
+ private readonly senderLock;
13
14
  constructor(store: WaSenderKeyStore);
14
- createSenderKeyDistributionMessage(groupId: string, sender: SignalAddress): Promise<Proto.Message.ISenderKeyDistributionMessage>;
15
- filterParticipantsNeedingDistribution(groupId: string, sender: SignalAddress, participants: readonly SignalAddress[]): Promise<readonly SignalAddress[]>;
16
- markSenderKeyDistributed(groupId: string, sender: SignalAddress, participants: readonly SignalAddress[]): Promise<void>;
15
+ prepareGroupEncryption(groupId: string, sender: SignalAddress, plaintext: Uint8Array): Promise<{
16
+ readonly distributionMessage: Proto.Message.ISenderKeyDistributionMessage;
17
+ readonly ciphertext: GroupSenderKeyCiphertext;
18
+ readonly keyId: number;
19
+ }>;
20
+ filterParticipantsNeedingDistribution(groupId: string, senderKeyId: number, participants: readonly SignalAddress[]): Promise<readonly SignalAddress[]>;
21
+ markSenderKeyDistributed(groupId: string, senderKeyId: number, participants: readonly SignalAddress[]): Promise<void>;
17
22
  processSenderKeyDistributionPayload(groupId: string, sender: SignalAddress, payload: Uint8Array): Promise<SenderKeyRecord>;
18
- encryptGroupMessage(groupId: string, sender: SignalAddress, plaintext: Uint8Array): Promise<GroupSenderKeyCiphertext>;
19
23
  decryptGroupMessage(payload: GroupSenderKeyCiphertext): Promise<Uint8Array>;
20
- private ensureSenderKey;
24
+ private ensureSenderKeyInternal;
25
+ private runWithSenderLock;
21
26
  }
22
27
  export {};
@@ -1,4 +1,6 @@
1
1
  export { PreKeyRecord, RegistrationInfo, SenderKeyDistributionRecord, SenderKeyRecord, SignalAddress, SignalPreKeyBundle, SignedPreKeyRecord } from './types';
2
+ export type { SignalSessionRecord } from './types';
3
+ export { decodeSignalPreKeyRow, decodeSignalRegistrationRow, decodeSignalRemoteIdentity, decodeSignalSessionRecord, decodeSignalSignedPreKeyRow, decodeSenderKeyDistributionRow, decodeSenderKeyRecord, decodeStoreCount, encodeSenderKeyRecord, encodeSignalSessionRecord, toSignalAddressParts, type SenderKeyDistributionRow, type SenderKeyRow, type SignalAddressParts, type SignalIdentityRow, type SignalMetaRow, type SignalPreKeyRow, type SignalRegistrationRow, type SignalSessionRow, type SignalSignedPreKeyRow, type StoreCountRow } from './encoding';
2
4
  export { generatePreKeyPair, generateRegistrationId, generateRegistrationInfo, generateSignedPreKey } from './registration/keygen';
3
5
  export { buildPreKeyUploadIq, parsePreKeyUploadFailure } from './api/prekeys';
4
6
  export { SignalDigestSyncApi } from './api/SignalDigestSyncApi';
@@ -10,3 +12,4 @@ export { SignalSessionSyncApi } from './api/SignalSessionSyncApi';
10
12
  export { SenderKeyManager } from './group/SenderKeyManager';
11
13
  export { createAndStoreInitialKeys } from './registration/utils';
12
14
  export { SignalProtocol } from './session/SignalProtocol';
15
+ export { createSignalSessionResolver, type SignalSessionResolver } from './session/resolver';
@@ -1,22 +1,37 @@
1
1
  import type { Logger } from '../../infra/log/types';
2
2
  import type { SignalAddress, SignalPreKeyBundle, SignalSessionRecord } from '../types';
3
3
  import type { WaSignalStore } from '../../store/contracts/signal.store';
4
+ interface EstablishOutgoingSessionOptions {
5
+ readonly reuseExisting?: boolean;
6
+ }
4
7
  export declare class SignalProtocol {
5
8
  private readonly store;
6
9
  private readonly logger;
10
+ private readonly sessionMutationLock;
7
11
  constructor(store: WaSignalStore, logger?: Logger);
8
- hasSession(address: SignalAddress): Promise<boolean>;
9
- hasSessions(addresses: readonly SignalAddress[]): Promise<readonly boolean[]>;
10
- establishOutgoingSession(address: SignalAddress, remoteBundle: SignalPreKeyBundle): Promise<SignalSessionRecord>;
12
+ establishOutgoingSession(address: SignalAddress, remoteBundle: SignalPreKeyBundle, options?: EstablishOutgoingSessionOptions): Promise<SignalSessionRecord>;
11
13
  encryptMessage(address: SignalAddress, plaintext: Uint8Array, expectedIdentity?: Uint8Array): Promise<{
12
14
  readonly type: 'msg' | 'pkmsg';
13
15
  readonly ciphertext: Uint8Array;
14
16
  readonly baseKey: Uint8Array | null;
15
17
  }>;
18
+ encryptMessagesBatch(requests: readonly {
19
+ readonly address: SignalAddress;
20
+ readonly plaintext: Uint8Array;
21
+ readonly expectedIdentity?: Uint8Array;
22
+ }[], prefetchedSessions?: readonly {
23
+ readonly address: SignalAddress;
24
+ readonly session: SignalSessionRecord;
25
+ }[]): Promise<readonly {
26
+ readonly type: 'msg' | 'pkmsg';
27
+ readonly ciphertext: Uint8Array;
28
+ readonly baseKey: Uint8Array | null;
29
+ }[]>;
16
30
  decryptMessage(address: SignalAddress, envelope: {
17
31
  readonly type: 'msg' | 'pkmsg';
18
32
  readonly ciphertext: Uint8Array;
19
33
  }): Promise<Uint8Array>;
20
- private decryptMsgInternal;
34
+ private runWithAddressLock;
21
35
  private decryptPkMsg;
22
36
  }
37
+ export {};