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
@@ -2,14 +2,19 @@ import { EventEmitter } from 'node:events';
2
2
  import type { WaAppStateStoreData, WaAppStateSyncResult } from '../appstate/types';
3
3
  import type { WaAppStateSyncOptions } from '../appstate/types';
4
4
  import type { WaAppStateSyncClient } from '../appstate/WaAppStateSyncClient';
5
- import type { WaAuthCredentials } from '../auth/types';
5
+ import type { WaAppStateMutationCoordinator } from './coordinators/WaAppStateMutationCoordinator';
6
+ import type { WaBusinessCoordinator } from './coordinators/WaBusinessCoordinator';
6
7
  import type { WaGroupCoordinator } from './coordinators/WaGroupCoordinator';
7
8
  import type { WaMessageDispatchCoordinator } from './coordinators/WaMessageDispatchCoordinator';
8
- import type { WaClientEventMap, WaClientOptions, WaSendMessageOptions, WaIncomingNodeHandlerRegistration } from './types';
9
+ import type { WaPrivacyCoordinator } from './coordinators/WaPrivacyCoordinator';
10
+ import type { WaProfileCoordinator } from './coordinators/WaProfileCoordinator';
11
+ import type { WriteBehindDrainResult } from './persistence/WriteBehindPersistence';
12
+ import type { WaClientOptions, WaSendMessageOptions, WaClientEventMap, WaIncomingNodeHandlerRegistration } from './types';
9
13
  import type { Logger } from '../infra/log/types';
10
14
  import type { WaMediaTransferClient } from '../media/WaMediaTransferClient';
11
15
  import type { WaMessagePublishResult, WaSendMessageContent, WaSendReceiptInput } from '../message/types';
12
16
  import type { WaMessageClient } from '../message/WaMessageClient';
17
+ import type { SignalLidSyncResult } from '../signal/api/SignalDeviceSyncApi';
13
18
  import type { BinaryNode } from '../transport/types';
14
19
  export declare class WaClient extends EventEmitter {
15
20
  private readonly options;
@@ -18,6 +23,7 @@ export declare class WaClient extends EventEmitter {
18
23
  private readonly contactStore;
19
24
  private readonly messageStore;
20
25
  private readonly participantsStore;
26
+ private readonly privacyTokenStore;
21
27
  private readonly deviceListStore;
22
28
  private readonly retryStore;
23
29
  private readonly signalStore;
@@ -25,36 +31,45 @@ export declare class WaClient extends EventEmitter {
25
31
  private readonly threadStore;
26
32
  private readonly authClient;
27
33
  private readonly nodeOrchestrator;
28
- private readonly keepAlive;
29
34
  private readonly nodeTransport;
35
+ private readonly signalDeviceSync;
30
36
  readonly appStateSync: WaAppStateSyncClient;
37
+ readonly chatCoordinator: WaAppStateMutationCoordinator;
31
38
  private readonly incomingNode;
32
- private readonly passiveTasks;
33
39
  readonly mediaTransfer: WaMediaTransferClient;
34
40
  readonly messageDispatch: WaMessageDispatchCoordinator;
35
41
  readonly messageClient: WaMessageClient;
36
42
  readonly groupCoordinator: WaGroupCoordinator;
37
- private clockSkewMs;
38
- private mediaConnCache;
39
- private comms;
40
- private pairingReconnectPromise;
43
+ readonly privacyCoordinator: WaPrivacyCoordinator;
44
+ readonly profileCoordinator: WaProfileCoordinator;
45
+ readonly businessCoordinator: WaBusinessCoordinator;
46
+ private readonly passiveTasks;
47
+ private readonly keepAlive;
48
+ private readonly receiptQueue;
49
+ private readonly keyShareCoordinator;
50
+ private readonly connectionManager;
51
+ private readonly trustedContactToken;
52
+ private readonly writeBehind;
41
53
  private connectPromise;
42
- private readonly danglingReceipts;
43
- private readonly appStateKeyShareWaiters;
44
- private appStateKeyShareVersion;
45
- private appStateBootstrapKeyShareWaitDone;
54
+ private acceptingIncomingEvents;
55
+ private activeIncomingHandlers;
56
+ private readonly incomingHandlersDrainedWaiters;
46
57
  constructor(options: WaClientOptions, logger?: Logger);
47
58
  on<K extends keyof WaClientEventMap>(event: K, listener: WaClientEventMap[K]): this;
59
+ on(event: string | symbol, listener: (...args: unknown[]) => void): this;
48
60
  once<K extends keyof WaClientEventMap>(event: K, listener: WaClientEventMap[K]): this;
61
+ once(event: string | symbol, listener: (...args: unknown[]) => void): this;
49
62
  off<K extends keyof WaClientEventMap>(event: K, listener: WaClientEventMap[K]): this;
50
- emit<K extends keyof WaClientEventMap>(event: K, ...args: Parameters<WaClientEventMap[K]>): boolean;
63
+ off(event: string | symbol, listener: (...args: unknown[]) => void): this;
64
+ emit<K extends keyof WaClientEventMap>(event: K, payload: Parameters<WaClientEventMap[K]>[0]): boolean;
65
+ emit(event: string | symbol, ...args: unknown[]): boolean;
51
66
  getState(): {
52
67
  connected: boolean;
53
68
  registered: boolean;
54
69
  hasQr: boolean;
55
70
  hasPairingCode: boolean;
56
71
  };
57
- getCredentials(): WaAuthCredentials | null;
72
+ getCredentials(): import("../auth").WaAuthCredentials | null;
58
73
  getClockSkewMs(): number | null;
59
74
  sendNode(node: BinaryNode): Promise<void>;
60
75
  query(node: BinaryNode, timeoutMs?: number): Promise<BinaryNode>;
@@ -70,28 +85,30 @@ export declare class WaClient extends EventEmitter {
70
85
  private queryWithContext;
71
86
  private handleIncomingFrame;
72
87
  connect(): Promise<void>;
73
- private connectInternal;
74
- private scheduleReconnectAfterPairing;
75
- private reconnectAsRegisteredAfterPairing;
76
- private reconnectAsRegisteredAfterPairingInternal;
77
88
  disconnect(): Promise<void>;
78
89
  requestPairingCode(phoneNumber: string, shouldShowPushNotification?: boolean): Promise<string>;
79
90
  fetchPairingCountryCodeIso(): Promise<string>;
91
+ getLidsByPhoneNumbers(phoneNumbers: readonly string[]): Promise<readonly SignalLidSyncResult[]>;
80
92
  sendMessage(to: string, content: WaSendMessageContent, options?: WaSendMessageOptions): Promise<WaMessagePublishResult>;
81
93
  syncSignalSession(jid: string, reasonIdentity?: boolean): Promise<void>;
94
+ get chat(): WaAppStateMutationCoordinator;
95
+ get group(): WaGroupCoordinator;
96
+ get privacy(): WaPrivacyCoordinator;
97
+ get profile(): WaProfileCoordinator;
98
+ get business(): WaBusinessCoordinator;
82
99
  sendReceipt(input: WaSendReceiptInput): Promise<void>;
100
+ flushAppStateMutations(): Promise<void>;
101
+ flushWriteBehind(timeoutMs?: number): Promise<WriteBehindDrainResult>;
83
102
  exportAppState(): Promise<WaAppStateStoreData>;
84
103
  syncAppState(options?: WaAppStateSyncOptions): Promise<WaAppStateSyncResult>;
85
104
  private executeAppStateSync;
86
105
  private getBlockedAppStateCollections;
87
- private waitForAppStateKeyShare;
88
- private notifyAppStateKeyShareWaiters;
89
106
  private emitChatEventsFromAppStateSyncResult;
90
- private startCommsWithCredentials;
91
- private shouldQueueDanglingReceipt;
92
- private enqueueDanglingReceipt;
107
+ private handleNctSaltMutation;
93
108
  private clearStoredState;
109
+ private tryEnterIncomingHandler;
110
+ private leaveIncomingHandler;
111
+ private pauseIncomingEventsAndWaitDrain;
112
+ private notifyIncomingHandlersDrained;
94
113
  private handleError;
95
- private clearCommsBinding;
96
- private updateClockSkewFromSuccess;
97
114
  }
@@ -1,15 +1,23 @@
1
+ import type { WaAppStateSyncOptions, WaAppStateSyncResult } from '../appstate/types';
1
2
  import { WaAppStateSyncClient } from '../appstate/WaAppStateSyncClient';
2
3
  import { WaAuthClient } from '../auth/WaAuthClient';
4
+ import { WaConnectionManager } from './connection/WaConnectionManager';
5
+ import { WaKeyShareCoordinator } from './connection/WaKeyShareCoordinator';
6
+ import { WaReceiptQueue } from './connection/WaReceiptQueue';
7
+ import { WaAppStateMutationCoordinator } from './coordinators/WaAppStateMutationCoordinator';
8
+ import { type WaBusinessCoordinator } from './coordinators/WaBusinessCoordinator';
3
9
  import { type WaGroupCoordinator } from './coordinators/WaGroupCoordinator';
4
10
  import { WaIncomingNodeCoordinator } from './coordinators/WaIncomingNodeCoordinator';
5
11
  import { WaMessageDispatchCoordinator } from './coordinators/WaMessageDispatchCoordinator';
6
12
  import { WaPassiveTasksCoordinator } from './coordinators/WaPassiveTasksCoordinator';
13
+ import { type WaPrivacyCoordinator } from './coordinators/WaPrivacyCoordinator';
14
+ import { type WaProfileCoordinator } from './coordinators/WaProfileCoordinator';
7
15
  import { WaRetryCoordinator } from './coordinators/WaRetryCoordinator';
8
16
  import { type WaStreamControlHandler } from './coordinators/WaStreamControlCoordinator';
9
- import { buildMediaMessageContent } from './messages';
17
+ import { WaTrustedContactTokenCoordinator } from './coordinators/WaTrustedContactTokenCoordinator';
18
+ import { type WaMediaMessageOptions } from './messages';
10
19
  import type { WaClientEventMap, WaClientOptions, WaIncomingMessageEvent } from './types';
11
20
  import type { Logger } from '../infra/log/types';
12
- import type { WaMediaConn } from '../media/types';
13
21
  import { WaMediaTransferClient } from '../media/WaMediaTransferClient';
14
22
  import { WaMessageClient } from '../message/WaMessageClient';
15
23
  import { SignalDeviceSyncApi } from '../signal/api/SignalDeviceSyncApi';
@@ -24,19 +32,30 @@ import { WaKeepAlive } from '../transport/keepalive/WaKeepAlive';
24
32
  import { WaNodeOrchestrator } from '../transport/node/WaNodeOrchestrator';
25
33
  import { WaNodeTransport } from '../transport/node/WaNodeTransport';
26
34
  import type { BinaryNode } from '../transport/types';
27
- import type { WaComms } from '../transport/WaComms';
28
- type WaMediaMessageBuildOptions = Parameters<typeof buildMediaMessageContent>[0];
29
35
  interface WaClientBase {
30
36
  readonly options: Readonly<WaClientOptions>;
31
37
  readonly logger: Logger;
32
38
  readonly sessionStore: ReturnType<WaClientOptions['store']['session']>;
33
39
  }
40
+ interface WaClientBuildRuntime {
41
+ readonly sendNode: (node: BinaryNode) => Promise<void>;
42
+ readonly query: (node: BinaryNode, timeoutMs?: number) => Promise<BinaryNode>;
43
+ readonly queryWithContext: (context: string, node: BinaryNode, timeoutMs?: number, contextData?: Readonly<Record<string, unknown>>) => Promise<BinaryNode>;
44
+ readonly syncAppState: () => Promise<void>;
45
+ readonly syncAppStateWithOptions: (options?: WaAppStateSyncOptions) => Promise<WaAppStateSyncResult>;
46
+ readonly emitEvent: <K extends keyof WaClientEventMap>(event: K, ...args: Parameters<WaClientEventMap[K]>) => void;
47
+ readonly handleIncomingMessageEvent: (event: WaIncomingMessageEvent) => Promise<void>;
48
+ readonly handleError: (error: Error) => void;
49
+ readonly handleIncomingFrame: (frame: Uint8Array) => Promise<void>;
50
+ readonly clearStoredState: () => Promise<void>;
51
+ readonly resumeIncomingEvents: () => void;
52
+ }
34
53
  interface WaClientDependencies {
35
54
  readonly nodeTransport: WaNodeTransport;
36
55
  readonly nodeOrchestrator: WaNodeOrchestrator;
37
56
  readonly keepAlive: WaKeepAlive;
38
57
  readonly mediaTransfer: WaMediaTransferClient;
39
- readonly mediaMessageBuildOptions: WaMediaMessageBuildOptions;
58
+ readonly mediaMessageBuildOptions: WaMediaMessageOptions;
40
59
  readonly messageClient: WaMessageClient;
41
60
  readonly senderKeyManager: SenderKeyManager;
42
61
  readonly signalProtocol: SignalProtocol;
@@ -50,34 +69,22 @@ interface WaClientDependencies {
50
69
  readonly messageDispatch: WaMessageDispatchCoordinator;
51
70
  readonly retryCoordinator: WaRetryCoordinator;
52
71
  readonly appStateSync: WaAppStateSyncClient;
72
+ readonly chatCoordinator: WaAppStateMutationCoordinator;
53
73
  readonly streamControl: WaStreamControlHandler;
54
74
  readonly incomingNode: WaIncomingNodeCoordinator;
55
75
  readonly passiveTasks: WaPassiveTasksCoordinator;
56
76
  readonly groupCoordinator: WaGroupCoordinator;
57
- }
58
- export interface WaClientDependencyHost {
59
- readonly sendNode: (node: BinaryNode) => Promise<void>;
60
- readonly query: (node: BinaryNode, timeoutMs?: number) => Promise<BinaryNode>;
61
- readonly queryWithContext: (context: string, node: BinaryNode, timeoutMs?: number, contextData?: Readonly<Record<string, unknown>>) => Promise<BinaryNode>;
62
- readonly syncAppState: () => Promise<void>;
63
- readonly emitEvent: <K extends keyof WaClientEventMap>(event: K, ...args: Parameters<WaClientEventMap[K]>) => void;
64
- readonly handleIncomingMessageEvent: (event: WaIncomingMessageEvent) => Promise<void>;
65
- readonly handleError: (error: Error) => void;
66
- readonly scheduleReconnectAfterPairing: () => void;
67
- readonly updateClockSkewFromSuccess: (serverUnixSeconds: number) => void;
68
- readonly getComms: () => WaComms | null;
69
- readonly getMediaConnCache: () => WaMediaConn | null;
70
- readonly setMediaConnCache: (mediaConn: WaMediaConn | null) => void;
71
- readonly disconnect: () => Promise<void>;
72
- readonly clearStoredState: () => Promise<void>;
73
- readonly connect: () => Promise<void>;
74
- readonly shouldQueueDanglingReceipt: (node: BinaryNode, error: Error) => boolean;
75
- readonly enqueueDanglingReceipt: (node: BinaryNode) => void;
76
- readonly takeDanglingReceipts: () => BinaryNode[];
77
+ readonly privacyCoordinator: WaPrivacyCoordinator;
78
+ readonly profileCoordinator: WaProfileCoordinator;
79
+ readonly businessCoordinator: WaBusinessCoordinator;
80
+ readonly receiptQueue: WaReceiptQueue;
81
+ readonly keyShareCoordinator: WaKeyShareCoordinator;
82
+ readonly connectionManager: WaConnectionManager;
83
+ readonly trustedContactToken: WaTrustedContactTokenCoordinator;
77
84
  }
78
85
  export declare function resolveWaClientBase(options: WaClientOptions, logger: Logger): WaClientBase;
79
86
  export declare function buildWaClientDependencies(input: {
80
87
  readonly base: WaClientBase;
81
- readonly host: WaClientDependencyHost;
88
+ readonly runtime: WaClientBuildRuntime;
82
89
  }): WaClientDependencies;
83
90
  export {};
@@ -0,0 +1,66 @@
1
+ import type { WaAuthClient } from '../../auth/WaAuthClient';
2
+ import type { WaPassiveTasksCoordinator } from '../coordinators/WaPassiveTasksCoordinator';
3
+ import type { WaClientOptions } from '../types';
4
+ import type { Logger } from '../../infra/log/types';
5
+ import type { WaMediaConn } from '../../media/types';
6
+ import type { WaKeepAlive } from '../../transport/keepalive/WaKeepAlive';
7
+ import type { WaNodeOrchestrator } from '../../transport/node/WaNodeOrchestrator';
8
+ import type { WaNodeTransport } from '../../transport/node/WaNodeTransport';
9
+ import { WaComms } from '../../transport/WaComms';
10
+ interface WaConnectionManagerOptions {
11
+ readonly logger: Logger;
12
+ readonly options: Readonly<WaClientOptions>;
13
+ readonly authClient: WaAuthClient;
14
+ readonly keepAlive: WaKeepAlive;
15
+ readonly nodeOrchestrator: WaNodeOrchestrator;
16
+ readonly nodeTransport: WaNodeTransport;
17
+ readonly getPassiveTasks: () => WaPassiveTasksCoordinator | null;
18
+ readonly clearStoredCredentials: () => Promise<void>;
19
+ }
20
+ export declare class WaConnectionManager {
21
+ private readonly logger;
22
+ private readonly options;
23
+ private readonly authClient;
24
+ private readonly keepAlive;
25
+ private readonly nodeOrchestrator;
26
+ private readonly nodeTransport;
27
+ private readonly getPassiveTasks;
28
+ private readonly clearStoredCredentialsCallback;
29
+ private comms;
30
+ private clockSkewMs;
31
+ private mediaConnCache;
32
+ private connectPromise;
33
+ private pairingReconnectPromise;
34
+ private frameHandler;
35
+ private pendingComms;
36
+ private lifecycleGeneration;
37
+ private lifecycleQueue;
38
+ private lastConnectWasNewLogin;
39
+ constructor(options: WaConnectionManagerOptions);
40
+ connect(frameHandler: (frame: Uint8Array) => Promise<void>): Promise<void>;
41
+ scheduleReconnectAfterPairing(): void;
42
+ disconnect(): Promise<void>;
43
+ clearStoredCredentials(): Promise<void>;
44
+ isConnected(): boolean;
45
+ wasNewLogin(): boolean;
46
+ getComms(): WaComms | null;
47
+ getClockSkewMs(): number | null;
48
+ getMediaConnCache(): WaMediaConn | null;
49
+ setMediaConnCache(value: WaMediaConn | null): void;
50
+ updateClockSkewFromSuccess(serverUnixSeconds: number): void;
51
+ private connectInternal;
52
+ private reconnectAsRegisteredAfterPairing;
53
+ private reconnectAsRegisteredAfterPairingInternal;
54
+ private disconnectInternal;
55
+ private startCommsWithCredentials;
56
+ private clearCommsBinding;
57
+ private stopCommsQuietly;
58
+ private nextLifecycleGeneration;
59
+ private runLifecycleOperation;
60
+ private invalidatePendingComms;
61
+ private isLifecycleCurrent;
62
+ private assertLifecycleCurrent;
63
+ private createLifecycleSupersededError;
64
+ private isLifecycleSupersededError;
65
+ }
66
+ export {};
@@ -0,0 +1,14 @@
1
+ export declare class WaKeyShareCoordinator {
2
+ private readonly waiters;
3
+ private version;
4
+ private bootstrapDone;
5
+ constructor();
6
+ waitForShare(timeoutMs: number): Promise<boolean>;
7
+ notifyReceived(): void;
8
+ notifyDisconnected(): void;
9
+ isBootstrapDone(): boolean;
10
+ markBootstrapDone(): void;
11
+ getVersion(): number;
12
+ hasWaiters(): boolean;
13
+ private releaseWaiters;
14
+ }
@@ -0,0 +1,13 @@
1
+ import type { BinaryNode } from '../../transport/types';
2
+ export declare class WaReceiptQueue {
3
+ private readonly maxSize;
4
+ private readonly danglingReceipts;
5
+ private danglingHead;
6
+ constructor(options?: {
7
+ readonly maxSize?: number;
8
+ });
9
+ shouldQueue(node: BinaryNode, error: Error): boolean;
10
+ enqueue(node: BinaryNode): void;
11
+ take(): BinaryNode[];
12
+ size(): number;
13
+ }
@@ -0,0 +1,46 @@
1
+ import type { WaAppStateSyncOptions, WaAppStateSyncResult } from '../../appstate/types';
2
+ import type { WaAppStateMessageKey, WaClearChatOptions, WaDeleteChatOptions, WaDeleteMessageForMeOptions } from '../types';
3
+ import type { Logger } from '../../infra/log/types';
4
+ import type { WaMessageStore } from '../../store/contracts/message.store';
5
+ interface WaAppStateMutationCoordinatorOptions {
6
+ readonly logger: Logger;
7
+ readonly messageStore: WaMessageStore;
8
+ readonly syncAppState: (options?: WaAppStateSyncOptions) => Promise<WaAppStateSyncResult>;
9
+ readonly archiveRangeLimit?: number;
10
+ }
11
+ export declare class WaAppStateMutationCoordinator {
12
+ private readonly logger;
13
+ private readonly messageStore;
14
+ private readonly syncAppState;
15
+ private readonly archiveRangeLimit;
16
+ private readonly pendingMutations;
17
+ private flushPromise;
18
+ constructor(options: WaAppStateMutationCoordinatorOptions);
19
+ setChatMute(chatJid: string, muted: boolean, muteEndTimestampMs?: number): Promise<void>;
20
+ setMessageStar(message: WaAppStateMessageKey, starred: boolean): Promise<void>;
21
+ setChatRead(chatJid: string, read: boolean): Promise<void>;
22
+ setChatPin(chatJid: string, pinned: boolean): Promise<void>;
23
+ setChatArchive(chatJid: string, archived: boolean): Promise<void>;
24
+ clearChat(chatJid: string, options?: WaClearChatOptions): Promise<void>;
25
+ deleteChat(chatJid: string, options?: WaDeleteChatOptions): Promise<void>;
26
+ deleteMessageForMe(message: WaAppStateMessageKey, options?: WaDeleteMessageForMeOptions): Promise<void>;
27
+ setChatLock(chatJid: string, locked: boolean): Promise<void>;
28
+ flushMutations(): Promise<void>;
29
+ private enqueueAndFlush;
30
+ private enqueueMutation;
31
+ private takePendingMutationsBatch;
32
+ private flushPendingMutationsLoop;
33
+ private requeueMutations;
34
+ private createSetMutation;
35
+ private createArchiveMutation;
36
+ private buildChatMessageRange;
37
+ private toChatMessageRangeMessage;
38
+ private normalizeMessageRangeParticipant;
39
+ private toOptionalTimestampSeconds;
40
+ private normalizeChatMutationJid;
41
+ private buildMessageMutationIndex;
42
+ private resolveMessageMutationParticipant;
43
+ private buildMutationIndex;
44
+ private describeMutationActions;
45
+ }
46
+ export {};
@@ -0,0 +1,57 @@
1
+ import type { WaEditBusinessProfileInput } from '../../transport/node/builders/business';
2
+ import type { BinaryNode } from '../../transport/types';
3
+ export interface WaBusinessCategory {
4
+ readonly id: string;
5
+ readonly name: string;
6
+ }
7
+ export interface WaBusinessHoursEntry {
8
+ readonly dayOfWeek: string;
9
+ readonly mode: string;
10
+ readonly openTime?: number;
11
+ readonly closeTime?: number;
12
+ }
13
+ export interface WaBusinessHours {
14
+ readonly timezone?: string;
15
+ readonly config: readonly WaBusinessHoursEntry[];
16
+ }
17
+ export interface WaBusinessWebsite {
18
+ readonly url: string;
19
+ }
20
+ export interface WaBusinessProfileResult {
21
+ readonly jid: string;
22
+ readonly tag?: string;
23
+ readonly description?: string;
24
+ readonly address?: string;
25
+ readonly email?: string;
26
+ readonly websites?: readonly WaBusinessWebsite[];
27
+ readonly categories?: readonly WaBusinessCategory[];
28
+ readonly businessHours?: WaBusinessHours;
29
+ readonly latitude?: number;
30
+ readonly longitude?: number;
31
+ readonly profileOptions?: Readonly<Record<string, string>>;
32
+ }
33
+ export interface WaVerifiedNamePrivacyMode {
34
+ readonly actualActors: number;
35
+ readonly hostStorage: number;
36
+ readonly privacyModeTs: number;
37
+ }
38
+ export interface WaVerifiedNameResult {
39
+ readonly name?: string;
40
+ readonly level?: string;
41
+ readonly serial?: string;
42
+ readonly isApi: boolean;
43
+ readonly isSmb: boolean;
44
+ readonly privacyMode?: WaVerifiedNamePrivacyMode;
45
+ }
46
+ export interface WaBusinessCoordinator {
47
+ readonly getBusinessProfile: (jids: readonly string[]) => Promise<readonly WaBusinessProfileResult[]>;
48
+ readonly editBusinessProfile: (input: WaEditBusinessProfileInput) => Promise<void>;
49
+ readonly getVerifiedName: (jid: string) => Promise<WaVerifiedNameResult | null>;
50
+ readonly updateCoverPhoto: (id: string, timestamp: string, token: string) => Promise<void>;
51
+ readonly deleteCoverPhoto: (id: string) => Promise<void>;
52
+ }
53
+ interface WaBusinessCoordinatorOptions {
54
+ readonly queryWithContext: (context: string, node: BinaryNode, timeoutMs?: number, contextData?: Readonly<Record<string, unknown>>) => Promise<BinaryNode>;
55
+ }
56
+ export declare function createBusinessCoordinator(options: WaBusinessCoordinatorOptions): WaBusinessCoordinator;
57
+ export {};
@@ -2,6 +2,7 @@ import type { WaSuccessPersistAttributes } from '../../auth/types';
2
2
  import type { WaDirtyBit } from '../dirty';
3
3
  import type { WaIncomingBaseEvent, WaIncomingCallEvent, WaIncomingChatstateEvent, WaIncomingFailureEvent, WaGroupEvent, WaIncomingNodeHandlerRegistration, WaIncomingNotificationEvent, WaIncomingPresenceEvent, WaIncomingReceiptEvent, WaIncomingUnhandledStanzaEvent } from '../types';
4
4
  import type { Logger } from '../../infra/log/types';
5
+ import type { WaConnectionCode, WaDisconnectReason } from '../../protocol/stream';
5
6
  import { type WaStreamControlNodeResult } from '../../transport/stream/parse';
6
7
  import type { BinaryNode } from '../../transport/types';
7
8
  interface WaIncomingNodeRuntime {
@@ -31,7 +32,8 @@ interface WaIncomingNodeRuntime {
31
32
  readonly emitGroupEvent: (event: WaGroupEvent) => void;
32
33
  readonly emitUnhandledIncomingNode: (event: WaIncomingUnhandledStanzaEvent) => void;
33
34
  readonly syncAppState: () => Promise<void>;
34
- readonly disconnect: () => Promise<void>;
35
+ readonly stopComms: () => void;
36
+ readonly disconnect: (reason: WaDisconnectReason, isLogout: boolean, code: WaConnectionCode | null) => Promise<void>;
35
37
  readonly clearStoredCredentials: () => Promise<void>;
36
38
  readonly parseDirtyBits: (nodes: readonly BinaryNode[]) => readonly WaDirtyBit[];
37
39
  readonly handleDirtyBits: (dirtyBits: readonly WaDirtyBit[]) => Promise<void>;
@@ -51,7 +53,6 @@ export declare class WaIncomingNodeCoordinator {
51
53
  unregisterIncomingHandler(registration: WaIncomingNodeHandlerRegistration): boolean;
52
54
  private dispatchIncomingNode;
53
55
  private isRetryReceiptType;
54
- private getHandlersForNode;
55
56
  private registerDefaultIncomingHandlers;
56
57
  private handleSuccessNode;
57
58
  private scheduleMediaConnWarmup;
@@ -1,52 +1,59 @@
1
1
  import type { WaAppStateSyncKey } from '../../appstate/types';
2
+ import type { DeviceFanoutResolver } from '../messaging/fanout';
3
+ import type { AppStateSyncKeyProtocol } from '../messaging/key-protocol';
4
+ import type { GroupParticipantsCache } from '../messaging/participants';
2
5
  import type { WaGroupEvent, WaSignalMessagePublishInput, WaSendMessageOptions } from '../types';
3
6
  import type { Logger } from '../../infra/log/types';
4
7
  import type { WaEncryptedMessageInput, WaMessagePublishOptions, WaMessagePublishResult, WaSendMessageContent, WaSendReceiptInput } from '../../message/types';
5
8
  import type { WaMessageClient } from '../../message/WaMessageClient';
6
9
  import type { Proto } from '../..';
7
- import type { SignalDeviceSyncApi } from '../../signal/api/SignalDeviceSyncApi';
8
- import type { SignalIdentitySyncApi } from '../../signal/api/SignalIdentitySyncApi';
9
- import type { SignalSessionSyncApi } from '../../signal/api/SignalSessionSyncApi';
10
+ import type { OutboundRetryTracker } from '../../retry/tracker';
10
11
  import type { SenderKeyManager } from '../../signal/group/SenderKeyManager';
12
+ import type { SignalSessionResolver } from '../../signal/session/resolver';
11
13
  import type { SignalProtocol } from '../../signal/session/SignalProtocol';
12
- import type { WaParticipantsStore } from '../../store/contracts/participants.store';
13
- import type { WaRetryStore } from '../../store/contracts/retry.store';
14
+ import type { WaDeviceListStore } from '../../store/contracts/device-list.store';
14
15
  import type { WaSignalStore } from '../../store/contracts/signal.store';
15
16
  import type { BinaryNode } from '../../transport/types';
16
17
  interface WaMessageDispatchCoordinatorOptions {
17
18
  readonly logger: Logger;
18
19
  readonly messageClient: WaMessageClient;
19
- readonly retryStore: WaRetryStore;
20
- readonly participantsStore: WaParticipantsStore;
20
+ readonly retryTracker: OutboundRetryTracker;
21
+ readonly sessionResolver: SignalSessionResolver;
22
+ readonly fanoutResolver: DeviceFanoutResolver;
23
+ readonly participantsCache: GroupParticipantsCache;
24
+ readonly appStateSyncKeyProtocol: AppStateSyncKeyProtocol;
21
25
  readonly buildMessageContent: (content: WaSendMessageContent) => Promise<Proto.IMessage>;
22
- readonly queryGroupParticipantJids: (groupJid: string) => Promise<readonly string[]>;
23
26
  readonly senderKeyManager: SenderKeyManager;
24
27
  readonly signalProtocol: SignalProtocol;
25
28
  readonly signalStore: WaSignalStore;
26
- readonly signalDeviceSync: SignalDeviceSyncApi;
27
- readonly signalIdentitySync: SignalIdentitySyncApi;
28
- readonly signalSessionSync: SignalSessionSyncApi;
29
+ readonly deviceListStore: WaDeviceListStore;
29
30
  readonly getCurrentMeJid: () => string | null | undefined;
30
31
  readonly getCurrentMeLid: () => string | null | undefined;
31
32
  readonly getCurrentSignedIdentity: () => Proto.IADVSignedDeviceIdentity | null | undefined;
33
+ readonly resolvePrivacyTokenNode: (recipientJid: string) => Promise<BinaryNode | null>;
34
+ readonly onDirectMessageSent: (recipientJid: string) => void;
32
35
  }
33
36
  export declare class WaMessageDispatchCoordinator {
34
37
  private readonly logger;
35
38
  private readonly messageClient;
36
- private readonly retryStore;
37
- private readonly participantsStore;
38
- private readonly retryTtlMs;
39
+ private readonly retryTracker;
40
+ private readonly sessionResolver;
41
+ private readonly fanoutResolver;
42
+ private readonly participantsCache;
43
+ private readonly appStateSyncKeyProtocol;
39
44
  private readonly buildMessageContent;
40
- private readonly queryGroupParticipantJids;
41
45
  private readonly senderKeyManager;
42
46
  private readonly signalProtocol;
43
47
  private readonly signalStore;
44
- private readonly signalDeviceSync;
45
- private readonly signalIdentitySync;
46
- private readonly signalSessionSync;
48
+ private readonly deviceListStore;
47
49
  private readonly getCurrentMeJid;
48
50
  private readonly getCurrentMeLid;
49
51
  private readonly getCurrentSignedIdentity;
52
+ private readonly resolvePrivacyTokenNode;
53
+ private readonly onDirectMessageSent;
54
+ private readonly icdcDedup;
55
+ private readonly privacyTokenDedup;
56
+ private readonly distributionDedup;
50
57
  constructor(options: WaMessageDispatchCoordinatorOptions);
51
58
  publishMessageNode(node: BinaryNode, options?: WaMessagePublishOptions): Promise<WaMessagePublishResult>;
52
59
  publishEncryptedMessage(input: WaEncryptedMessageInput, options?: WaMessagePublishOptions): Promise<WaMessagePublishResult>;
@@ -57,34 +64,18 @@ export declare class WaMessageDispatchCoordinator {
57
64
  requestAppStateSyncKeys(keyIds: readonly Uint8Array[]): Promise<readonly string[]>;
58
65
  sendAppStateSyncKeyShare(toDeviceJid: string, keys: readonly WaAppStateSyncKey[], missingKeyIds?: readonly Uint8Array[]): Promise<void>;
59
66
  mutateParticipantsCacheFromGroupEvent(event: WaGroupEvent): Promise<void>;
60
- private publishProtocolMessageToDevice;
61
- private resolveOwnPeerDeviceJids;
62
- private normalizeKeyIds;
63
- private publishWithRetryTracking;
64
- private createRetryOutboundRecord;
65
- private safeUpsertRetryOutboundRecord;
66
67
  private shouldUseGroupDirectPath;
67
68
  private publishGroupDirectMessage;
68
69
  private publishGroupSenderKeyMessage;
69
- private resolveGroupParticipantUsers;
70
- private resolveGroupJidForParticipantCacheEvent;
71
- private extractParticipantUsersFromGroupEvent;
72
- private mergeParticipantUsersIntoCache;
73
- private removeParticipantUsersFromCache;
74
- private replaceParticipantUsersInCache;
75
- private areParticipantListsEqual;
76
- private refreshGroupParticipantUsers;
77
- private sanitizeParticipantUsers;
78
70
  private resolveGroupAddressingMode;
79
71
  private resolveSenderForAddressingMode;
80
72
  private encryptGroupDistributionParticipants;
81
- private resolveGroupParticipantDeviceJids;
82
73
  private publishDirectSignalMessageWithFanout;
83
- private ensureSignalSessionsBatch;
84
- private resolveDirectFanoutDeviceJids;
85
- private resolveSelfDeviceJidForRecipient;
74
+ private withResolvedMessageId;
75
+ private generateOutgoingMessageId;
76
+ private tryBuildReportingTokenArtifacts;
86
77
  private getEncodedSignedDeviceIdentity;
87
- private ensureSignalSession;
78
+ private resolveUserIcdc;
88
79
  private requireCurrentMeJid;
89
80
  }
90
81
  export {};
@@ -32,11 +32,15 @@ export declare class WaPassiveTasksCoordinator {
32
32
  readonly runtime: WaPassiveTasksRuntime;
33
33
  });
34
34
  startPassiveTasksAfterConnect(): void;
35
+ handlePreKeyLowNotification(): Promise<void>;
36
+ handleDigestNotification(): Promise<void>;
35
37
  resetInFlightState(): void;
36
38
  private runPassiveTasksAfterConnect;
37
39
  private validateDigestAndRecoverPreKeys;
38
40
  private uploadPreKeysIfMissing;
39
41
  private rotateSignedPreKeyIfDue;
42
+ private resolveLocalKeyBundle;
43
+ private resolveLocalKeyBundleFromStore;
40
44
  private resolveRotationTimestamp;
41
45
  private flushDanglingReceipts;
42
46
  }
@@ -0,0 +1,26 @@
1
+ import type { WaPrivacyDisallowedListSettingName, WaPrivacySettingName, WaPrivacySettingValueMap } from '../../protocol/privacy';
2
+ import type { BinaryNode } from '../../transport/types';
3
+ export type WaPrivacySettings = {
4
+ readonly [K in WaPrivacySettingName]?: WaPrivacySettingValueMap[K];
5
+ };
6
+ export interface WaPrivacyDisallowedListResult {
7
+ readonly jids: readonly string[];
8
+ readonly dhash?: string;
9
+ }
10
+ export interface WaBlocklistResult {
11
+ readonly jids: readonly string[];
12
+ readonly dhash?: string;
13
+ }
14
+ export interface WaPrivacyCoordinator {
15
+ readonly getPrivacySettings: () => Promise<WaPrivacySettings>;
16
+ readonly setPrivacySetting: <S extends WaPrivacySettingName>(setting: S, value: WaPrivacySettingValueMap[S]) => Promise<void>;
17
+ readonly getDisallowedList: (category: WaPrivacyDisallowedListSettingName) => Promise<WaPrivacyDisallowedListResult>;
18
+ readonly getBlocklist: () => Promise<WaBlocklistResult>;
19
+ readonly blockUser: (jid: string) => Promise<void>;
20
+ readonly unblockUser: (jid: string) => Promise<void>;
21
+ }
22
+ interface WaPrivacyCoordinatorOptions {
23
+ readonly queryWithContext: (context: string, node: BinaryNode, timeoutMs?: number, contextData?: Readonly<Record<string, unknown>>) => Promise<BinaryNode>;
24
+ }
25
+ export declare function createPrivacyCoordinator(options: WaPrivacyCoordinatorOptions): WaPrivacyCoordinator;
26
+ export {};