zapo-js 0.1.2 → 0.3.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 (630) hide show
  1. package/README.md +16 -4
  2. package/dist/appstate/WaAppStateCrypto.js +50 -42
  3. package/dist/appstate/WaAppStateSyncClient.js +215 -133
  4. package/dist/appstate/{store/sqlite.js → encoding.js} +13 -8
  5. package/dist/appstate/index.js +9 -7
  6. package/dist/appstate/utils.js +0 -5
  7. package/dist/auth/WaAuthClient.js +55 -57
  8. package/dist/auth/credentials-flow.js +195 -0
  9. package/dist/auth/index.js +1 -6
  10. package/dist/auth/pairing/WaPairingFlow.js +39 -32
  11. package/dist/auth/pairing/{WaPairingCodeCrypto.js → pairing-code-crypto.js} +35 -17
  12. package/dist/client/WaClient.js +338 -174
  13. package/dist/client/WaClientFactory.js +399 -66
  14. package/dist/client/connection/WaConnectionManager.js +23 -11
  15. package/dist/client/coordinators/WaAbPropsCoordinator.js +141 -0
  16. package/dist/client/coordinators/WaBusinessCoordinator.js +232 -0
  17. package/dist/client/coordinators/WaEmailCoordinator.js +63 -0
  18. package/dist/client/coordinators/WaGroupCoordinator.js +11 -7
  19. package/dist/client/coordinators/WaIncomingNodeCoordinator.js +34 -8
  20. package/dist/client/coordinators/WaMessageDispatchCoordinator.js +341 -118
  21. package/dist/client/coordinators/WaOfflineResumeCoordinator.js +114 -0
  22. package/dist/client/coordinators/WaPassiveTasksCoordinator.js +97 -36
  23. package/dist/client/coordinators/WaPrivacyCoordinator.js +134 -0
  24. package/dist/client/coordinators/WaProfileCoordinator.js +214 -0
  25. package/dist/client/coordinators/WaRetryCoordinator.js +184 -30
  26. package/dist/client/coordinators/WaStreamControlCoordinator.js +18 -11
  27. package/dist/client/coordinators/WaTrustedContactTokenCoordinator.js +184 -0
  28. package/dist/client/dirty.js +41 -21
  29. package/dist/client/events/abprops.js +43 -0
  30. package/dist/client/events/devices.js +72 -0
  31. package/dist/client/events/group.js +3 -11
  32. package/dist/client/events/identity.js +22 -0
  33. package/dist/client/events/privacy-token.js +38 -0
  34. package/dist/client/events/registration.js +42 -0
  35. package/dist/client/history-sync.js +50 -9
  36. package/dist/client/incoming.js +74 -7
  37. package/dist/client/mailbox.js +40 -23
  38. package/dist/client/media.js +243 -0
  39. package/dist/client/messages.js +245 -92
  40. package/dist/client/messaging/fanout.js +21 -11
  41. package/dist/client/messaging/participants.js +6 -4
  42. package/dist/client/persistence/WriteBehindPersistence.js +129 -0
  43. package/dist/client/tokens/cs-token.js +50 -0
  44. package/dist/client/tokens/tc-token.js +25 -0
  45. package/dist/crypto/core/index.js +5 -2
  46. package/dist/crypto/core/keys.js +4 -4
  47. package/dist/crypto/core/nonce.js +2 -0
  48. package/dist/crypto/core/primitives.js +0 -8
  49. package/dist/crypto/core/random.js +24 -8
  50. package/dist/crypto/core/xeddsa.js +57 -0
  51. package/dist/crypto/curves/X25519.js +43 -6
  52. package/dist/crypto/curves/constants.js +2 -1
  53. package/dist/crypto/index.js +3 -0
  54. package/dist/crypto/math/constants.js +13 -36
  55. package/dist/crypto/math/edwards.js +171 -44
  56. package/dist/crypto/math/fe.js +706 -0
  57. package/dist/crypto/math/mod.js +10 -3
  58. package/dist/esm/appstate/WaAppStateCrypto.js +40 -32
  59. package/dist/esm/appstate/WaAppStateSyncClient.js +206 -124
  60. package/dist/esm/appstate/{store/sqlite.js → encoding.js} +13 -8
  61. package/dist/esm/appstate/index.js +2 -2
  62. package/dist/esm/appstate/{WaAppStateSyncResponseParser.js → response-parser.js} +1 -1
  63. package/dist/esm/appstate/utils.js +2 -5
  64. package/dist/esm/auth/WaAuthClient.js +52 -54
  65. package/dist/esm/auth/credentials-flow.js +190 -0
  66. package/dist/esm/auth/index.js +0 -2
  67. package/dist/esm/auth/pairing/WaPairingFlow.js +39 -32
  68. package/dist/esm/auth/pairing/{WaPairingCodeCrypto.js → pairing-code-crypto.js} +26 -10
  69. package/dist/esm/client/WaClient.js +339 -175
  70. package/dist/esm/client/WaClientFactory.js +401 -68
  71. package/dist/esm/client/connection/WaConnectionManager.js +23 -11
  72. package/dist/esm/client/coordinators/WaAbPropsCoordinator.js +137 -0
  73. package/dist/esm/client/coordinators/WaBusinessCoordinator.js +229 -0
  74. package/dist/esm/client/coordinators/WaEmailCoordinator.js +60 -0
  75. package/dist/esm/client/coordinators/WaGroupCoordinator.js +11 -7
  76. package/dist/esm/client/coordinators/WaIncomingNodeCoordinator.js +36 -10
  77. package/dist/esm/client/coordinators/WaMessageDispatchCoordinator.js +337 -114
  78. package/dist/esm/client/coordinators/WaOfflineResumeCoordinator.js +110 -0
  79. package/dist/esm/client/coordinators/WaPassiveTasksCoordinator.js +97 -36
  80. package/dist/esm/client/coordinators/WaPrivacyCoordinator.js +131 -0
  81. package/dist/esm/client/coordinators/WaProfileCoordinator.js +211 -0
  82. package/dist/esm/client/coordinators/WaRetryCoordinator.js +186 -32
  83. package/dist/esm/client/coordinators/WaStreamControlCoordinator.js +19 -12
  84. package/dist/esm/client/coordinators/WaTrustedContactTokenCoordinator.js +180 -0
  85. package/dist/esm/client/dirty.js +41 -21
  86. package/dist/esm/client/events/abprops.js +40 -0
  87. package/dist/esm/client/events/devices.js +68 -0
  88. package/dist/esm/client/events/group.js +3 -11
  89. package/dist/esm/client/events/identity.js +19 -0
  90. package/dist/esm/client/events/privacy-token.js +35 -0
  91. package/dist/esm/client/events/registration.js +39 -0
  92. package/dist/esm/client/history-sync.js +50 -9
  93. package/dist/esm/client/incoming.js +74 -8
  94. package/dist/esm/client/mailbox.js +40 -23
  95. package/dist/esm/client/media.js +234 -0
  96. package/dist/esm/client/messages.js +244 -91
  97. package/dist/esm/client/messaging/fanout.js +22 -12
  98. package/dist/esm/client/messaging/participants.js +6 -4
  99. package/dist/esm/client/persistence/WriteBehindPersistence.js +125 -0
  100. package/dist/esm/client/tokens/cs-token.js +46 -0
  101. package/dist/esm/client/tokens/tc-token.js +18 -0
  102. package/dist/esm/crypto/core/index.js +3 -2
  103. package/dist/esm/crypto/core/keys.js +1 -1
  104. package/dist/esm/crypto/core/nonce.js +2 -0
  105. package/dist/esm/crypto/core/primitives.js +0 -7
  106. package/dist/esm/crypto/core/random.js +23 -7
  107. package/dist/esm/crypto/core/xeddsa.js +53 -0
  108. package/dist/esm/crypto/curves/X25519.js +45 -8
  109. package/dist/esm/crypto/curves/constants.js +1 -0
  110. package/dist/esm/crypto/index.js +1 -0
  111. package/dist/esm/crypto/math/constants.js +12 -35
  112. package/dist/esm/crypto/math/edwards.js +174 -47
  113. package/dist/esm/crypto/math/fe.js +691 -0
  114. package/dist/esm/crypto/math/mod.js +10 -1
  115. package/dist/esm/index.js +1 -1
  116. package/dist/esm/infra/perf/BackgroundQueue.js +478 -0
  117. package/dist/esm/infra/perf/BoundedTaskQueue.js +3 -1
  118. package/dist/esm/infra/perf/PromiseDedup.js +20 -0
  119. package/dist/esm/infra/perf/SharedExclusiveGate.js +109 -0
  120. package/dist/esm/infra/perf/StoreLock.js +80 -0
  121. package/dist/esm/media/WaMediaCrypto.js +332 -55
  122. package/dist/esm/media/WaMediaTransferClient.js +69 -220
  123. package/dist/esm/media/constants.js +4 -1
  124. package/dist/esm/media/processor.js +1 -0
  125. package/dist/esm/message/WaMessageClient.js +26 -19
  126. package/dist/esm/message/addon-crypto.js +130 -3
  127. package/dist/esm/message/content.js +206 -14
  128. package/dist/esm/message/icdc.js +76 -0
  129. package/dist/esm/message/incoming.js +38 -24
  130. package/dist/esm/message/phash.js +35 -13
  131. package/dist/esm/message/reporting-token.js +17 -30
  132. package/dist/esm/message/use-case-secret.js +1 -1
  133. package/dist/esm/protocol/abprops.js +159 -0
  134. package/dist/esm/protocol/appstate.js +9 -40
  135. package/dist/esm/protocol/browser.js +24 -18
  136. package/dist/esm/protocol/constants.js +8 -4
  137. package/dist/esm/protocol/defaults.js +6 -0
  138. package/dist/esm/protocol/email.js +30 -0
  139. package/dist/esm/protocol/index.js +1 -2
  140. package/dist/esm/protocol/jid.js +142 -39
  141. package/dist/esm/protocol/message.js +61 -1
  142. package/dist/esm/protocol/nodes.js +8 -2
  143. package/dist/esm/protocol/notification.js +9 -1
  144. package/dist/esm/protocol/privacy-token.js +17 -0
  145. package/dist/esm/protocol/privacy.js +55 -0
  146. package/dist/esm/protocol/stream.js +26 -1
  147. package/dist/esm/retry/codec.js +216 -0
  148. package/dist/esm/retry/constants.js +1 -1
  149. package/dist/esm/retry/index.js +2 -2
  150. package/dist/esm/retry/parse.js +50 -30
  151. package/dist/esm/retry/reason.js +1 -1
  152. package/dist/esm/retry/replay.js +11 -7
  153. package/dist/esm/retry/tracker.js +50 -12
  154. package/dist/esm/signal/api/SignalDeviceSyncApi.js +52 -32
  155. package/dist/esm/signal/api/SignalDigestSyncApi.js +21 -15
  156. package/dist/esm/signal/api/SignalIdentitySyncApi.js +30 -15
  157. package/dist/esm/signal/api/SignalMissingPreKeysSyncApi.js +19 -8
  158. package/dist/esm/signal/api/SignalRotateKeyApi.js +4 -2
  159. package/dist/esm/signal/api/SignalSessionSyncApi.js +17 -8
  160. package/dist/esm/signal/api/result-map.js +10 -0
  161. package/dist/esm/signal/constants.js +0 -4
  162. package/dist/esm/signal/crypto/WaAdvSignature.js +5 -45
  163. package/dist/esm/signal/crypto/constants.js +0 -4
  164. package/dist/esm/signal/{store/sqlite.js → encoding.js} +40 -29
  165. package/dist/esm/signal/group/SenderKeyChain.js +3 -3
  166. package/dist/esm/signal/group/SenderKeyCodec.js +8 -8
  167. package/dist/esm/signal/group/SenderKeyManager.js +131 -109
  168. package/dist/esm/signal/index.js +1 -0
  169. package/dist/esm/signal/registration/keygen.js +8 -5
  170. package/dist/esm/signal/registration/utils.js +3 -2
  171. package/dist/esm/signal/session/SignalProtocol.js +158 -81
  172. package/dist/esm/signal/session/SignalRatchet.js +21 -10
  173. package/dist/esm/signal/session/SignalSerializer.js +5 -6
  174. package/dist/esm/signal/session/SignalSession.js +11 -9
  175. package/dist/esm/signal/session/resolver.js +140 -105
  176. package/dist/esm/store/contracts/identity.store.js +1 -0
  177. package/dist/esm/store/contracts/message-secret.store.js +1 -0
  178. package/dist/esm/store/contracts/pre-key.store.js +1 -0
  179. package/dist/esm/store/contracts/privacy-token.store.js +1 -0
  180. package/dist/esm/store/contracts/session.store.js +1 -0
  181. package/dist/esm/store/createStore.js +143 -193
  182. package/dist/esm/store/index.js +5 -10
  183. package/dist/esm/store/locks/appstate.lock.js +26 -0
  184. package/dist/esm/store/locks/auth.lock.js +15 -0
  185. package/dist/esm/store/locks/contact.lock.js +20 -0
  186. package/dist/esm/store/locks/device-list.lock.js +20 -0
  187. package/dist/esm/store/locks/identity.lock.js +16 -0
  188. package/dist/esm/store/locks/message-secret.lock.js +17 -0
  189. package/dist/esm/store/locks/message.lock.js +21 -0
  190. package/dist/esm/store/locks/participants.lock.js +20 -0
  191. package/dist/esm/store/locks/pre-key.lock.js +27 -0
  192. package/dist/esm/store/locks/privacy-token.lock.js +18 -0
  193. package/dist/esm/store/locks/retry.lock.js +29 -0
  194. package/dist/esm/store/locks/sender-key.lock.js +52 -0
  195. package/dist/esm/store/locks/session.lock.js +19 -0
  196. package/dist/esm/store/locks/signal.lock.js +39 -0
  197. package/dist/esm/store/locks/thread.lock.js +21 -0
  198. package/dist/esm/store/noop.store.js +21 -1
  199. package/dist/esm/store/providers/memory/appstate.store.js +22 -24
  200. package/dist/esm/store/providers/memory/device-list.store.js +13 -5
  201. package/dist/esm/store/providers/memory/identity.store.js +31 -0
  202. package/dist/esm/store/providers/memory/message-secret.store.js +81 -0
  203. package/dist/esm/store/providers/memory/participants.store.js +3 -0
  204. package/dist/esm/store/providers/memory/pre-key.store.js +97 -0
  205. package/dist/esm/store/providers/memory/privacy-token.store.js +43 -0
  206. package/dist/esm/store/providers/memory/retry.store.js +99 -10
  207. package/dist/esm/store/providers/memory/sender-key.store.js +6 -1
  208. package/dist/esm/store/providers/memory/session.store.js +45 -0
  209. package/dist/esm/store/providers/memory/signal.store.js +1 -147
  210. package/dist/esm/transport/WaComms.js +7 -4
  211. package/dist/esm/transport/WaWebSocket.js +9 -7
  212. package/dist/esm/transport/binary/constants.js +0 -30
  213. package/dist/esm/transport/binary/decoder.js +4 -4
  214. package/dist/esm/transport/binary/encoder.js +8 -15
  215. package/dist/esm/transport/binary/index.js +0 -1
  216. package/dist/esm/transport/index.js +6 -0
  217. package/dist/esm/transport/keepalive/WaKeepAlive.js +17 -8
  218. package/dist/esm/transport/node/WaMobileTcpSocket.js +114 -0
  219. package/dist/esm/transport/node/WaNodeOrchestrator.js +37 -22
  220. package/dist/esm/transport/node/builders/abprops.js +20 -0
  221. package/dist/esm/transport/node/builders/business.js +129 -0
  222. package/dist/esm/transport/node/builders/device.js +11 -0
  223. package/dist/esm/transport/node/builders/email.js +65 -0
  224. package/dist/esm/transport/node/builders/global.js +370 -0
  225. package/dist/esm/transport/node/builders/message.js +63 -239
  226. package/dist/esm/transport/node/builders/offline.js +14 -0
  227. package/dist/esm/transport/node/builders/pairing.js +0 -24
  228. package/dist/esm/transport/node/builders/prekeys.js +37 -40
  229. package/dist/esm/transport/node/builders/presence.js +13 -0
  230. package/dist/esm/transport/node/builders/privacy-token.js +37 -0
  231. package/dist/esm/transport/node/builders/privacy.js +48 -0
  232. package/dist/esm/transport/node/builders/profile.js +70 -0
  233. package/dist/esm/transport/node/builders/retry.js +11 -23
  234. package/dist/esm/transport/node/builders/usync.js +6 -2
  235. package/dist/esm/transport/node/helpers.js +43 -1
  236. package/dist/esm/transport/node/mex/argo-decoder.js +152 -0
  237. package/dist/esm/transport/node/mex/client.js +83 -0
  238. package/dist/esm/transport/node/mex/persist-ids.js +10 -0
  239. package/dist/esm/transport/node/usync.js +3 -33
  240. package/dist/esm/transport/node/xml.js +35 -14
  241. package/dist/esm/transport/noise/WaClientPayload.js +24 -19
  242. package/dist/esm/transport/noise/WaFrameCodec.js +2 -2
  243. package/dist/esm/transport/noise/WaMobileClientPayload.js +53 -0
  244. package/dist/esm/transport/noise/WaNoiseCert.js +9 -27
  245. package/dist/esm/transport/noise/WaNoiseSession.js +76 -34
  246. package/dist/esm/transport/noise/WaNoiseSocket.js +8 -4
  247. package/dist/esm/transport/stream/parse.js +8 -4
  248. package/dist/esm/util/bytes.js +22 -18
  249. package/dist/esm/util/index.js +5 -0
  250. package/dist/esm/util/primitives.js +3 -2
  251. package/dist/index.js +7 -1
  252. package/dist/infra/perf/BackgroundQueue.js +482 -0
  253. package/dist/infra/perf/BoundedTaskQueue.js +3 -1
  254. package/dist/infra/perf/PromiseDedup.js +24 -0
  255. package/dist/infra/perf/SharedExclusiveGate.js +113 -0
  256. package/dist/infra/perf/StoreLock.js +84 -0
  257. package/dist/media/WaMediaCrypto.js +328 -51
  258. package/dist/media/WaMediaTransferClient.js +72 -253
  259. package/dist/media/constants.js +5 -2
  260. package/dist/media/processor.js +2 -0
  261. package/dist/message/WaMessageClient.js +26 -19
  262. package/dist/message/addon-crypto.js +131 -0
  263. package/dist/message/content.js +211 -14
  264. package/dist/message/icdc.js +81 -0
  265. package/dist/message/incoming.js +38 -24
  266. package/dist/message/phash.js +35 -13
  267. package/dist/message/reporting-token.js +16 -30
  268. package/dist/message/use-case-secret.js +1 -1
  269. package/dist/protocol/abprops.js +163 -0
  270. package/dist/protocol/appstate.js +10 -41
  271. package/dist/protocol/browser.js +25 -18
  272. package/dist/protocol/constants.js +33 -2
  273. package/dist/protocol/defaults.js +6 -0
  274. package/dist/protocol/email.js +33 -0
  275. package/dist/protocol/index.js +8 -5
  276. package/dist/protocol/jid.js +149 -39
  277. package/dist/protocol/message.js +62 -2
  278. package/dist/protocol/nodes.js +8 -2
  279. package/dist/protocol/notification.js +10 -2
  280. package/dist/protocol/privacy-token.js +20 -0
  281. package/dist/protocol/privacy.js +58 -0
  282. package/dist/protocol/stream.js +27 -2
  283. package/dist/retry/codec.js +220 -0
  284. package/dist/retry/constants.js +1 -1
  285. package/dist/retry/index.js +5 -5
  286. package/dist/retry/parse.js +51 -30
  287. package/dist/retry/reason.js +1 -1
  288. package/dist/retry/replay.js +10 -6
  289. package/dist/retry/tracker.js +50 -12
  290. package/dist/signal/api/SignalDeviceSyncApi.js +51 -31
  291. package/dist/signal/api/SignalDigestSyncApi.js +21 -15
  292. package/dist/signal/api/SignalIdentitySyncApi.js +29 -14
  293. package/dist/signal/api/SignalMissingPreKeysSyncApi.js +17 -6
  294. package/dist/signal/api/SignalRotateKeyApi.js +4 -2
  295. package/dist/signal/api/SignalSessionSyncApi.js +16 -7
  296. package/dist/signal/api/result-map.js +13 -0
  297. package/dist/signal/constants.js +1 -5
  298. package/dist/signal/crypto/WaAdvSignature.js +2 -44
  299. package/dist/signal/crypto/constants.js +1 -5
  300. package/dist/signal/{store/sqlite.js → encoding.js} +41 -25
  301. package/dist/signal/group/SenderKeyChain.js +2 -2
  302. package/dist/signal/group/SenderKeyCodec.js +8 -8
  303. package/dist/signal/group/SenderKeyManager.js +130 -108
  304. package/dist/signal/index.js +13 -1
  305. package/dist/signal/registration/keygen.js +7 -4
  306. package/dist/signal/registration/utils.js +3 -2
  307. package/dist/signal/session/SignalProtocol.js +158 -81
  308. package/dist/signal/session/SignalRatchet.js +19 -8
  309. package/dist/signal/session/SignalSerializer.js +5 -6
  310. package/dist/signal/session/SignalSession.js +11 -9
  311. package/dist/signal/session/resolver.js +138 -103
  312. package/dist/store/contracts/identity.store.js +2 -0
  313. package/dist/store/contracts/message-secret.store.js +2 -0
  314. package/dist/store/contracts/pre-key.store.js +2 -0
  315. package/dist/store/contracts/privacy-token.store.js +2 -0
  316. package/dist/store/contracts/session.store.js +2 -0
  317. package/dist/store/createStore.js +142 -192
  318. package/dist/store/index.js +23 -33
  319. package/dist/store/locks/appstate.lock.js +29 -0
  320. package/dist/store/locks/auth.lock.js +18 -0
  321. package/dist/store/locks/contact.lock.js +23 -0
  322. package/dist/store/locks/device-list.lock.js +23 -0
  323. package/dist/store/locks/identity.lock.js +19 -0
  324. package/dist/store/locks/message-secret.lock.js +20 -0
  325. package/dist/store/locks/message.lock.js +24 -0
  326. package/dist/store/locks/participants.lock.js +23 -0
  327. package/dist/store/locks/pre-key.lock.js +30 -0
  328. package/dist/store/locks/privacy-token.lock.js +21 -0
  329. package/dist/store/locks/retry.lock.js +32 -0
  330. package/dist/store/locks/sender-key.lock.js +55 -0
  331. package/dist/store/locks/session.lock.js +22 -0
  332. package/dist/store/locks/signal.lock.js +42 -0
  333. package/dist/store/locks/thread.lock.js +24 -0
  334. package/dist/store/noop.store.js +22 -2
  335. package/dist/store/providers/memory/appstate.store.js +22 -24
  336. package/dist/store/providers/memory/device-list.store.js +13 -5
  337. package/dist/store/providers/memory/identity.store.js +35 -0
  338. package/dist/store/providers/memory/message-secret.store.js +85 -0
  339. package/dist/store/providers/memory/participants.store.js +3 -0
  340. package/dist/store/providers/memory/pre-key.store.js +101 -0
  341. package/dist/store/providers/memory/privacy-token.store.js +47 -0
  342. package/dist/store/providers/memory/retry.store.js +98 -9
  343. package/dist/store/providers/memory/sender-key.store.js +6 -1
  344. package/dist/store/providers/memory/session.store.js +49 -0
  345. package/dist/store/providers/memory/signal.store.js +1 -147
  346. package/dist/transport/WaComms.js +7 -4
  347. package/dist/transport/WaWebSocket.js +9 -7
  348. package/dist/transport/binary/constants.js +1 -31
  349. package/dist/transport/binary/decoder.js +4 -4
  350. package/dist/transport/binary/encoder.js +8 -15
  351. package/dist/transport/binary/index.js +0 -4
  352. package/dist/transport/index.js +17 -1
  353. package/dist/transport/keepalive/WaKeepAlive.js +17 -8
  354. package/dist/transport/node/WaMobileTcpSocket.js +118 -0
  355. package/dist/transport/node/WaNodeOrchestrator.js +36 -21
  356. package/dist/transport/node/builders/abprops.js +23 -0
  357. package/dist/transport/node/builders/business.js +137 -0
  358. package/dist/transport/node/builders/device.js +14 -0
  359. package/dist/transport/node/builders/email.js +72 -0
  360. package/dist/transport/node/builders/global.js +375 -0
  361. package/dist/transport/node/builders/message.js +64 -245
  362. package/dist/transport/node/builders/offline.js +17 -0
  363. package/dist/transport/node/builders/pairing.js +0 -26
  364. package/dist/transport/node/builders/prekeys.js +36 -39
  365. package/dist/transport/node/builders/presence.js +16 -0
  366. package/dist/transport/node/builders/privacy-token.js +42 -0
  367. package/dist/transport/node/builders/privacy.js +55 -0
  368. package/dist/transport/node/builders/profile.js +78 -0
  369. package/dist/transport/node/builders/retry.js +10 -22
  370. package/dist/transport/node/builders/usync.js +6 -2
  371. package/dist/transport/node/helpers.js +46 -1
  372. package/dist/transport/node/mex/argo-decoder.js +189 -0
  373. package/dist/transport/node/mex/client.js +86 -0
  374. package/dist/transport/node/mex/persist-ids.js +13 -0
  375. package/dist/transport/node/usync.js +2 -32
  376. package/dist/transport/node/xml.js +35 -14
  377. package/dist/transport/noise/WaClientPayload.js +26 -21
  378. package/dist/transport/noise/WaFrameCodec.js +1 -1
  379. package/dist/transport/noise/WaMobileClientPayload.js +56 -0
  380. package/dist/transport/noise/WaNoiseCert.js +8 -26
  381. package/dist/transport/noise/WaNoiseSession.js +75 -33
  382. package/dist/transport/noise/WaNoiseSocket.js +8 -4
  383. package/dist/transport/stream/parse.js +7 -3
  384. package/dist/types/appstate/WaAppStateCrypto.d.ts +11 -8
  385. package/dist/types/appstate/WaAppStateSyncClient.d.ts +6 -2
  386. package/dist/types/appstate/encoding.d.ts +7 -0
  387. package/dist/types/appstate/index.d.ts +3 -3
  388. package/dist/types/appstate/{WaAppStateSyncResponseParser.d.ts → response-parser.d.ts} +1 -1
  389. package/dist/types/appstate/types.d.ts +1 -1
  390. package/dist/types/appstate/utils.d.ts +0 -2
  391. package/dist/types/auth/WaAuthClient.d.ts +9 -3
  392. package/dist/types/auth/credentials-flow.d.ts +20 -0
  393. package/dist/types/auth/index.d.ts +0 -2
  394. package/dist/types/auth/pairing/WaPairingFlow.d.ts +3 -2
  395. package/dist/types/auth/pairing/{WaPairingCodeCrypto.d.ts → pairing-code-crypto.d.ts} +6 -1
  396. package/dist/types/auth/types.d.ts +41 -0
  397. package/dist/types/client/WaClient.d.ts +44 -18
  398. package/dist/types/client/WaClientFactory.d.ts +22 -8
  399. package/dist/types/client/connection/WaConnectionManager.d.ts +2 -0
  400. package/dist/types/client/coordinators/WaAbPropsCoordinator.d.ts +26 -0
  401. package/dist/types/client/coordinators/WaBusinessCoordinator.d.ts +57 -0
  402. package/dist/types/client/coordinators/WaEmailCoordinator.d.ts +24 -0
  403. package/dist/types/client/coordinators/WaIncomingNodeCoordinator.d.ts +9 -2
  404. package/dist/types/client/coordinators/WaMessageDispatchCoordinator.d.ts +29 -2
  405. package/dist/types/client/coordinators/WaOfflineResumeCoordinator.d.ts +31 -0
  406. package/dist/types/client/coordinators/WaPassiveTasksCoordinator.d.ts +16 -1
  407. package/dist/types/client/coordinators/WaPrivacyCoordinator.d.ts +26 -0
  408. package/dist/types/client/coordinators/WaProfileCoordinator.d.ts +38 -0
  409. package/dist/types/client/coordinators/WaRetryCoordinator.d.ts +12 -0
  410. package/dist/types/client/coordinators/WaStreamControlCoordinator.d.ts +3 -2
  411. package/dist/types/client/coordinators/WaTrustedContactTokenCoordinator.d.ts +55 -0
  412. package/dist/types/client/dirty.d.ts +3 -1
  413. package/dist/types/client/events/abprops.d.ts +14 -0
  414. package/dist/types/client/events/devices.d.ts +20 -0
  415. package/dist/types/client/events/identity.d.ts +9 -0
  416. package/dist/types/client/events/privacy-token.d.ts +7 -0
  417. package/dist/types/client/events/registration.d.ts +17 -0
  418. package/dist/types/client/history-sync.d.ts +9 -6
  419. package/dist/types/client/incoming.d.ts +9 -2
  420. package/dist/types/client/index.d.ts +1 -1
  421. package/dist/types/client/mailbox.d.ts +5 -5
  422. package/dist/types/client/media.d.ts +31 -0
  423. package/dist/types/client/messages.d.ts +3 -2
  424. package/dist/types/client/persistence/WriteBehindPersistence.d.ts +34 -0
  425. package/dist/types/client/tokens/cs-token.d.ts +10 -0
  426. package/dist/types/client/tokens/tc-token.d.ts +5 -0
  427. package/dist/types/client/types.d.ts +151 -4
  428. package/dist/types/crypto/core/index.d.ts +3 -2
  429. package/dist/types/crypto/core/nonce.d.ts +2 -0
  430. package/dist/types/crypto/core/primitives.d.ts +1 -2
  431. package/dist/types/crypto/core/random.d.ts +2 -1
  432. package/dist/types/crypto/core/xeddsa.d.ts +2 -0
  433. package/dist/types/crypto/curves/constants.d.ts +1 -0
  434. package/dist/types/crypto/index.d.ts +2 -0
  435. package/dist/types/crypto/math/constants.d.ts +4 -2
  436. package/dist/types/crypto/math/fe.d.ts +30 -0
  437. package/dist/types/crypto/math/mod.d.ts +0 -2
  438. package/dist/types/crypto/math/types.d.ts +11 -4
  439. package/dist/types/index.d.ts +6 -3
  440. package/dist/types/infra/log/ConsoleLogger.d.ts +1 -1
  441. package/dist/types/infra/log/PinoLogger.d.ts +1 -1
  442. package/dist/types/infra/perf/BackgroundQueue.d.ts +58 -0
  443. package/dist/types/infra/perf/PromiseDedup.d.ts +4 -0
  444. package/dist/types/infra/perf/SharedExclusiveGate.d.ts +17 -0
  445. package/dist/types/infra/perf/StoreLock.d.ts +11 -0
  446. package/dist/types/media/WaMediaCrypto.d.ts +16 -6
  447. package/dist/types/media/WaMediaTransferClient.d.ts +6 -23
  448. package/dist/types/media/constants.d.ts +3 -1
  449. package/dist/types/media/index.d.ts +2 -1
  450. package/dist/types/media/processor.d.ts +28 -0
  451. package/dist/types/media/types.d.ts +19 -5
  452. package/dist/types/message/addon-crypto.d.ts +34 -3
  453. package/dist/types/message/content.d.ts +11 -1
  454. package/dist/types/message/icdc.d.ts +13 -0
  455. package/dist/types/message/reporting-token.d.ts +0 -1
  456. package/dist/types/message/types.d.ts +42 -11
  457. package/dist/types/protocol/abprops.d.ts +142 -0
  458. package/dist/types/protocol/appstate.d.ts +0 -11
  459. package/dist/types/protocol/browser.d.ts +1 -0
  460. package/dist/types/protocol/constants.d.ts +12 -4
  461. package/dist/types/protocol/defaults.d.ts +6 -0
  462. package/dist/types/protocol/email.d.ts +32 -0
  463. package/dist/types/protocol/index.d.ts +1 -2
  464. package/dist/types/protocol/jid.d.ts +20 -2
  465. package/dist/types/protocol/message.d.ts +60 -0
  466. package/dist/types/protocol/nodes.d.ts +6 -0
  467. package/dist/types/protocol/notification.d.ts +8 -0
  468. package/dist/types/protocol/privacy-token.d.ts +17 -0
  469. package/dist/types/protocol/privacy.d.ts +75 -0
  470. package/dist/types/protocol/stream.d.ts +31 -0
  471. package/dist/types/retry/codec.d.ts +3 -0
  472. package/dist/types/retry/index.d.ts +3 -3
  473. package/dist/types/retry/parse.d.ts +5 -2
  474. package/dist/types/retry/reason.d.ts +1 -1
  475. package/dist/types/retry/tracker.d.ts +1 -0
  476. package/dist/types/retry/types.d.ts +6 -1
  477. package/dist/types/signal/api/SignalDeviceSyncApi.d.ts +2 -1
  478. package/dist/types/signal/api/SignalDigestSyncApi.d.ts +9 -0
  479. package/dist/types/signal/api/SignalIdentitySyncApi.d.ts +5 -3
  480. package/dist/types/signal/api/SignalRotateKeyApi.d.ts +4 -5
  481. package/dist/types/signal/api/SignalSessionSyncApi.d.ts +8 -6
  482. package/dist/types/signal/api/result-map.d.ts +1 -0
  483. package/dist/types/signal/constants.d.ts +0 -3
  484. package/dist/types/signal/crypto/WaAdvSignature.d.ts +0 -2
  485. package/dist/types/signal/crypto/constants.d.ts +0 -1
  486. package/dist/types/signal/{store/sqlite.d.ts → encoding.d.ts} +9 -3
  487. package/dist/types/signal/group/SenderKeyChain.d.ts +1 -1
  488. package/dist/types/signal/group/SenderKeyManager.d.ts +17 -7
  489. package/dist/types/signal/index.d.ts +2 -0
  490. package/dist/types/signal/registration/utils.d.ts +2 -1
  491. package/dist/types/signal/session/SignalProtocol.d.ts +21 -6
  492. package/dist/types/signal/session/SignalSerializer.d.ts +2 -1
  493. package/dist/types/signal/session/resolver.d.ts +11 -4
  494. package/dist/types/signal/types.d.ts +16 -4
  495. package/dist/types/store/contracts/appstate.store.d.ts +1 -1
  496. package/dist/types/store/contracts/identity.store.d.ts +11 -0
  497. package/dist/types/store/contracts/message-secret.store.d.ts +16 -0
  498. package/dist/types/store/contracts/pre-key.store.d.ts +13 -0
  499. package/dist/types/store/contracts/privacy-token.store.d.ts +16 -0
  500. package/dist/types/store/contracts/retry.store.d.ts +7 -0
  501. package/dist/types/store/contracts/session.store.d.ts +14 -0
  502. package/dist/types/store/contracts/signal.store.d.ts +1 -27
  503. package/dist/types/store/createStore.d.ts +1 -1
  504. package/dist/types/store/index.d.ts +12 -12
  505. package/dist/types/store/locks/appstate.lock.d.ts +3 -0
  506. package/dist/types/store/locks/auth.lock.d.ts +3 -0
  507. package/dist/types/store/locks/contact.lock.d.ts +3 -0
  508. package/dist/types/store/locks/device-list.lock.d.ts +2 -0
  509. package/dist/types/store/locks/identity.lock.d.ts +3 -0
  510. package/dist/types/store/locks/message-secret.lock.d.ts +3 -0
  511. package/dist/types/store/locks/message.lock.d.ts +3 -0
  512. package/dist/types/store/locks/participants.lock.d.ts +2 -0
  513. package/dist/types/store/locks/pre-key.lock.d.ts +3 -0
  514. package/dist/types/store/locks/privacy-token.lock.d.ts +2 -0
  515. package/dist/types/store/locks/retry.lock.d.ts +2 -0
  516. package/dist/types/store/locks/sender-key.lock.d.ts +3 -0
  517. package/dist/types/store/locks/session.lock.d.ts +3 -0
  518. package/dist/types/store/locks/signal.lock.d.ts +3 -0
  519. package/dist/types/store/locks/thread.lock.d.ts +3 -0
  520. package/dist/types/store/noop.store.d.ts +4 -0
  521. package/dist/types/store/providers/memory/appstate.store.d.ts +1 -1
  522. package/dist/types/store/providers/memory/identity.store.d.ts +18 -0
  523. package/dist/types/store/providers/memory/message-secret.store.d.ts +21 -0
  524. package/dist/types/store/providers/memory/pre-key.store.d.ts +23 -0
  525. package/dist/types/store/providers/memory/privacy-token.store.d.ts +13 -0
  526. package/dist/types/store/providers/memory/retry.store.d.ts +15 -1
  527. package/dist/types/store/providers/memory/session.store.d.ts +21 -0
  528. package/dist/types/store/providers/memory/signal.store.d.ts +2 -43
  529. package/dist/types/store/providers/memory/thread.store.d.ts +1 -1
  530. package/dist/types/store/types.d.ts +69 -61
  531. package/dist/types/transport/WaWebSocket.d.ts +1 -1
  532. package/dist/types/transport/binary/constants.d.ts +0 -30
  533. package/dist/types/transport/binary/index.d.ts +0 -1
  534. package/dist/types/transport/index.d.ts +8 -1
  535. package/dist/types/transport/keepalive/WaKeepAlive.d.ts +4 -1
  536. package/dist/types/transport/node/WaMobileTcpSocket.d.ts +18 -0
  537. package/dist/types/transport/node/WaNodeOrchestrator.d.ts +9 -6
  538. package/dist/types/transport/node/builders/abprops.d.ts +5 -0
  539. package/dist/types/transport/node/builders/business.d.ts +29 -0
  540. package/dist/types/transport/node/builders/device.d.ts +2 -0
  541. package/dist/types/transport/node/builders/email.d.ts +11 -0
  542. package/dist/types/transport/node/builders/global.d.ts +102 -0
  543. package/dist/types/transport/node/builders/message.d.ts +8 -7
  544. package/dist/types/transport/node/builders/offline.d.ts +2 -0
  545. package/dist/types/transport/node/builders/pairing.d.ts +0 -2
  546. package/dist/types/transport/node/builders/prekeys.d.ts +4 -3
  547. package/dist/types/transport/node/builders/presence.d.ts +6 -0
  548. package/dist/types/transport/node/builders/privacy-token.d.ts +9 -0
  549. package/dist/types/transport/node/builders/privacy.d.ts +7 -0
  550. package/dist/types/transport/node/builders/profile.d.ts +8 -0
  551. package/dist/types/transport/node/builders/retry.d.ts +0 -1
  552. package/dist/types/transport/node/helpers.d.ts +8 -0
  553. package/dist/types/transport/node/mex/argo-decoder.d.ts +11 -0
  554. package/dist/types/transport/node/mex/client.d.ts +18 -0
  555. package/dist/types/transport/node/mex/persist-ids.d.ts +14 -0
  556. package/dist/types/transport/noise/WaMobileClientPayload.d.ts +29 -0
  557. package/dist/types/transport/noise/WaNoiseCert.d.ts +7 -1
  558. package/dist/types/transport/noise/WaNoiseSession.d.ts +4 -2
  559. package/dist/types/transport/noise/WaNoiseSocket.d.ts +4 -2
  560. package/dist/types/transport/types.d.ts +8 -0
  561. package/dist/types/util/bytes.d.ts +1 -1
  562. package/dist/types/util/index.d.ts +5 -0
  563. package/dist/types/util/primitives.d.ts +0 -1
  564. package/dist/util/bytes.js +22 -18
  565. package/dist/util/index.js +23 -0
  566. package/dist/util/primitives.js +2 -2
  567. package/package.json +34 -10
  568. package/proto/index.js +1 -1
  569. package/dist/auth/flow/WaAuthCredentialsFlow.js +0 -130
  570. package/dist/auth/pairing/constants.js +0 -5
  571. package/dist/client/connection/WaKeyShareCoordinator.js +0 -63
  572. package/dist/crypto/core/constants.js +0 -4
  573. package/dist/esm/auth/flow/WaAuthCredentialsFlow.js +0 -125
  574. package/dist/esm/auth/pairing/constants.js +0 -2
  575. package/dist/esm/client/connection/WaKeyShareCoordinator.js +0 -59
  576. package/dist/esm/crypto/core/constants.js +0 -1
  577. package/dist/esm/retry/outbound.js +0 -82
  578. package/dist/esm/store/providers/sqlite/BaseSqliteStore.js +0 -37
  579. package/dist/esm/store/providers/sqlite/appstate.store.js +0 -250
  580. package/dist/esm/store/providers/sqlite/auth.store.js +0 -176
  581. package/dist/esm/store/providers/sqlite/connection.js +0 -245
  582. package/dist/esm/store/providers/sqlite/contact.store.js +0 -74
  583. package/dist/esm/store/providers/sqlite/device-list.store.js +0 -127
  584. package/dist/esm/store/providers/sqlite/message.store.js +0 -132
  585. package/dist/esm/store/providers/sqlite/migrations.js +0 -347
  586. package/dist/esm/store/providers/sqlite/participants.store.js +0 -77
  587. package/dist/esm/store/providers/sqlite/retry.store.js +0 -141
  588. package/dist/esm/store/providers/sqlite/sender-key.store.js +0 -198
  589. package/dist/esm/store/providers/sqlite/signal.store.js +0 -435
  590. package/dist/esm/store/providers/sqlite/table-names.js +0 -107
  591. package/dist/esm/store/providers/sqlite/thread.store.js +0 -85
  592. package/dist/esm/transport/node/builders/index.js +0 -8
  593. package/dist/retry/outbound.js +0 -87
  594. package/dist/store/providers/sqlite/BaseSqliteStore.js +0 -41
  595. package/dist/store/providers/sqlite/appstate.store.js +0 -254
  596. package/dist/store/providers/sqlite/auth.store.js +0 -180
  597. package/dist/store/providers/sqlite/connection.js +0 -281
  598. package/dist/store/providers/sqlite/contact.store.js +0 -78
  599. package/dist/store/providers/sqlite/device-list.store.js +0 -131
  600. package/dist/store/providers/sqlite/message.store.js +0 -136
  601. package/dist/store/providers/sqlite/migrations.js +0 -350
  602. package/dist/store/providers/sqlite/participants.store.js +0 -81
  603. package/dist/store/providers/sqlite/retry.store.js +0 -145
  604. package/dist/store/providers/sqlite/sender-key.store.js +0 -202
  605. package/dist/store/providers/sqlite/signal.store.js +0 -439
  606. package/dist/store/providers/sqlite/table-names.js +0 -113
  607. package/dist/store/providers/sqlite/thread.store.js +0 -89
  608. package/dist/transport/node/builders/index.js +0 -42
  609. package/dist/types/appstate/store/sqlite.d.ts +0 -7
  610. package/dist/types/auth/flow/WaAuthCredentialsFlow.d.ts +0 -14
  611. package/dist/types/auth/pairing/constants.d.ts +0 -2
  612. package/dist/types/client/connection/WaKeyShareCoordinator.d.ts +0 -14
  613. package/dist/types/crypto/core/constants.d.ts +0 -1
  614. package/dist/types/retry/outbound.d.ts +0 -4
  615. package/dist/types/store/providers/sqlite/BaseSqliteStore.d.ts +0 -12
  616. package/dist/types/store/providers/sqlite/appstate.store.d.ts +0 -17
  617. package/dist/types/store/providers/sqlite/auth.store.d.ts +0 -10
  618. package/dist/types/store/providers/sqlite/connection.d.ts +0 -10
  619. package/dist/types/store/providers/sqlite/contact.store.d.ts +0 -12
  620. package/dist/types/store/providers/sqlite/device-list.store.d.ts +0 -15
  621. package/dist/types/store/providers/sqlite/message.store.d.ts +0 -13
  622. package/dist/types/store/providers/sqlite/migrations.d.ts +0 -3
  623. package/dist/types/store/providers/sqlite/participants.store.d.ts +0 -12
  624. package/dist/types/store/providers/sqlite/retry.store.d.ts +0 -15
  625. package/dist/types/store/providers/sqlite/sender-key.store.d.ts +0 -24
  626. package/dist/types/store/providers/sqlite/signal.store.d.ts +0 -53
  627. package/dist/types/store/providers/sqlite/table-names.d.ts +0 -5
  628. package/dist/types/store/providers/sqlite/thread.store.d.ts +0 -13
  629. package/dist/types/transport/node/builders/index.d.ts +0 -8
  630. /package/dist/appstate/{WaAppStateSyncResponseParser.js → response-parser.js} +0 -0
@@ -1,12 +1,14 @@
1
1
  import type { WaAuthClientOptions, WaAuthCredentials, WaAuthSocketOptions, WaSuccessPersistAttributes } from './types';
2
2
  import type { Logger } from '../infra/log/types';
3
3
  import type { WaAuthStore } from '../store/contracts/auth.store';
4
+ import type { WaPreKeyStore } from '../store/contracts/pre-key.store';
4
5
  import type { WaSignalStore } from '../store/contracts/signal.store';
5
- import type { BinaryNode } from '../transport/types';
6
+ import type { BinaryNode, WaNoiseTrustedRootCa } from '../transport/types';
6
7
  type WaAuthClientDeps = Readonly<{
7
8
  readonly logger: Logger;
8
9
  readonly authStore: WaAuthStore;
9
10
  readonly signalStore: WaSignalStore;
11
+ readonly preKeyStore: WaPreKeyStore;
10
12
  readonly socket: {
11
13
  readonly sendNode: (node: BinaryNode) => Promise<void>;
12
14
  readonly query: (node: BinaryNode, timeoutMs?: number) => Promise<BinaryNode>;
@@ -25,6 +27,7 @@ export declare class WaAuthClient {
25
27
  private readonly callbacks;
26
28
  private readonly authStore;
27
29
  private readonly signalStore;
30
+ private readonly preKeyStore;
28
31
  private readonly qrFlow;
29
32
  private readonly pairingFlow;
30
33
  private credentials;
@@ -37,7 +40,10 @@ export declare class WaAuthClient {
37
40
  };
38
41
  getCurrentCredentials(): WaAuthCredentials | null;
39
42
  loadOrCreateCredentials(): Promise<WaAuthCredentials>;
40
- buildCommsConfig(socketOptions: WaAuthSocketOptions): import("../transport/types").WaCommsConfig;
43
+ buildCommsConfig(socketOptions: WaAuthSocketOptions, overrides?: {
44
+ readonly noiseTrustedRootCa?: WaNoiseTrustedRootCa;
45
+ readonly disableNoiseCertificateChainVerification?: boolean;
46
+ }): import("../transport/types").WaCommsConfig;
41
47
  clearTransientState(): Promise<void>;
42
48
  clearStoredCredentials(): Promise<void>;
43
49
  persistServerStaticKey(serverStaticKey: Uint8Array): Promise<void>;
@@ -45,7 +51,7 @@ export declare class WaAuthClient {
45
51
  persistRoutingInfo(routingInfo: Uint8Array): Promise<void>;
46
52
  clearRoutingInfo(): Promise<WaAuthCredentials>;
47
53
  persistSuccessAttributes(attributes: WaSuccessPersistAttributes): Promise<void>;
48
- requestPairingCode(phoneNumber: string, shouldShowPushNotification?: boolean): Promise<string>;
54
+ requestPairingCode(phoneNumber: string, shouldShowPushNotification?: boolean, customCode?: string): Promise<string>;
49
55
  fetchPairingCountryCodeIso(): Promise<string>;
50
56
  handleIncomingIqSet(node: BinaryNode): Promise<boolean>;
51
57
  handleLinkCodeNotification(node: BinaryNode): Promise<boolean>;
@@ -0,0 +1,20 @@
1
+ import type { WaAuthClientOptions, WaAuthCredentials, WaAuthSocketOptions } from './types';
2
+ import type { Logger } from '../infra/log/types';
3
+ import type { WaAuthStore } from '../store/contracts/auth.store';
4
+ import type { WaPreKeyStore } from '../store/contracts/pre-key.store';
5
+ import type { WaSignalStore } from '../store/contracts/signal.store';
6
+ import type { WaCommsConfig, WaNoiseTrustedRootCa } from '../transport/types';
7
+ interface WaAuthCredentialsFlowArgs {
8
+ readonly logger: Logger;
9
+ readonly authStore: WaAuthStore;
10
+ readonly signalStore: WaSignalStore;
11
+ readonly preKeyStore: WaPreKeyStore;
12
+ readonly skipSignedPreKeySignatureVerification?: boolean;
13
+ }
14
+ export declare function loadOrCreateCredentials(args: WaAuthCredentialsFlowArgs): Promise<WaAuthCredentials>;
15
+ export declare function persistCredentials(args: WaAuthCredentialsFlowArgs, credentials: WaAuthCredentials): Promise<void>;
16
+ export declare function buildCommsConfig(logger: Logger, credentials: WaAuthCredentials, socketOptions: WaAuthSocketOptions, clientOptions: Pick<WaAuthClientOptions, 'deviceBrowser' | 'deviceOsDisplayName' | 'requireFullSync' | 'version' | 'mobileTransport'> & {
17
+ readonly noiseTrustedRootCa?: WaNoiseTrustedRootCa;
18
+ readonly disableNoiseCertificateChainVerification?: boolean;
19
+ }): WaCommsConfig;
20
+ export {};
@@ -1,4 +1,2 @@
1
1
  export * from './types';
2
2
  export { WaAuthClient } from './WaAuthClient';
3
- export { completeCompanionFinish, createCompanionHello } from './pairing/WaPairingCodeCrypto';
4
- export { WaAuthSqliteStore } from '../store/providers/sqlite/auth.store';
@@ -1,4 +1,4 @@
1
- import type { WaAuthCredentials } from '../types';
1
+ import type { WaAuthCredentials, WaAuthDangerousOptions } from '../types';
2
2
  import type { Logger } from '../../infra/log/types';
3
3
  import type { BinaryNode } from '../../transport/types';
4
4
  interface WaPairingFlowOptions {
@@ -26,6 +26,7 @@ interface WaPairingFlowOptions {
26
26
  readonly emitPairingRefresh: (forceManual: boolean) => void;
27
27
  readonly emitPaired: (credentials: WaAuthCredentials) => void;
28
28
  };
29
+ readonly dangerous?: WaAuthDangerousOptions;
29
30
  }
30
31
  export declare class WaPairingFlow {
31
32
  private readonly opts;
@@ -33,7 +34,7 @@ export declare class WaPairingFlow {
33
34
  constructor(options: WaPairingFlowOptions);
34
35
  hasPairingSession(): boolean;
35
36
  clearSession(): void;
36
- requestPairingCode(phoneNumber: string, shouldShowPushNotification?: boolean): Promise<string>;
37
+ requestPairingCode(phoneNumber: string, shouldShowPushNotification?: boolean, customCode?: string): Promise<string>;
37
38
  fetchPairingCountryCodeIso(): Promise<string>;
38
39
  handleIncomingIqSet(node: BinaryNode): Promise<boolean>;
39
40
  handleLinkCodeNotification(node: BinaryNode): Promise<boolean>;
@@ -1,5 +1,10 @@
1
1
  import type { SignalKeyPair } from '../../crypto/curves/types';
2
- export declare function createCompanionHello(): Promise<{
2
+ export declare const CROCKFORD_ALPHABET = "123456789ABCDEFGHJKLMNPQRSTVWXYZ";
3
+ export declare const PBKDF2_ITERATIONS: number;
4
+ export declare function normalizeCustomPairingCode(input: string): string;
5
+ export declare function createCompanionHello(options?: {
6
+ readonly customCode?: string;
7
+ }): Promise<{
3
8
  readonly pairingCode: string;
4
9
  readonly companionEphemeralKeyPair: SignalKeyPair;
5
10
  readonly wrappedCompanionEphemeralPub: Uint8Array;
@@ -1,7 +1,9 @@
1
1
  import type { SignalKeyPair } from '../crypto/curves/types';
2
2
  import type { Proto } from '..';
3
3
  import type { RegistrationInfo, SignedPreKeyRecord } from '../signal/types';
4
+ import type { WaMobileTransportDeviceInfo } from '../transport/noise/WaMobileClientPayload';
4
5
  import type { WaCommsConfig, WaProxyTransport } from '../transport/types';
6
+ export type { WaMobileTransportDeviceInfo } from '../transport/noise/WaMobileClientPayload';
5
7
  export interface WaAuthCredentials {
6
8
  readonly noiseKeyPair: SignalKeyPair;
7
9
  readonly registrationInfo: RegistrationInfo;
@@ -21,6 +23,10 @@ export interface WaAuthCredentials {
21
23
  readonly abPropsVersion?: number;
22
24
  readonly connectionLocation?: string;
23
25
  readonly accountCreationTs?: number;
26
+ readonly deviceInfo?: WaMobileTransportDeviceInfo;
27
+ readonly pushName?: string;
28
+ readonly yearClass?: number;
29
+ readonly memClass?: number;
24
30
  }
25
31
  export type WaAuthSocketOptions = Pick<WaCommsConfig, 'url' | 'urls' | 'protocols' | 'connectTimeoutMs' | 'reconnectIntervalMs' | 'timeoutIntervalMs' | 'maxReconnectAttempts'> & {
26
32
  readonly proxy?: {
@@ -32,6 +38,41 @@ export interface WaAuthClientOptions {
32
38
  readonly devicePlatform?: string;
33
39
  readonly deviceOsDisplayName?: string;
34
40
  readonly requireFullSync?: boolean;
41
+ readonly version?: string;
42
+ readonly dangerous?: WaAuthDangerousOptions;
43
+ readonly mobileTransport?: WaMobileTransportOptions;
44
+ }
45
+ export interface WaMobileTransportOptions {
46
+ readonly deviceInfo: WaMobileTransportDeviceInfo;
47
+ readonly tcpUrl?: string;
48
+ readonly passive?: boolean;
49
+ readonly pushName?: string;
50
+ readonly yearClass?: number;
51
+ readonly memClass?: number;
52
+ }
53
+ export interface WaAuthDangerousOptions {
54
+ /**
55
+ * Skip the noise certificate-chain verification during the handshake.
56
+ * The server's static key will be accepted without proof that it was
57
+ * issued by a trusted root.
58
+ */
59
+ readonly disableNoiseCertificateChainVerification?: boolean;
60
+ /**
61
+ * Skip the XEdDSA account-signature check on the `pair-success` ADV
62
+ * identity payload, which normally proves the primary device signed off
63
+ * on this companion.
64
+ */
65
+ readonly disableAdvSignatureVerification?: boolean;
66
+ /**
67
+ * Skip the HMAC check on the `pair-success` stanza that ties the ADV
68
+ * payload to the shared pairing secret.
69
+ */
70
+ readonly disablePairSuccessHmacVerification?: boolean;
71
+ /**
72
+ * Skip the XEdDSA signature check on the locally stored signed pre-key
73
+ * during credential load. Corrupt or forged credentials will be accepted.
74
+ */
75
+ readonly disableSignedPreKeySignatureVerification?: boolean;
35
76
  }
36
77
  export interface WaSuccessPersistAttributes {
37
78
  readonly meLid?: string;
@@ -1,14 +1,20 @@
1
1
  import { EventEmitter } from 'node:events';
2
- import type { WaAppStateStoreData, WaAppStateSyncResult } from '../appstate/types';
3
- import type { WaAppStateSyncOptions } from '../appstate/types';
2
+ import type { WaAppStateStoreData, WaAppStateSyncOptions, WaAppStateSyncResult } from '../appstate/types';
4
3
  import type { WaAppStateSyncClient } from '../appstate/WaAppStateSyncClient';
4
+ import type { WaAppStateMutationCoordinator } from './coordinators/WaAppStateMutationCoordinator';
5
+ import type { WaBusinessCoordinator } from './coordinators/WaBusinessCoordinator';
6
+ import type { WaEmailCoordinator } from './coordinators/WaEmailCoordinator';
5
7
  import type { WaGroupCoordinator } from './coordinators/WaGroupCoordinator';
6
8
  import type { WaMessageDispatchCoordinator } from './coordinators/WaMessageDispatchCoordinator';
7
- import type { WaAppStateMessageKey, WaClearChatOptions, WaClientOptions, WaDeleteChatOptions, WaDeleteMessageForMeOptions, WaSendMessageOptions, WaClientEventMap, 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 { WaClientEventMap, WaClientOptions, WaIncomingNodeHandlerRegistration, WaSendMessageOptions } from './types';
8
13
  import type { Logger } from '../infra/log/types';
9
14
  import type { WaMediaTransferClient } from '../media/WaMediaTransferClient';
10
15
  import type { WaMessagePublishResult, WaSendMessageContent, WaSendReceiptInput } from '../message/types';
11
16
  import type { WaMessageClient } from '../message/WaMessageClient';
17
+ import { type WaLogoutReason } from '../protocol/stream';
12
18
  import type { SignalLidSyncResult } from '../signal/api/SignalDeviceSyncApi';
13
19
  import type { BinaryNode } from '../transport/types';
14
20
  export declare class WaClient extends EventEmitter {
@@ -17,10 +23,15 @@ export declare class WaClient extends EventEmitter {
17
23
  private readonly appStateStore;
18
24
  private readonly contactStore;
19
25
  private readonly messageStore;
26
+ private readonly messageSecretStore;
20
27
  private readonly participantsStore;
28
+ private readonly privacyTokenStore;
21
29
  private readonly deviceListStore;
22
30
  private readonly retryStore;
23
31
  private readonly signalStore;
32
+ private readonly preKeyStore;
33
+ private readonly sessionStore;
34
+ private readonly identityStore;
24
35
  private readonly senderKeyStore;
25
36
  private readonly threadStore;
26
37
  private readonly authClient;
@@ -28,18 +39,26 @@ export declare class WaClient extends EventEmitter {
28
39
  private readonly nodeTransport;
29
40
  private readonly signalDeviceSync;
30
41
  readonly appStateSync: WaAppStateSyncClient;
31
- private readonly appStateMutations;
42
+ readonly chatCoordinator: WaAppStateMutationCoordinator;
32
43
  private readonly incomingNode;
33
44
  readonly mediaTransfer: WaMediaTransferClient;
34
45
  readonly messageDispatch: WaMessageDispatchCoordinator;
35
46
  readonly messageClient: WaMessageClient;
36
47
  readonly groupCoordinator: WaGroupCoordinator;
48
+ readonly privacyCoordinator: WaPrivacyCoordinator;
49
+ readonly profileCoordinator: WaProfileCoordinator;
50
+ readonly businessCoordinator: WaBusinessCoordinator;
51
+ readonly emailCoordinator: WaEmailCoordinator;
37
52
  private readonly passiveTasks;
38
53
  private readonly keepAlive;
39
54
  private readonly receiptQueue;
40
- private readonly keyShareCoordinator;
41
55
  private readonly connectionManager;
56
+ private readonly trustedContactToken;
57
+ private readonly writeBehind;
42
58
  private connectPromise;
59
+ private acceptingIncomingEvents;
60
+ private activeIncomingHandlers;
61
+ private readonly incomingHandlersDrainedWaiters;
43
62
  constructor(options: WaClientOptions, logger?: Logger);
44
63
  on<K extends keyof WaClientEventMap>(event: K, listener: WaClientEventMap[K]): this;
45
64
  on(event: string | symbol, listener: (...args: unknown[]) => void): this;
@@ -55,14 +74,16 @@ export declare class WaClient extends EventEmitter {
55
74
  hasQr: boolean;
56
75
  hasPairingCode: boolean;
57
76
  };
58
- getCredentials(): import("../auth").WaAuthCredentials | null;
77
+ getCredentials(): import("..").WaAuthCredentials | null;
59
78
  getClockSkewMs(): number | null;
60
79
  sendNode(node: BinaryNode): Promise<void>;
61
- query(node: BinaryNode, timeoutMs?: number): Promise<BinaryNode>;
80
+ sendPresence(type?: 'available' | 'unavailable'): Promise<void>;
81
+ query(node: BinaryNode, timeoutMs?: number, options?: {
82
+ readonly useSystemId?: boolean;
83
+ }): Promise<BinaryNode>;
62
84
  registerIncomingHandler(registration: WaIncomingNodeHandlerRegistration): () => void;
63
85
  unregisterIncomingHandler(registration: WaIncomingNodeHandlerRegistration): boolean;
64
86
  private bindNodeTransportEvents;
65
- private getMailboxPersistenceDeps;
66
87
  private handleIncomingMessageEvent;
67
88
  private handleIncomingAppStateSyncKeyShare;
68
89
  private handleIncomingAppStateSyncKeyRequest;
@@ -73,27 +94,32 @@ export declare class WaClient extends EventEmitter {
73
94
  private handleIncomingFrame;
74
95
  connect(): Promise<void>;
75
96
  disconnect(): Promise<void>;
76
- requestPairingCode(phoneNumber: string, shouldShowPushNotification?: boolean): Promise<string>;
97
+ requestPairingCode(phoneNumber: string, shouldShowPushNotification?: boolean, customCode?: string): Promise<string>;
77
98
  fetchPairingCountryCodeIso(): Promise<string>;
78
99
  getLidsByPhoneNumbers(phoneNumbers: readonly string[]): Promise<readonly SignalLidSyncResult[]>;
79
100
  sendMessage(to: string, content: WaSendMessageContent, options?: WaSendMessageOptions): Promise<WaMessagePublishResult>;
80
101
  syncSignalSession(jid: string, reasonIdentity?: boolean): Promise<void>;
102
+ get chat(): WaAppStateMutationCoordinator;
103
+ get group(): WaGroupCoordinator;
104
+ get privacy(): WaPrivacyCoordinator;
105
+ get profile(): WaProfileCoordinator;
106
+ get business(): WaBusinessCoordinator;
107
+ get email(): WaEmailCoordinator;
108
+ logout(reason?: WaLogoutReason): Promise<void>;
81
109
  sendReceipt(input: WaSendReceiptInput): Promise<void>;
82
- setChatMute(chatJid: string, muted: boolean, muteEndTimestampMs?: number): Promise<void>;
83
- setChatRead(chatJid: string, read: boolean): Promise<void>;
84
- setChatPin(chatJid: string, pinned: boolean): Promise<void>;
85
- setChatArchive(chatJid: string, archived: boolean): Promise<void>;
86
- clearChat(chatJid: string, options?: WaClearChatOptions): Promise<void>;
87
- deleteChat(chatJid: string, options?: WaDeleteChatOptions): Promise<void>;
88
- setChatLock(chatJid: string, locked: boolean): Promise<void>;
89
- setMessageStar(message: WaAppStateMessageKey, starred: boolean): Promise<void>;
90
- deleteMessageForMe(message: WaAppStateMessageKey, options?: WaDeleteMessageForMeOptions): Promise<void>;
91
110
  flushAppStateMutations(): Promise<void>;
111
+ flushWriteBehind(timeoutMs?: number): Promise<WriteBehindDrainResult>;
92
112
  exportAppState(): Promise<WaAppStateStoreData>;
93
113
  syncAppState(options?: WaAppStateSyncOptions): Promise<WaAppStateSyncResult>;
94
114
  private executeAppStateSync;
95
115
  private getBlockedAppStateCollections;
96
116
  private emitChatEventsFromAppStateSyncResult;
117
+ private handleNctSaltMutation;
97
118
  private clearStoredState;
119
+ private tryDecryptAddon;
120
+ private tryEnterIncomingHandler;
121
+ private leaveIncomingHandler;
122
+ private pauseIncomingEventsAndWaitDrain;
123
+ private notifyIncomingHandlersDrained;
98
124
  private handleError;
99
125
  }
@@ -2,16 +2,21 @@ import type { WaAppStateSyncOptions, WaAppStateSyncResult } from '../appstate/ty
2
2
  import { WaAppStateSyncClient } from '../appstate/WaAppStateSyncClient';
3
3
  import { WaAuthClient } from '../auth/WaAuthClient';
4
4
  import { WaConnectionManager } from './connection/WaConnectionManager';
5
- import { WaKeyShareCoordinator } from './connection/WaKeyShareCoordinator';
6
5
  import { WaReceiptQueue } from './connection/WaReceiptQueue';
6
+ import { WaAbPropsCoordinator } from './coordinators/WaAbPropsCoordinator';
7
7
  import { WaAppStateMutationCoordinator } from './coordinators/WaAppStateMutationCoordinator';
8
+ import { type WaBusinessCoordinator } from './coordinators/WaBusinessCoordinator';
9
+ import { type WaEmailCoordinator } from './coordinators/WaEmailCoordinator';
8
10
  import { type WaGroupCoordinator } from './coordinators/WaGroupCoordinator';
9
11
  import { WaIncomingNodeCoordinator } from './coordinators/WaIncomingNodeCoordinator';
10
12
  import { WaMessageDispatchCoordinator } from './coordinators/WaMessageDispatchCoordinator';
11
13
  import { WaPassiveTasksCoordinator } from './coordinators/WaPassiveTasksCoordinator';
14
+ import { type WaPrivacyCoordinator } from './coordinators/WaPrivacyCoordinator';
15
+ import { type WaProfileCoordinator } from './coordinators/WaProfileCoordinator';
12
16
  import { WaRetryCoordinator } from './coordinators/WaRetryCoordinator';
13
17
  import { type WaStreamControlHandler } from './coordinators/WaStreamControlCoordinator';
14
- import { buildMediaMessageContent } from './messages';
18
+ import { WaTrustedContactTokenCoordinator } from './coordinators/WaTrustedContactTokenCoordinator';
19
+ import { type WaMediaMessageOptions } from './messages';
15
20
  import type { WaClientEventMap, WaClientOptions, WaIncomingMessageEvent } from './types';
16
21
  import type { Logger } from '../infra/log/types';
17
22
  import { WaMediaTransferClient } from '../media/WaMediaTransferClient';
@@ -28,7 +33,6 @@ import { WaKeepAlive } from '../transport/keepalive/WaKeepAlive';
28
33
  import { WaNodeOrchestrator } from '../transport/node/WaNodeOrchestrator';
29
34
  import { WaNodeTransport } from '../transport/node/WaNodeTransport';
30
35
  import type { BinaryNode } from '../transport/types';
31
- type WaMediaMessageBuildOptions = Parameters<typeof buildMediaMessageContent>[0];
32
36
  interface WaClientBase {
33
37
  readonly options: Readonly<WaClientOptions>;
34
38
  readonly logger: Logger;
@@ -36,8 +40,12 @@ interface WaClientBase {
36
40
  }
37
41
  interface WaClientBuildRuntime {
38
42
  readonly sendNode: (node: BinaryNode) => Promise<void>;
39
- readonly query: (node: BinaryNode, timeoutMs?: number) => Promise<BinaryNode>;
40
- readonly queryWithContext: (context: string, node: BinaryNode, timeoutMs?: number, contextData?: Readonly<Record<string, unknown>>) => Promise<BinaryNode>;
43
+ readonly query: (node: BinaryNode, timeoutMs?: number, options?: {
44
+ readonly useSystemId?: boolean;
45
+ }) => Promise<BinaryNode>;
46
+ readonly queryWithContext: (context: string, node: BinaryNode, timeoutMs?: number, contextData?: Readonly<Record<string, unknown>>, options?: {
47
+ readonly useSystemId?: boolean;
48
+ }) => Promise<BinaryNode>;
41
49
  readonly syncAppState: () => Promise<void>;
42
50
  readonly syncAppStateWithOptions: (options?: WaAppStateSyncOptions) => Promise<WaAppStateSyncResult>;
43
51
  readonly emitEvent: <K extends keyof WaClientEventMap>(event: K, ...args: Parameters<WaClientEventMap[K]>) => void;
@@ -45,13 +53,14 @@ interface WaClientBuildRuntime {
45
53
  readonly handleError: (error: Error) => void;
46
54
  readonly handleIncomingFrame: (frame: Uint8Array) => Promise<void>;
47
55
  readonly clearStoredState: () => Promise<void>;
56
+ readonly resumeIncomingEvents: () => void;
48
57
  }
49
58
  interface WaClientDependencies {
50
59
  readonly nodeTransport: WaNodeTransport;
51
60
  readonly nodeOrchestrator: WaNodeOrchestrator;
52
61
  readonly keepAlive: WaKeepAlive;
53
62
  readonly mediaTransfer: WaMediaTransferClient;
54
- readonly mediaMessageBuildOptions: WaMediaMessageBuildOptions;
63
+ readonly mediaMessageBuildOptions: WaMediaMessageOptions;
55
64
  readonly messageClient: WaMessageClient;
56
65
  readonly senderKeyManager: SenderKeyManager;
57
66
  readonly signalProtocol: SignalProtocol;
@@ -65,14 +74,19 @@ interface WaClientDependencies {
65
74
  readonly messageDispatch: WaMessageDispatchCoordinator;
66
75
  readonly retryCoordinator: WaRetryCoordinator;
67
76
  readonly appStateSync: WaAppStateSyncClient;
68
- readonly appStateMutations: WaAppStateMutationCoordinator;
77
+ readonly chatCoordinator: WaAppStateMutationCoordinator;
69
78
  readonly streamControl: WaStreamControlHandler;
70
79
  readonly incomingNode: WaIncomingNodeCoordinator;
71
80
  readonly passiveTasks: WaPassiveTasksCoordinator;
72
81
  readonly groupCoordinator: WaGroupCoordinator;
82
+ readonly privacyCoordinator: WaPrivacyCoordinator;
83
+ readonly profileCoordinator: WaProfileCoordinator;
84
+ readonly businessCoordinator: WaBusinessCoordinator;
85
+ readonly emailCoordinator: WaEmailCoordinator;
73
86
  readonly receiptQueue: WaReceiptQueue;
74
- readonly keyShareCoordinator: WaKeyShareCoordinator;
75
87
  readonly connectionManager: WaConnectionManager;
88
+ readonly trustedContactToken: WaTrustedContactTokenCoordinator;
89
+ readonly abPropsCoordinator: WaAbPropsCoordinator;
76
90
  }
77
91
  export declare function resolveWaClientBase(options: WaClientOptions, logger: Logger): WaClientBase;
78
92
  export declare function buildWaClientDependencies(input: {
@@ -35,12 +35,14 @@ export declare class WaConnectionManager {
35
35
  private pendingComms;
36
36
  private lifecycleGeneration;
37
37
  private lifecycleQueue;
38
+ private lastConnectWasNewLogin;
38
39
  constructor(options: WaConnectionManagerOptions);
39
40
  connect(frameHandler: (frame: Uint8Array) => Promise<void>): Promise<void>;
40
41
  scheduleReconnectAfterPairing(): void;
41
42
  disconnect(): Promise<void>;
42
43
  clearStoredCredentials(): Promise<void>;
43
44
  isConnected(): boolean;
45
+ wasNewLogin(): boolean;
44
46
  getComms(): WaComms | null;
45
47
  getClockSkewMs(): number | null;
46
48
  getMediaConnCache(): WaMediaConn | null;
@@ -0,0 +1,26 @@
1
+ import type { Logger } from '../../infra/log/types';
2
+ import { type AbPropName, type AbPropValue } from '../../protocol/abprops';
3
+ import type { BinaryNode } from '../../transport/types';
4
+ type WaAbPropsRuntime = {
5
+ readonly queryWithContext: (context: string, node: BinaryNode, timeoutMs?: number, contextData?: Readonly<Record<string, unknown>>) => Promise<BinaryNode>;
6
+ };
7
+ export declare class WaAbPropsCoordinator {
8
+ private readonly logger;
9
+ private readonly runtime;
10
+ private readonly cache;
11
+ private readonly syncState;
12
+ private syncPromise;
13
+ private syncEpoch;
14
+ private pendingSync;
15
+ constructor(options: {
16
+ readonly logger: Logger;
17
+ readonly runtime: WaAbPropsRuntime;
18
+ });
19
+ getConfigValue<T extends AbPropValue>(name: AbPropName): T;
20
+ sync(): void;
21
+ reset(): void;
22
+ private startSync;
23
+ private executeSyncWithRetry;
24
+ private executeSync;
25
+ }
26
+ 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 {};
@@ -0,0 +1,24 @@
1
+ import { type WaEmailContext } from '../../protocol/email';
2
+ import { type BuildRequestEmailVerificationCodeInput } from '../../transport/node/builders/email';
3
+ import type { BinaryNode } from '../../transport/types';
4
+ export interface WaEmailStatus {
5
+ readonly email: string | null;
6
+ readonly verified: boolean;
7
+ readonly confirmed: boolean;
8
+ }
9
+ export interface WaEmailVerifyCodeResult {
10
+ readonly verified: boolean;
11
+ readonly autoVerifyFailed: boolean;
12
+ readonly email: string | null;
13
+ }
14
+ export interface WaEmailCoordinator {
15
+ readonly getStatus: () => Promise<WaEmailStatus>;
16
+ readonly setEmail: (email: string, context?: WaEmailContext) => Promise<WaEmailStatus>;
17
+ readonly requestVerificationCode: (input: BuildRequestEmailVerificationCodeInput) => Promise<void>;
18
+ readonly verifyCode: (code: string) => Promise<WaEmailVerifyCodeResult>;
19
+ readonly confirm: (context?: WaEmailContext) => Promise<void>;
20
+ }
21
+ export interface WaEmailCoordinatorOptions {
22
+ readonly queryWithContext: (context: string, node: BinaryNode, timeoutMs?: number, contextData?: Readonly<Record<string, unknown>>) => Promise<BinaryNode>;
23
+ }
24
+ export declare function createEmailCoordinator(options: WaEmailCoordinatorOptions): WaEmailCoordinator;
@@ -1,7 +1,9 @@
1
1
  import type { WaSuccessPersistAttributes } from '../../auth/types';
2
+ import type { WaOfflineResumeCoordinator } from '../coordinators/WaOfflineResumeCoordinator';
2
3
  import type { WaDirtyBit } from '../dirty';
3
- import type { WaIncomingBaseEvent, WaIncomingCallEvent, WaIncomingChatstateEvent, WaIncomingFailureEvent, WaGroupEvent, WaIncomingNodeHandlerRegistration, WaIncomingNotificationEvent, WaIncomingPresenceEvent, WaIncomingReceiptEvent, WaIncomingUnhandledStanzaEvent } from '../types';
4
+ import type { WaAccountTakeoverNoticeEvent, WaGroupEvent, WaIncomingBaseEvent, WaIncomingCallEvent, WaIncomingChatstateEvent, WaIncomingFailureEvent, WaIncomingNodeHandlerRegistration, WaIncomingNotificationEvent, WaIncomingPresenceEvent, WaIncomingReceiptEvent, WaIncomingUnhandledStanzaEvent, WaRegistrationCodeEvent } from '../types';
4
5
  import type { Logger } from '../../infra/log/types';
6
+ import type { WaConnectionCode, WaDisconnectReason } from '../../protocol/stream';
5
7
  import { type WaStreamControlNodeResult } from '../../transport/stream/parse';
6
8
  import type { BinaryNode } from '../../transport/types';
7
9
  interface WaIncomingNodeRuntime {
@@ -28,10 +30,13 @@ interface WaIncomingNodeRuntime {
28
30
  readonly emitIncomingFailure: (event: WaIncomingFailureEvent) => void;
29
31
  readonly emitIncomingErrorStanza: (event: WaIncomingBaseEvent) => void;
30
32
  readonly emitIncomingNotification: (event: WaIncomingNotificationEvent) => void;
33
+ readonly emitRegistrationCode: (event: WaRegistrationCodeEvent) => void;
34
+ readonly emitAccountTakeoverNotice: (event: WaAccountTakeoverNoticeEvent) => void;
31
35
  readonly emitGroupEvent: (event: WaGroupEvent) => void;
32
36
  readonly emitUnhandledIncomingNode: (event: WaIncomingUnhandledStanzaEvent) => void;
33
37
  readonly syncAppState: () => Promise<void>;
34
- readonly disconnect: () => Promise<void>;
38
+ readonly stopComms: () => void;
39
+ readonly disconnect: (reason: WaDisconnectReason, isLogout: boolean, code: WaConnectionCode | null) => Promise<void>;
35
40
  readonly clearStoredCredentials: () => Promise<void>;
36
41
  readonly parseDirtyBits: (nodes: readonly BinaryNode[]) => readonly WaDirtyBit[];
37
42
  readonly handleDirtyBits: (dirtyBits: readonly WaDirtyBit[]) => Promise<void>;
@@ -39,10 +44,12 @@ interface WaIncomingNodeRuntime {
39
44
  interface WaIncomingNodeCoordinatorOptions {
40
45
  readonly logger: Logger;
41
46
  readonly runtime: WaIncomingNodeRuntime;
47
+ readonly offlineResume: WaOfflineResumeCoordinator;
42
48
  }
43
49
  export declare class WaIncomingNodeCoordinator {
44
50
  private readonly logger;
45
51
  private readonly runtime;
52
+ private readonly offlineResume;
46
53
  private readonly nodeHandlerRegistry;
47
54
  private mediaConnWarmupPromise;
48
55
  constructor(options: WaIncomingNodeCoordinatorOptions);
@@ -2,15 +2,20 @@ import type { WaAppStateSyncKey } from '../../appstate/types';
2
2
  import type { DeviceFanoutResolver } from '../messaging/fanout';
3
3
  import type { AppStateSyncKeyProtocol } from '../messaging/key-protocol';
4
4
  import type { GroupParticipantsCache } from '../messaging/participants';
5
- import type { WaGroupEvent, WaSignalMessagePublishInput, WaSendMessageOptions } from '../types';
5
+ import type { WaGroupEvent, WaSendMessageOptions, WaSignalMessagePublishInput } from '../types';
6
6
  import type { Logger } from '../../infra/log/types';
7
7
  import type { WaEncryptedMessageInput, WaMessagePublishOptions, WaMessagePublishResult, WaSendMessageContent, WaSendReceiptInput } from '../../message/types';
8
8
  import type { WaMessageClient } from '../../message/WaMessageClient';
9
- import type { Proto } from '../..';
9
+ import { type Proto } from '../..';
10
10
  import type { OutboundRetryTracker } from '../../retry/tracker';
11
11
  import type { SenderKeyManager } from '../../signal/group/SenderKeyManager';
12
12
  import type { SignalSessionResolver } from '../../signal/session/resolver';
13
13
  import type { SignalProtocol } from '../../signal/session/SignalProtocol';
14
+ import type { WaDeviceListStore } from '../../store/contracts/device-list.store';
15
+ import type { WaIdentityStore } from '../../store/contracts/identity.store';
16
+ import type { WaMessageSecretStore } from '../../store/contracts/message-secret.store';
17
+ import type { WaSessionStore } from '../../store/contracts/session.store';
18
+ import type { WaSignalStore } from '../../store/contracts/signal.store';
14
19
  import type { BinaryNode } from '../../transport/types';
15
20
  interface WaMessageDispatchCoordinatorOptions {
16
21
  readonly logger: Logger;
@@ -23,9 +28,18 @@ interface WaMessageDispatchCoordinatorOptions {
23
28
  readonly buildMessageContent: (content: WaSendMessageContent) => Promise<Proto.IMessage>;
24
29
  readonly senderKeyManager: SenderKeyManager;
25
30
  readonly signalProtocol: SignalProtocol;
31
+ readonly signalStore: WaSignalStore;
32
+ readonly sessionStore: WaSessionStore;
33
+ readonly identityStore: WaIdentityStore;
34
+ readonly deviceListStore: WaDeviceListStore;
35
+ readonly messageSecretStore: WaMessageSecretStore;
26
36
  readonly getCurrentMeJid: () => string | null | undefined;
27
37
  readonly getCurrentMeLid: () => string | null | undefined;
28
38
  readonly getCurrentSignedIdentity: () => Proto.IADVSignedDeviceIdentity | null | undefined;
39
+ readonly resolvePrivacyTokenNode: (recipientJid: string) => Promise<BinaryNode | null>;
40
+ readonly onDirectMessageSent: (recipientJid: string) => void;
41
+ readonly getIcdcHashLength?: () => number;
42
+ readonly mobileMessageIdFormat?: boolean;
29
43
  }
30
44
  export declare class WaMessageDispatchCoordinator {
31
45
  private readonly logger;
@@ -38,9 +52,21 @@ export declare class WaMessageDispatchCoordinator {
38
52
  private readonly buildMessageContent;
39
53
  private readonly senderKeyManager;
40
54
  private readonly signalProtocol;
55
+ private readonly signalStore;
56
+ private readonly sessionStore;
57
+ private readonly identityStore;
58
+ private readonly deviceListStore;
59
+ private readonly messageSecretStore;
41
60
  private readonly getCurrentMeJid;
42
61
  private readonly getCurrentMeLid;
43
62
  private readonly getCurrentSignedIdentity;
63
+ private readonly resolvePrivacyTokenNode;
64
+ private readonly onDirectMessageSent;
65
+ private readonly getIcdcHashLength;
66
+ private readonly mobileMessageIdFormat;
67
+ private readonly icdcDedup;
68
+ private readonly privacyTokenDedup;
69
+ private readonly distributionDedup;
44
70
  constructor(options: WaMessageDispatchCoordinatorOptions);
45
71
  publishMessageNode(node: BinaryNode, options?: WaMessagePublishOptions): Promise<WaMessagePublishResult>;
46
72
  publishEncryptedMessage(input: WaEncryptedMessageInput, options?: WaMessagePublishOptions): Promise<WaMessagePublishResult>;
@@ -62,6 +88,7 @@ export declare class WaMessageDispatchCoordinator {
62
88
  private generateOutgoingMessageId;
63
89
  private tryBuildReportingTokenArtifacts;
64
90
  private getEncodedSignedDeviceIdentity;
91
+ private resolveUserIcdc;
65
92
  private requireCurrentMeJid;
66
93
  }
67
94
  export {};