zapo-js 0.2.0 → 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 (351) hide show
  1. package/README.md +7 -3
  2. package/dist/appstate/WaAppStateCrypto.js +49 -41
  3. package/dist/appstate/WaAppStateSyncClient.js +79 -42
  4. package/dist/appstate/index.js +2 -2
  5. package/dist/auth/WaAuthClient.js +20 -11
  6. package/dist/auth/{flow/WaAuthCredentialsFlow.js → credentials-flow.js} +83 -18
  7. package/dist/auth/pairing/WaPairingFlow.js +26 -29
  8. package/dist/auth/pairing/{WaPairingCodeCrypto.js → pairing-code-crypto.js} +29 -13
  9. package/dist/client/WaClient.js +115 -75
  10. package/dist/client/WaClientFactory.js +113 -30
  11. package/dist/client/connection/WaConnectionManager.js +4 -1
  12. package/dist/client/coordinators/WaAbPropsCoordinator.js +141 -0
  13. package/dist/client/coordinators/WaBusinessCoordinator.js +3 -12
  14. package/dist/client/coordinators/WaEmailCoordinator.js +63 -0
  15. package/dist/client/coordinators/WaIncomingNodeCoordinator.js +33 -8
  16. package/dist/client/coordinators/WaMessageDispatchCoordinator.js +55 -25
  17. package/dist/client/coordinators/WaOfflineResumeCoordinator.js +114 -0
  18. package/dist/client/coordinators/WaPassiveTasksCoordinator.js +38 -20
  19. package/dist/client/coordinators/WaProfileCoordinator.js +3 -1
  20. package/dist/client/coordinators/WaRetryCoordinator.js +11 -9
  21. package/dist/client/coordinators/WaTrustedContactTokenCoordinator.js +22 -4
  22. package/dist/client/dirty.js +1 -1
  23. package/dist/client/events/abprops.js +43 -0
  24. package/dist/client/events/privacy-token.js +1 -2
  25. package/dist/client/events/registration.js +42 -0
  26. package/dist/client/incoming.js +37 -0
  27. package/dist/client/mailbox.js +17 -1
  28. package/dist/client/media.js +243 -0
  29. package/dist/client/messages.js +163 -86
  30. package/dist/crypto/core/index.js +4 -1
  31. package/dist/crypto/core/random.js +3 -9
  32. package/dist/crypto/core/xeddsa.js +57 -0
  33. package/dist/crypto/curves/X25519.js +18 -0
  34. package/dist/crypto/curves/constants.js +2 -1
  35. package/dist/esm/appstate/WaAppStateCrypto.js +39 -31
  36. package/dist/esm/appstate/WaAppStateSyncClient.js +68 -31
  37. package/dist/esm/appstate/index.js +1 -1
  38. package/dist/esm/appstate/{WaAppStateSyncResponseParser.js → response-parser.js} +1 -1
  39. package/dist/esm/auth/WaAuthClient.js +17 -8
  40. package/dist/esm/auth/{flow/WaAuthCredentialsFlow.js → credentials-flow.js} +83 -18
  41. package/dist/esm/auth/pairing/WaPairingFlow.js +25 -28
  42. package/dist/esm/auth/pairing/{WaPairingCodeCrypto.js → pairing-code-crypto.js} +20 -6
  43. package/dist/esm/client/WaClient.js +116 -76
  44. package/dist/esm/client/WaClientFactory.js +114 -31
  45. package/dist/esm/client/connection/WaConnectionManager.js +4 -1
  46. package/dist/esm/client/coordinators/WaAbPropsCoordinator.js +137 -0
  47. package/dist/esm/client/coordinators/WaBusinessCoordinator.js +4 -13
  48. package/dist/esm/client/coordinators/WaEmailCoordinator.js +60 -0
  49. package/dist/esm/client/coordinators/WaIncomingNodeCoordinator.js +35 -10
  50. package/dist/esm/client/coordinators/WaMessageDispatchCoordinator.js +47 -17
  51. package/dist/esm/client/coordinators/WaOfflineResumeCoordinator.js +110 -0
  52. package/dist/esm/client/coordinators/WaPassiveTasksCoordinator.js +38 -20
  53. package/dist/esm/client/coordinators/WaProfileCoordinator.js +3 -1
  54. package/dist/esm/client/coordinators/WaRetryCoordinator.js +11 -9
  55. package/dist/esm/client/coordinators/WaTrustedContactTokenCoordinator.js +24 -6
  56. package/dist/esm/client/dirty.js +1 -1
  57. package/dist/esm/client/events/abprops.js +40 -0
  58. package/dist/esm/client/events/privacy-token.js +1 -2
  59. package/dist/esm/client/events/registration.js +39 -0
  60. package/dist/esm/client/incoming.js +36 -0
  61. package/dist/esm/client/mailbox.js +17 -1
  62. package/dist/esm/client/media.js +234 -0
  63. package/dist/esm/client/messages.js +162 -85
  64. package/dist/esm/crypto/core/index.js +1 -0
  65. package/dist/esm/crypto/core/random.js +2 -7
  66. package/dist/esm/crypto/core/xeddsa.js +53 -0
  67. package/dist/esm/crypto/curves/X25519.js +20 -2
  68. package/dist/esm/crypto/curves/constants.js +1 -0
  69. package/dist/esm/infra/perf/StoreLock.js +7 -4
  70. package/dist/esm/media/WaMediaCrypto.js +257 -62
  71. package/dist/esm/media/WaMediaTransferClient.js +47 -190
  72. package/dist/esm/media/constants.js +2 -0
  73. package/dist/esm/media/processor.js +1 -0
  74. package/dist/esm/message/addon-crypto.js +130 -3
  75. package/dist/esm/message/content.js +12 -6
  76. package/dist/esm/message/icdc.js +8 -8
  77. package/dist/esm/message/incoming.js +14 -12
  78. package/dist/esm/message/phash.js +32 -12
  79. package/dist/esm/message/reporting-token.js +3 -3
  80. package/dist/esm/message/use-case-secret.js +1 -1
  81. package/dist/esm/protocol/abprops.js +159 -0
  82. package/dist/esm/protocol/browser.js +14 -0
  83. package/dist/esm/protocol/constants.js +3 -1
  84. package/dist/esm/protocol/email.js +30 -0
  85. package/dist/esm/protocol/jid.js +44 -10
  86. package/dist/esm/protocol/nodes.js +6 -2
  87. package/dist/esm/protocol/notification.js +7 -1
  88. package/dist/esm/retry/reason.js +1 -1
  89. package/dist/esm/signal/api/SignalDeviceSyncApi.js +5 -2
  90. package/dist/esm/signal/api/SignalDigestSyncApi.js +8 -6
  91. package/dist/esm/signal/api/SignalIdentitySyncApi.js +4 -4
  92. package/dist/esm/signal/api/SignalMissingPreKeysSyncApi.js +1 -1
  93. package/dist/esm/signal/api/SignalSessionSyncApi.js +1 -1
  94. package/dist/esm/signal/crypto/WaAdvSignature.js +5 -51
  95. package/dist/esm/signal/crypto/constants.js +0 -4
  96. package/dist/esm/signal/encoding.js +11 -54
  97. package/dist/esm/signal/group/SenderKeyChain.js +3 -3
  98. package/dist/esm/signal/group/SenderKeyCodec.js +5 -6
  99. package/dist/esm/signal/group/SenderKeyManager.js +13 -10
  100. package/dist/esm/signal/registration/keygen.js +2 -3
  101. package/dist/esm/signal/registration/utils.js +2 -2
  102. package/dist/esm/signal/session/SignalProtocol.js +18 -17
  103. package/dist/esm/signal/session/SignalRatchet.js +21 -10
  104. package/dist/esm/signal/session/SignalSerializer.js +5 -6
  105. package/dist/esm/signal/session/SignalSession.js +11 -9
  106. package/dist/esm/signal/session/resolver.js +6 -6
  107. package/dist/esm/store/contracts/identity.store.js +1 -0
  108. package/dist/esm/store/contracts/message-secret.store.js +1 -0
  109. package/dist/esm/store/contracts/pre-key.store.js +1 -0
  110. package/dist/esm/store/contracts/session.store.js +1 -0
  111. package/dist/esm/store/createStore.js +48 -12
  112. package/dist/esm/store/index.js +4 -0
  113. package/dist/esm/store/locks/identity.lock.js +16 -0
  114. package/dist/esm/store/locks/message-secret.lock.js +17 -0
  115. package/dist/esm/store/locks/pre-key.lock.js +27 -0
  116. package/dist/esm/store/locks/session.lock.js +19 -0
  117. package/dist/esm/store/locks/signal.lock.js +0 -24
  118. package/dist/esm/store/noop.store.js +20 -0
  119. package/dist/esm/store/providers/memory/device-list.store.js +3 -0
  120. package/dist/esm/store/providers/memory/identity.store.js +31 -0
  121. package/dist/esm/store/providers/memory/message-secret.store.js +81 -0
  122. package/dist/esm/store/providers/memory/participants.store.js +3 -0
  123. package/dist/esm/store/providers/memory/pre-key.store.js +97 -0
  124. package/dist/esm/store/providers/memory/retry.store.js +25 -11
  125. package/dist/esm/store/providers/memory/session.store.js +45 -0
  126. package/dist/esm/store/providers/memory/signal.store.js +1 -164
  127. package/dist/esm/transport/WaComms.js +4 -3
  128. package/dist/esm/transport/WaWebSocket.js +9 -1
  129. package/dist/esm/transport/index.js +6 -0
  130. package/dist/esm/transport/keepalive/WaKeepAlive.js +17 -8
  131. package/dist/esm/transport/node/WaMobileTcpSocket.js +114 -0
  132. package/dist/esm/transport/node/WaNodeOrchestrator.js +17 -8
  133. package/dist/esm/transport/node/builders/abprops.js +20 -0
  134. package/dist/esm/transport/node/builders/device.js +11 -0
  135. package/dist/esm/transport/node/builders/email.js +65 -0
  136. package/dist/esm/transport/node/builders/offline.js +14 -0
  137. package/dist/esm/transport/node/builders/prekeys.js +37 -40
  138. package/dist/esm/transport/node/builders/presence.js +13 -0
  139. package/dist/esm/transport/node/builders/privacy-token.js +19 -23
  140. package/dist/esm/transport/node/builders/retry.js +1 -1
  141. package/dist/esm/transport/node/helpers.js +24 -0
  142. package/dist/esm/transport/node/mex/argo-decoder.js +152 -0
  143. package/dist/esm/transport/node/mex/client.js +83 -0
  144. package/dist/esm/transport/node/mex/persist-ids.js +10 -0
  145. package/dist/esm/transport/noise/WaClientPayload.js +15 -10
  146. package/dist/esm/transport/noise/WaFrameCodec.js +2 -2
  147. package/dist/esm/transport/noise/WaMobileClientPayload.js +53 -0
  148. package/dist/esm/transport/noise/WaNoiseCert.js +9 -27
  149. package/dist/esm/transport/noise/WaNoiseSession.js +12 -11
  150. package/dist/infra/perf/StoreLock.js +7 -4
  151. package/dist/media/WaMediaCrypto.js +253 -58
  152. package/dist/media/WaMediaTransferClient.js +50 -223
  153. package/dist/media/constants.js +3 -1
  154. package/dist/media/processor.js +2 -0
  155. package/dist/message/addon-crypto.js +131 -0
  156. package/dist/message/content.js +13 -5
  157. package/dist/message/icdc.js +8 -8
  158. package/dist/message/incoming.js +14 -12
  159. package/dist/message/phash.js +32 -12
  160. package/dist/message/reporting-token.js +2 -2
  161. package/dist/message/use-case-secret.js +1 -1
  162. package/dist/protocol/abprops.js +163 -0
  163. package/dist/protocol/browser.js +15 -0
  164. package/dist/protocol/constants.js +14 -2
  165. package/dist/protocol/email.js +33 -0
  166. package/dist/protocol/jid.js +45 -10
  167. package/dist/protocol/nodes.js +6 -2
  168. package/dist/protocol/notification.js +8 -2
  169. package/dist/retry/reason.js +1 -1
  170. package/dist/signal/api/SignalDeviceSyncApi.js +5 -2
  171. package/dist/signal/api/SignalDigestSyncApi.js +8 -6
  172. package/dist/signal/api/SignalIdentitySyncApi.js +4 -4
  173. package/dist/signal/crypto/WaAdvSignature.js +2 -50
  174. package/dist/signal/crypto/constants.js +1 -5
  175. package/dist/signal/encoding.js +11 -49
  176. package/dist/signal/group/SenderKeyChain.js +2 -2
  177. package/dist/signal/group/SenderKeyCodec.js +4 -5
  178. package/dist/signal/group/SenderKeyManager.js +12 -9
  179. package/dist/signal/registration/keygen.js +1 -2
  180. package/dist/signal/registration/utils.js +2 -2
  181. package/dist/signal/session/SignalProtocol.js +18 -17
  182. package/dist/signal/session/SignalRatchet.js +19 -8
  183. package/dist/signal/session/SignalSerializer.js +5 -6
  184. package/dist/signal/session/SignalSession.js +11 -9
  185. package/dist/signal/session/resolver.js +6 -6
  186. package/dist/store/contracts/identity.store.js +2 -0
  187. package/dist/store/contracts/message-secret.store.js +2 -0
  188. package/dist/store/contracts/pre-key.store.js +2 -0
  189. package/dist/store/contracts/session.store.js +2 -0
  190. package/dist/store/createStore.js +47 -11
  191. package/dist/store/index.js +9 -1
  192. package/dist/store/locks/identity.lock.js +19 -0
  193. package/dist/store/locks/message-secret.lock.js +20 -0
  194. package/dist/store/locks/pre-key.lock.js +30 -0
  195. package/dist/store/locks/session.lock.js +22 -0
  196. package/dist/store/locks/signal.lock.js +0 -24
  197. package/dist/store/noop.store.js +21 -1
  198. package/dist/store/providers/memory/device-list.store.js +3 -0
  199. package/dist/store/providers/memory/identity.store.js +35 -0
  200. package/dist/store/providers/memory/message-secret.store.js +85 -0
  201. package/dist/store/providers/memory/participants.store.js +3 -0
  202. package/dist/store/providers/memory/pre-key.store.js +101 -0
  203. package/dist/store/providers/memory/retry.store.js +24 -10
  204. package/dist/store/providers/memory/session.store.js +49 -0
  205. package/dist/store/providers/memory/signal.store.js +1 -164
  206. package/dist/transport/WaComms.js +4 -3
  207. package/dist/transport/WaWebSocket.js +9 -1
  208. package/dist/transport/index.js +17 -1
  209. package/dist/transport/keepalive/WaKeepAlive.js +17 -8
  210. package/dist/transport/node/WaMobileTcpSocket.js +118 -0
  211. package/dist/transport/node/WaNodeOrchestrator.js +16 -7
  212. package/dist/transport/node/builders/abprops.js +23 -0
  213. package/dist/transport/node/builders/device.js +14 -0
  214. package/dist/transport/node/builders/email.js +72 -0
  215. package/dist/transport/node/builders/offline.js +17 -0
  216. package/dist/transport/node/builders/prekeys.js +36 -39
  217. package/dist/transport/node/builders/presence.js +16 -0
  218. package/dist/transport/node/builders/privacy-token.js +18 -22
  219. package/dist/transport/node/builders/retry.js +1 -1
  220. package/dist/transport/node/helpers.js +26 -0
  221. package/dist/transport/node/mex/argo-decoder.js +189 -0
  222. package/dist/transport/node/mex/client.js +86 -0
  223. package/dist/transport/node/mex/persist-ids.js +13 -0
  224. package/dist/transport/noise/WaClientPayload.js +14 -9
  225. package/dist/transport/noise/WaFrameCodec.js +1 -1
  226. package/dist/transport/noise/WaMobileClientPayload.js +56 -0
  227. package/dist/transport/noise/WaNoiseCert.js +8 -26
  228. package/dist/transport/noise/WaNoiseSession.js +11 -10
  229. package/dist/types/appstate/WaAppStateCrypto.d.ts +11 -8
  230. package/dist/types/appstate/WaAppStateSyncClient.d.ts +6 -2
  231. package/dist/types/appstate/index.d.ts +1 -1
  232. package/dist/types/appstate/{WaAppStateSyncResponseParser.d.ts → response-parser.d.ts} +1 -1
  233. package/dist/types/appstate/types.d.ts +1 -1
  234. package/dist/types/auth/WaAuthClient.d.ts +9 -3
  235. package/dist/types/auth/credentials-flow.d.ts +20 -0
  236. package/dist/types/auth/pairing/WaPairingFlow.d.ts +3 -2
  237. package/dist/types/auth/pairing/{WaPairingCodeCrypto.d.ts → pairing-code-crypto.d.ts} +6 -1
  238. package/dist/types/auth/types.d.ts +40 -0
  239. package/dist/types/client/WaClient.d.ts +19 -8
  240. package/dist/types/client/WaClientFactory.d.ts +10 -4
  241. package/dist/types/client/coordinators/WaAbPropsCoordinator.d.ts +26 -0
  242. package/dist/types/client/coordinators/WaBusinessCoordinator.d.ts +1 -1
  243. package/dist/types/client/coordinators/WaEmailCoordinator.d.ts +24 -0
  244. package/dist/types/client/coordinators/WaIncomingNodeCoordinator.d.ts +6 -1
  245. package/dist/types/client/coordinators/WaMessageDispatchCoordinator.d.ts +15 -2
  246. package/dist/types/client/coordinators/WaOfflineResumeCoordinator.d.ts +31 -0
  247. package/dist/types/client/coordinators/WaPassiveTasksCoordinator.d.ts +13 -2
  248. package/dist/types/client/coordinators/WaPrivacyCoordinator.d.ts +1 -1
  249. package/dist/types/client/coordinators/WaProfileCoordinator.d.ts +4 -2
  250. package/dist/types/client/coordinators/WaRetryCoordinator.d.ts +6 -0
  251. package/dist/types/client/coordinators/WaTrustedContactTokenCoordinator.d.ts +11 -1
  252. package/dist/types/client/dirty.d.ts +3 -1
  253. package/dist/types/client/events/abprops.d.ts +14 -0
  254. package/dist/types/client/events/registration.d.ts +17 -0
  255. package/dist/types/client/incoming.d.ts +6 -1
  256. package/dist/types/client/mailbox.d.ts +2 -0
  257. package/dist/types/client/media.d.ts +31 -0
  258. package/dist/types/client/messages.d.ts +2 -0
  259. package/dist/types/client/persistence/WriteBehindPersistence.d.ts +1 -1
  260. package/dist/types/client/types.d.ts +100 -1
  261. package/dist/types/crypto/core/index.d.ts +1 -0
  262. package/dist/types/crypto/core/primitives.d.ts +1 -1
  263. package/dist/types/crypto/core/random.d.ts +1 -1
  264. package/dist/types/crypto/core/xeddsa.d.ts +2 -0
  265. package/dist/types/crypto/curves/constants.d.ts +1 -0
  266. package/dist/types/crypto/index.d.ts +1 -0
  267. package/dist/types/index.d.ts +2 -1
  268. package/dist/types/infra/log/ConsoleLogger.d.ts +1 -1
  269. package/dist/types/infra/log/PinoLogger.d.ts +1 -1
  270. package/dist/types/infra/perf/StoreLock.d.ts +1 -0
  271. package/dist/types/media/WaMediaCrypto.d.ts +15 -6
  272. package/dist/types/media/WaMediaTransferClient.d.ts +3 -11
  273. package/dist/types/media/constants.d.ts +2 -0
  274. package/dist/types/media/index.d.ts +1 -0
  275. package/dist/types/media/processor.d.ts +28 -0
  276. package/dist/types/media/types.d.ts +9 -3
  277. package/dist/types/message/addon-crypto.d.ts +34 -3
  278. package/dist/types/message/content.d.ts +3 -1
  279. package/dist/types/message/icdc.d.ts +4 -4
  280. package/dist/types/message/types.d.ts +16 -24
  281. package/dist/types/protocol/abprops.d.ts +142 -0
  282. package/dist/types/protocol/browser.d.ts +1 -0
  283. package/dist/types/protocol/constants.d.ts +5 -1
  284. package/dist/types/protocol/email.d.ts +32 -0
  285. package/dist/types/protocol/jid.d.ts +1 -0
  286. package/dist/types/protocol/nodes.d.ts +4 -0
  287. package/dist/types/protocol/notification.d.ts +6 -0
  288. package/dist/types/protocol/stream.d.ts +1 -0
  289. package/dist/types/retry/reason.d.ts +1 -1
  290. package/dist/types/signal/api/SignalDigestSyncApi.d.ts +3 -0
  291. package/dist/types/signal/api/SignalIdentitySyncApi.d.ts +3 -3
  292. package/dist/types/signal/crypto/WaAdvSignature.d.ts +0 -2
  293. package/dist/types/signal/crypto/constants.d.ts +0 -1
  294. package/dist/types/signal/encoding.d.ts +7 -1
  295. package/dist/types/signal/group/SenderKeyChain.d.ts +1 -1
  296. package/dist/types/signal/group/SenderKeyManager.d.ts +7 -2
  297. package/dist/types/signal/registration/utils.d.ts +2 -1
  298. package/dist/types/signal/session/SignalProtocol.d.ts +11 -2
  299. package/dist/types/signal/session/SignalSerializer.d.ts +2 -1
  300. package/dist/types/signal/session/resolver.d.ts +4 -2
  301. package/dist/types/signal/types.d.ts +16 -4
  302. package/dist/types/store/contracts/identity.store.d.ts +11 -0
  303. package/dist/types/store/contracts/message-secret.store.d.ts +16 -0
  304. package/dist/types/store/contracts/pre-key.store.d.ts +13 -0
  305. package/dist/types/store/contracts/session.store.d.ts +14 -0
  306. package/dist/types/store/contracts/signal.store.d.ts +1 -34
  307. package/dist/types/store/index.d.ts +9 -1
  308. package/dist/types/store/locks/identity.lock.d.ts +3 -0
  309. package/dist/types/store/locks/message-secret.lock.d.ts +3 -0
  310. package/dist/types/store/locks/pre-key.lock.d.ts +3 -0
  311. package/dist/types/store/locks/session.lock.d.ts +3 -0
  312. package/dist/types/store/noop.store.d.ts +4 -0
  313. package/dist/types/store/providers/memory/identity.store.d.ts +18 -0
  314. package/dist/types/store/providers/memory/message-secret.store.d.ts +21 -0
  315. package/dist/types/store/providers/memory/pre-key.store.d.ts +23 -0
  316. package/dist/types/store/providers/memory/retry.store.d.ts +7 -1
  317. package/dist/types/store/providers/memory/session.store.d.ts +21 -0
  318. package/dist/types/store/providers/memory/signal.store.d.ts +3 -45
  319. package/dist/types/store/providers/memory/thread.store.d.ts +1 -1
  320. package/dist/types/store/types.d.ts +21 -1
  321. package/dist/types/transport/WaWebSocket.d.ts +1 -0
  322. package/dist/types/transport/index.d.ts +8 -1
  323. package/dist/types/transport/keepalive/WaKeepAlive.d.ts +4 -1
  324. package/dist/types/transport/node/WaMobileTcpSocket.d.ts +18 -0
  325. package/dist/types/transport/node/WaNodeOrchestrator.d.ts +6 -2
  326. package/dist/types/transport/node/builders/abprops.d.ts +5 -0
  327. package/dist/types/transport/node/builders/device.d.ts +2 -0
  328. package/dist/types/transport/node/builders/email.d.ts +11 -0
  329. package/dist/types/transport/node/builders/offline.d.ts +2 -0
  330. package/dist/types/transport/node/builders/prekeys.d.ts +4 -3
  331. package/dist/types/transport/node/builders/presence.d.ts +6 -0
  332. package/dist/types/transport/node/helpers.d.ts +3 -0
  333. package/dist/types/transport/node/mex/argo-decoder.d.ts +11 -0
  334. package/dist/types/transport/node/mex/client.d.ts +18 -0
  335. package/dist/types/transport/node/mex/persist-ids.d.ts +14 -0
  336. package/dist/types/transport/noise/WaMobileClientPayload.d.ts +29 -0
  337. package/dist/types/transport/noise/WaNoiseCert.d.ts +7 -1
  338. package/dist/types/transport/noise/WaNoiseSession.d.ts +1 -0
  339. package/dist/types/transport/types.d.ts +8 -0
  340. package/package.json +6 -4
  341. package/dist/auth/pairing/constants.js +0 -5
  342. package/dist/client/connection/WaKeyShareCoordinator.js +0 -63
  343. package/dist/esm/auth/pairing/constants.js +0 -2
  344. package/dist/esm/client/connection/WaKeyShareCoordinator.js +0 -59
  345. package/dist/esm/transport/node/builders/index.js +0 -11
  346. package/dist/transport/node/builders/index.js +0 -51
  347. package/dist/types/auth/flow/WaAuthCredentialsFlow.d.ts +0 -14
  348. package/dist/types/auth/pairing/constants.d.ts +0 -2
  349. package/dist/types/client/connection/WaKeyShareCoordinator.d.ts +0 -14
  350. package/dist/types/transport/node/builders/index.d.ts +0 -11
  351. /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,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?: {
@@ -33,6 +39,40 @@ export interface WaAuthClientOptions {
33
39
  readonly deviceOsDisplayName?: string;
34
40
  readonly requireFullSync?: boolean;
35
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;
36
76
  }
37
77
  export interface WaSuccessPersistAttributes {
38
78
  readonly meLid?: string;
@@ -1,19 +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';
5
4
  import type { WaAppStateMutationCoordinator } from './coordinators/WaAppStateMutationCoordinator';
6
5
  import type { WaBusinessCoordinator } from './coordinators/WaBusinessCoordinator';
6
+ import type { WaEmailCoordinator } from './coordinators/WaEmailCoordinator';
7
7
  import type { WaGroupCoordinator } from './coordinators/WaGroupCoordinator';
8
8
  import type { WaMessageDispatchCoordinator } from './coordinators/WaMessageDispatchCoordinator';
9
9
  import type { WaPrivacyCoordinator } from './coordinators/WaPrivacyCoordinator';
10
10
  import type { WaProfileCoordinator } from './coordinators/WaProfileCoordinator';
11
- import type { WriteBehindDrainResult } from './persistence/WriteBehindPersistence';
12
- import type { WaClientOptions, WaSendMessageOptions, WaClientEventMap, WaIncomingNodeHandlerRegistration } from './types';
11
+ import { type WriteBehindDrainResult } from './persistence/WriteBehindPersistence';
12
+ import type { WaClientEventMap, WaClientOptions, WaIncomingNodeHandlerRegistration, WaSendMessageOptions } from './types';
13
13
  import type { Logger } from '../infra/log/types';
14
14
  import type { WaMediaTransferClient } from '../media/WaMediaTransferClient';
15
15
  import type { WaMessagePublishResult, WaSendMessageContent, WaSendReceiptInput } from '../message/types';
16
16
  import type { WaMessageClient } from '../message/WaMessageClient';
17
+ import { type WaLogoutReason } from '../protocol/stream';
17
18
  import type { SignalLidSyncResult } from '../signal/api/SignalDeviceSyncApi';
18
19
  import type { BinaryNode } from '../transport/types';
19
20
  export declare class WaClient extends EventEmitter {
@@ -22,11 +23,15 @@ export declare class WaClient extends EventEmitter {
22
23
  private readonly appStateStore;
23
24
  private readonly contactStore;
24
25
  private readonly messageStore;
26
+ private readonly messageSecretStore;
25
27
  private readonly participantsStore;
26
28
  private readonly privacyTokenStore;
27
29
  private readonly deviceListStore;
28
30
  private readonly retryStore;
29
31
  private readonly signalStore;
32
+ private readonly preKeyStore;
33
+ private readonly sessionStore;
34
+ private readonly identityStore;
30
35
  private readonly senderKeyStore;
31
36
  private readonly threadStore;
32
37
  private readonly authClient;
@@ -43,10 +48,10 @@ export declare class WaClient extends EventEmitter {
43
48
  readonly privacyCoordinator: WaPrivacyCoordinator;
44
49
  readonly profileCoordinator: WaProfileCoordinator;
45
50
  readonly businessCoordinator: WaBusinessCoordinator;
51
+ readonly emailCoordinator: WaEmailCoordinator;
46
52
  private readonly passiveTasks;
47
53
  private readonly keepAlive;
48
54
  private readonly receiptQueue;
49
- private readonly keyShareCoordinator;
50
55
  private readonly connectionManager;
51
56
  private readonly trustedContactToken;
52
57
  private readonly writeBehind;
@@ -69,10 +74,13 @@ export declare class WaClient extends EventEmitter {
69
74
  hasQr: boolean;
70
75
  hasPairingCode: boolean;
71
76
  };
72
- getCredentials(): import("../auth").WaAuthCredentials | null;
77
+ getCredentials(): import("..").WaAuthCredentials | null;
73
78
  getClockSkewMs(): number | null;
74
79
  sendNode(node: BinaryNode): Promise<void>;
75
- 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>;
76
84
  registerIncomingHandler(registration: WaIncomingNodeHandlerRegistration): () => void;
77
85
  unregisterIncomingHandler(registration: WaIncomingNodeHandlerRegistration): boolean;
78
86
  private bindNodeTransportEvents;
@@ -86,7 +94,7 @@ export declare class WaClient extends EventEmitter {
86
94
  private handleIncomingFrame;
87
95
  connect(): Promise<void>;
88
96
  disconnect(): Promise<void>;
89
- requestPairingCode(phoneNumber: string, shouldShowPushNotification?: boolean): Promise<string>;
97
+ requestPairingCode(phoneNumber: string, shouldShowPushNotification?: boolean, customCode?: string): Promise<string>;
90
98
  fetchPairingCountryCodeIso(): Promise<string>;
91
99
  getLidsByPhoneNumbers(phoneNumbers: readonly string[]): Promise<readonly SignalLidSyncResult[]>;
92
100
  sendMessage(to: string, content: WaSendMessageContent, options?: WaSendMessageOptions): Promise<WaMessagePublishResult>;
@@ -96,6 +104,8 @@ export declare class WaClient extends EventEmitter {
96
104
  get privacy(): WaPrivacyCoordinator;
97
105
  get profile(): WaProfileCoordinator;
98
106
  get business(): WaBusinessCoordinator;
107
+ get email(): WaEmailCoordinator;
108
+ logout(reason?: WaLogoutReason): Promise<void>;
99
109
  sendReceipt(input: WaSendReceiptInput): Promise<void>;
100
110
  flushAppStateMutations(): Promise<void>;
101
111
  flushWriteBehind(timeoutMs?: number): Promise<WriteBehindDrainResult>;
@@ -106,6 +116,7 @@ export declare class WaClient extends EventEmitter {
106
116
  private emitChatEventsFromAppStateSyncResult;
107
117
  private handleNctSaltMutation;
108
118
  private clearStoredState;
119
+ private tryDecryptAddon;
109
120
  private tryEnterIncomingHandler;
110
121
  private leaveIncomingHandler;
111
122
  private pauseIncomingEventsAndWaitDrain;
@@ -2,10 +2,11 @@ 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
8
  import { type WaBusinessCoordinator } from './coordinators/WaBusinessCoordinator';
9
+ import { type WaEmailCoordinator } from './coordinators/WaEmailCoordinator';
9
10
  import { type WaGroupCoordinator } from './coordinators/WaGroupCoordinator';
10
11
  import { WaIncomingNodeCoordinator } from './coordinators/WaIncomingNodeCoordinator';
11
12
  import { WaMessageDispatchCoordinator } from './coordinators/WaMessageDispatchCoordinator';
@@ -39,8 +40,12 @@ interface WaClientBase {
39
40
  }
40
41
  interface WaClientBuildRuntime {
41
42
  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>;
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>;
44
49
  readonly syncAppState: () => Promise<void>;
45
50
  readonly syncAppStateWithOptions: (options?: WaAppStateSyncOptions) => Promise<WaAppStateSyncResult>;
46
51
  readonly emitEvent: <K extends keyof WaClientEventMap>(event: K, ...args: Parameters<WaClientEventMap[K]>) => void;
@@ -77,10 +82,11 @@ interface WaClientDependencies {
77
82
  readonly privacyCoordinator: WaPrivacyCoordinator;
78
83
  readonly profileCoordinator: WaProfileCoordinator;
79
84
  readonly businessCoordinator: WaBusinessCoordinator;
85
+ readonly emailCoordinator: WaEmailCoordinator;
80
86
  readonly receiptQueue: WaReceiptQueue;
81
- readonly keyShareCoordinator: WaKeyShareCoordinator;
82
87
  readonly connectionManager: WaConnectionManager;
83
88
  readonly trustedContactToken: WaTrustedContactTokenCoordinator;
89
+ readonly abPropsCoordinator: WaAbPropsCoordinator;
84
90
  }
85
91
  export declare function resolveWaClientBase(options: WaClientOptions, logger: Logger): WaClientBase;
86
92
  export declare function buildWaClientDependencies(input: {
@@ -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 {};
@@ -1,4 +1,4 @@
1
- import type { WaEditBusinessProfileInput } from '../../transport/node/builders/business';
1
+ import { type WaEditBusinessProfileInput } from '../../transport/node/builders/business';
2
2
  import type { BinaryNode } from '../../transport/types';
3
3
  export interface WaBusinessCategory {
4
4
  readonly id: string;
@@ -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,6 +1,7 @@
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';
5
6
  import type { WaConnectionCode, WaDisconnectReason } from '../../protocol/stream';
6
7
  import { type WaStreamControlNodeResult } from '../../transport/stream/parse';
@@ -29,6 +30,8 @@ interface WaIncomingNodeRuntime {
29
30
  readonly emitIncomingFailure: (event: WaIncomingFailureEvent) => void;
30
31
  readonly emitIncomingErrorStanza: (event: WaIncomingBaseEvent) => void;
31
32
  readonly emitIncomingNotification: (event: WaIncomingNotificationEvent) => void;
33
+ readonly emitRegistrationCode: (event: WaRegistrationCodeEvent) => void;
34
+ readonly emitAccountTakeoverNotice: (event: WaAccountTakeoverNoticeEvent) => void;
32
35
  readonly emitGroupEvent: (event: WaGroupEvent) => void;
33
36
  readonly emitUnhandledIncomingNode: (event: WaIncomingUnhandledStanzaEvent) => void;
34
37
  readonly syncAppState: () => Promise<void>;
@@ -41,10 +44,12 @@ interface WaIncomingNodeRuntime {
41
44
  interface WaIncomingNodeCoordinatorOptions {
42
45
  readonly logger: Logger;
43
46
  readonly runtime: WaIncomingNodeRuntime;
47
+ readonly offlineResume: WaOfflineResumeCoordinator;
44
48
  }
45
49
  export declare class WaIncomingNodeCoordinator {
46
50
  private readonly logger;
47
51
  private readonly runtime;
52
+ private readonly offlineResume;
48
53
  private readonly nodeHandlerRegistry;
49
54
  private mediaConnWarmupPromise;
50
55
  constructor(options: WaIncomingNodeCoordinatorOptions);
@@ -2,16 +2,19 @@ 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
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';
15
18
  import type { WaSignalStore } from '../../store/contracts/signal.store';
16
19
  import type { BinaryNode } from '../../transport/types';
17
20
  interface WaMessageDispatchCoordinatorOptions {
@@ -26,12 +29,17 @@ interface WaMessageDispatchCoordinatorOptions {
26
29
  readonly senderKeyManager: SenderKeyManager;
27
30
  readonly signalProtocol: SignalProtocol;
28
31
  readonly signalStore: WaSignalStore;
32
+ readonly sessionStore: WaSessionStore;
33
+ readonly identityStore: WaIdentityStore;
29
34
  readonly deviceListStore: WaDeviceListStore;
35
+ readonly messageSecretStore: WaMessageSecretStore;
30
36
  readonly getCurrentMeJid: () => string | null | undefined;
31
37
  readonly getCurrentMeLid: () => string | null | undefined;
32
38
  readonly getCurrentSignedIdentity: () => Proto.IADVSignedDeviceIdentity | null | undefined;
33
39
  readonly resolvePrivacyTokenNode: (recipientJid: string) => Promise<BinaryNode | null>;
34
40
  readonly onDirectMessageSent: (recipientJid: string) => void;
41
+ readonly getIcdcHashLength?: () => number;
42
+ readonly mobileMessageIdFormat?: boolean;
35
43
  }
36
44
  export declare class WaMessageDispatchCoordinator {
37
45
  private readonly logger;
@@ -45,12 +53,17 @@ export declare class WaMessageDispatchCoordinator {
45
53
  private readonly senderKeyManager;
46
54
  private readonly signalProtocol;
47
55
  private readonly signalStore;
56
+ private readonly sessionStore;
57
+ private readonly identityStore;
48
58
  private readonly deviceListStore;
59
+ private readonly messageSecretStore;
49
60
  private readonly getCurrentMeJid;
50
61
  private readonly getCurrentMeLid;
51
62
  private readonly getCurrentSignedIdentity;
52
63
  private readonly resolvePrivacyTokenNode;
53
64
  private readonly onDirectMessageSent;
65
+ private readonly getIcdcHashLength;
66
+ private readonly mobileMessageIdFormat;
54
67
  private readonly icdcDedup;
55
68
  private readonly privacyTokenDedup;
56
69
  private readonly distributionDedup;
@@ -0,0 +1,31 @@
1
+ import type { WaOfflineResumeEvent } from '../types';
2
+ import type { Logger } from '../../infra/log/types';
3
+ import type { BinaryNode } from '../../transport/types';
4
+ interface WaOfflineResumeRuntime {
5
+ readonly sendNode: (node: BinaryNode) => Promise<void>;
6
+ readonly emitOfflineResume: (event: WaOfflineResumeEvent) => void;
7
+ }
8
+ interface WaOfflineResumeCoordinatorOptions {
9
+ readonly logger: Logger;
10
+ readonly runtime: WaOfflineResumeRuntime;
11
+ }
12
+ export declare class WaOfflineResumeCoordinator {
13
+ private readonly logger;
14
+ private readonly runtime;
15
+ private state;
16
+ private totalStanzas;
17
+ private pendingStanzas;
18
+ private stanzaTimeout;
19
+ constructor(options: WaOfflineResumeCoordinatorOptions);
20
+ get isComplete(): boolean;
21
+ get isResuming(): boolean;
22
+ handleOfflinePreview(stanzaCount: number): void;
23
+ handleOfflineComplete(serverStanzaCount: number): void;
24
+ trackOfflineStanza(): void;
25
+ reset(): void;
26
+ private completeResume;
27
+ private sendOfflineBatch;
28
+ private resetStanzaTimeout;
29
+ private clearTimers;
30
+ }
31
+ export {};
@@ -1,35 +1,47 @@
1
+ import type { WaAppStateSyncClient } from '../../appstate/WaAppStateSyncClient';
1
2
  import type { WaAuthCredentials } from '../../auth/types';
2
3
  import type { Logger } from '../../infra/log/types';
3
4
  import type { SignalDigestSyncApi } from '../../signal/api/SignalDigestSyncApi';
4
5
  import type { SignalRotateKeyApi } from '../../signal/api/SignalRotateKeyApi';
6
+ import type { WaPreKeyStore } from '../../store/contracts/pre-key.store';
5
7
  import type { WaSignalStore } from '../../store/contracts/signal.store';
6
8
  import type { BinaryNode } from '../../transport/types';
7
9
  type WaPassiveTasksRuntime = {
8
- readonly queryWithContext: (context: string, node: BinaryNode, timeoutMs?: number, contextData?: Readonly<Record<string, unknown>>) => Promise<BinaryNode>;
10
+ readonly queryWithContext: (context: string, node: BinaryNode, timeoutMs?: number, contextData?: Readonly<Record<string, unknown>>, options?: {
11
+ readonly useSystemId?: boolean;
12
+ }) => Promise<BinaryNode>;
9
13
  readonly getCurrentCredentials: () => WaAuthCredentials | null;
10
14
  readonly persistServerHasPreKeys: (serverHasPreKeys: boolean) => Promise<void>;
11
15
  readonly sendNodeDirect: (node: BinaryNode) => Promise<void>;
12
16
  readonly takeDanglingReceipts: () => BinaryNode[];
13
17
  readonly requeueDanglingReceipt: (node: BinaryNode) => void;
14
18
  readonly shouldQueueDanglingReceipt: (node: BinaryNode, error: Error) => boolean;
19
+ readonly syncAbProps: () => void;
20
+ readonly sendPresenceAvailable: () => Promise<void>;
15
21
  };
16
22
  export declare class WaPassiveTasksCoordinator {
17
23
  private readonly logger;
18
24
  private readonly signalStore;
25
+ private readonly preKeyStore;
19
26
  private readonly signalDigestSync;
20
27
  private readonly signalRotateKey;
21
28
  private readonly signedPreKeyRotationIntervalMs;
22
29
  private readonly signedPreKeyServerErrorBackoffMs;
23
30
  private readonly runtime;
31
+ private readonly mobilePrimary;
32
+ private readonly appStateSync?;
24
33
  private passiveTasksPromise;
25
34
  constructor(options: {
26
35
  readonly logger: Logger;
27
36
  readonly signalStore: WaSignalStore;
37
+ readonly preKeyStore: WaPreKeyStore;
28
38
  readonly signalDigestSync: SignalDigestSyncApi;
29
39
  readonly signalRotateKey: SignalRotateKeyApi;
30
40
  readonly signedPreKeyRotationIntervalMs?: number;
31
41
  readonly signedPreKeyServerErrorBackoffMs?: number;
32
42
  readonly runtime: WaPassiveTasksRuntime;
43
+ readonly mobilePrimary?: boolean;
44
+ readonly appStateSync?: WaAppStateSyncClient;
33
45
  });
34
46
  startPassiveTasksAfterConnect(): void;
35
47
  handlePreKeyLowNotification(): Promise<void>;
@@ -39,7 +51,6 @@ export declare class WaPassiveTasksCoordinator {
39
51
  private validateDigestAndRecoverPreKeys;
40
52
  private uploadPreKeysIfMissing;
41
53
  private rotateSignedPreKeyIfDue;
42
- private resolveLocalKeyBundle;
43
54
  private resolveLocalKeyBundleFromStore;
44
55
  private resolveRotationTimestamp;
45
56
  private flushDanglingReceipts;
@@ -1,4 +1,4 @@
1
- import type { WaPrivacyDisallowedListSettingName, WaPrivacySettingName, WaPrivacySettingValueMap } from '../../protocol/privacy';
1
+ import { type WaPrivacyDisallowedListSettingName, type WaPrivacySettingName, type WaPrivacySettingValueMap } from '../../protocol/privacy';
2
2
  import type { BinaryNode } from '../../transport/types';
3
3
  export type WaPrivacySettings = {
4
4
  readonly [K in WaPrivacySettingName]?: WaPrivacySettingValueMap[K];
@@ -1,4 +1,4 @@
1
- import type { WaProfilePictureType } from '../../transport/node/builders/profile';
1
+ import { type WaProfilePictureType } from '../../transport/node/builders/profile';
2
2
  import type { BinaryNode } from '../../transport/types';
3
3
  export interface WaProfilePictureResult {
4
4
  readonly url?: string;
@@ -29,7 +29,9 @@ export interface WaProfileCoordinator {
29
29
  readonly getDisappearingMode: (jids: readonly string[]) => Promise<readonly WaDisappearingModeResult[]>;
30
30
  }
31
31
  interface WaProfileCoordinatorOptions {
32
- readonly queryWithContext: (context: string, node: BinaryNode, timeoutMs?: number, contextData?: Readonly<Record<string, unknown>>) => Promise<BinaryNode>;
32
+ readonly queryWithContext: (context: string, node: BinaryNode, timeoutMs?: number, contextData?: Readonly<Record<string, unknown>>, options?: {
33
+ readonly useSystemId?: boolean;
34
+ }) => Promise<BinaryNode>;
33
35
  readonly generateSid: () => Promise<string>;
34
36
  }
35
37
  export declare function createProfileCoordinator(options: WaProfileCoordinatorOptions): WaProfileCoordinator;
@@ -5,14 +5,18 @@ import type { WaRetryDecryptFailureContext } from '../../retry/types';
5
5
  import type { SignalDeviceSyncApi } from '../../signal/api/SignalDeviceSyncApi';
6
6
  import type { SignalMissingPreKeysSyncApi } from '../../signal/api/SignalMissingPreKeysSyncApi';
7
7
  import type { SignalProtocol } from '../../signal/session/SignalProtocol';
8
+ import type { WaPreKeyStore } from '../../store/contracts/pre-key.store';
8
9
  import type { WaRetryStore } from '../../store/contracts/retry.store';
9
10
  import type { WaSenderKeyStore } from '../../store/contracts/sender-key.store';
11
+ import type { WaSessionStore } from '../../store/contracts/session.store';
10
12
  import type { WaSignalStore } from '../../store/contracts/signal.store';
11
13
  import type { BinaryNode } from '../../transport/types';
12
14
  interface WaRetryCoordinatorOptions {
13
15
  readonly logger: Logger;
14
16
  readonly retryStore: WaRetryStore;
15
17
  readonly signalStore: WaSignalStore;
18
+ readonly preKeyStore: WaPreKeyStore;
19
+ readonly sessionStore: WaSessionStore;
16
20
  readonly senderKeyStore: WaSenderKeyStore;
17
21
  readonly signalProtocol: SignalProtocol;
18
22
  readonly signalDeviceSync: SignalDeviceSyncApi;
@@ -28,6 +32,8 @@ export declare class WaRetryCoordinator {
28
32
  private readonly retryStore;
29
33
  private readonly retryTtlMs;
30
34
  private readonly signalStore;
35
+ private readonly preKeyStore;
36
+ private readonly sessionStore;
31
37
  private readonly senderKeyStore;
32
38
  private readonly signalProtocol;
33
39
  private readonly signalDeviceSync;
@@ -8,11 +8,19 @@ type WaTrustedContactTokenRuntime = {
8
8
  readonly emitEvent: <K extends keyof WaClientEventMap>(event: K, ...args: Parameters<WaClientEventMap[K]>) => void;
9
9
  readonly getCurrentMeLid: () => string | null;
10
10
  };
11
+ interface WaTrustedContactTokenConfig {
12
+ readonly durationS: number;
13
+ readonly numBuckets: number;
14
+ readonly senderDurationS: number;
15
+ readonly senderNumBuckets: number;
16
+ readonly maxDurationS: number;
17
+ }
11
18
  export declare class WaTrustedContactTokenCoordinator {
12
19
  private readonly logger;
13
20
  private readonly store;
14
21
  private readonly runtime;
15
- private readonly config;
22
+ private readonly baseConfig;
23
+ private readonly getConfigOverrides;
16
24
  private readonly csTokenGenerator;
17
25
  private readonly senderTokenDedup;
18
26
  private cachedNctSalt;
@@ -26,7 +34,9 @@ export declare class WaTrustedContactTokenCoordinator {
26
34
  readonly senderDurationS?: number;
27
35
  readonly senderNumBuckets?: number;
28
36
  readonly maxDurationS?: number;
37
+ readonly getConfigOverrides?: () => Partial<WaTrustedContactTokenConfig>;
29
38
  });
39
+ private resolveConfig;
30
40
  resolveTokenForMessage(recipientJid: string): Promise<BinaryNode | null>;
31
41
  handleIncomingToken(fromJid: string, tokens: readonly ParsedPrivacyToken[]): Promise<void>;
32
42
  maybeIssueSenderToken(recipientJid: string): Promise<void>;
@@ -8,7 +8,9 @@ export interface WaDirtyBit {
8
8
  }
9
9
  interface WaDirtySyncRuntime {
10
10
  readonly logger: Logger;
11
- readonly queryWithContext: (context: string, node: BinaryNode, timeoutMs?: number, contextData?: Readonly<Record<string, unknown>>) => Promise<BinaryNode>;
11
+ readonly queryWithContext: (context: string, node: BinaryNode, timeoutMs?: number, contextData?: Readonly<Record<string, unknown>>, options?: {
12
+ readonly useSystemId?: boolean;
13
+ }) => Promise<BinaryNode>;
12
14
  readonly getCurrentCredentials: () => WaAuthCredentials | null;
13
15
  readonly syncAppState: () => Promise<void>;
14
16
  readonly generateUsyncSid: () => Promise<string>;