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,10 +1,4 @@
1
- import type { PreKeyRecord, RegistrationInfo, SignalAddress, SignalSessionRecord, SignedPreKeyRecord } from '../../signal/types';
2
- export interface WaSignalMetaSnapshot {
3
- readonly serverHasPreKeys: boolean;
4
- readonly signedPreKeyRotationTs: number | null;
5
- readonly registrationInfo: RegistrationInfo | null;
6
- readonly signedPreKey: SignedPreKeyRecord | null;
7
- }
1
+ import type { RegistrationInfo, SignedPreKeyRecord } from '../../signal/types';
8
2
  export interface WaSignalStore {
9
3
  getRegistrationInfo(): Promise<RegistrationInfo | null>;
10
4
  setRegistrationInfo(info: RegistrationInfo): Promise<void>;
@@ -13,32 +7,5 @@ export interface WaSignalStore {
13
7
  getSignedPreKeyById(keyId: number): Promise<SignedPreKeyRecord | null>;
14
8
  setSignedPreKeyRotationTs(value: number | null): Promise<void>;
15
9
  getSignedPreKeyRotationTs(): Promise<number | null>;
16
- putPreKey(record: PreKeyRecord): Promise<void>;
17
- getOrGenPreKeys(count: number, generator: (keyId: number) => PreKeyRecord | Promise<PreKeyRecord>): Promise<readonly PreKeyRecord[]>;
18
- getPreKeyById(keyId: number): Promise<PreKeyRecord | null>;
19
- getPreKeysById(keyIds: readonly number[]): Promise<readonly (PreKeyRecord | null)[]>;
20
- consumePreKeyById(keyId: number): Promise<PreKeyRecord | null>;
21
- getOrGenSinglePreKey(generator: (keyId: number) => PreKeyRecord | Promise<PreKeyRecord>): Promise<PreKeyRecord>;
22
- markKeyAsUploaded(keyId: number): Promise<void>;
23
- setServerHasPreKeys(value: boolean): Promise<void>;
24
- getServerHasPreKeys(): Promise<boolean>;
25
- getSignalMeta(): Promise<WaSignalMetaSnapshot>;
26
- hasSession(address: SignalAddress): Promise<boolean>;
27
- hasSessions(addresses: readonly SignalAddress[]): Promise<readonly boolean[]>;
28
- getSession(address: SignalAddress): Promise<SignalSessionRecord | null>;
29
- getSessionsBatch(addresses: readonly SignalAddress[]): Promise<readonly (SignalSessionRecord | null)[]>;
30
- setSession(address: SignalAddress, session: SignalSessionRecord): Promise<void>;
31
- setSessionsBatch(entries: readonly {
32
- readonly address: SignalAddress;
33
- readonly session: SignalSessionRecord;
34
- }[]): Promise<void>;
35
- deleteSession(address: SignalAddress): Promise<void>;
36
- getRemoteIdentity(address: SignalAddress): Promise<Uint8Array | null>;
37
- getRemoteIdentities(addresses: readonly SignalAddress[]): Promise<readonly (Uint8Array | null)[]>;
38
- setRemoteIdentity(address: SignalAddress, identityKey: Uint8Array): Promise<void>;
39
- setRemoteIdentities(entries: readonly {
40
- readonly address: SignalAddress;
41
- readonly identityKey: Uint8Array;
42
- }[]): Promise<void>;
43
10
  clear(): Promise<void>;
44
11
  }
@@ -3,21 +3,29 @@ export { createStore } from './createStore';
3
3
  export type { WaAuthStore } from './contracts/auth.store';
4
4
  export type { WaContactStore, WaStoredContactRecord } from './contracts/contact.store';
5
5
  export type { WaDeviceListSnapshot, WaDeviceListStore } from './contracts/device-list.store';
6
+ export type { WaMessageSecretEntry, WaMessageSecretStore } from './contracts/message-secret.store';
6
7
  export type { WaMessageStore, WaStoredMessageRecord } from './contracts/message.store';
7
8
  export type { WaParticipantsSnapshot, WaParticipantsStore } from './contracts/participants.store';
8
9
  export type { WaAppStateCollectionStateUpdate, WaAppStateCollectionStoreState, WaAppStateStore } from './contracts/appstate.store';
10
+ export type { WaIdentityStore } from './contracts/identity.store';
11
+ export type { WaPreKeyStore } from './contracts/pre-key.store';
9
12
  export type { WaSenderKeyStore } from './contracts/sender-key.store';
10
- export type { WaSignalMetaSnapshot, WaSignalStore } from './contracts/signal.store';
13
+ export type { WaSessionStore } from './contracts/session.store';
14
+ export type { WaSignalStore } from './contracts/signal.store';
11
15
  export type { WaRetryStore } from './contracts/retry.store';
12
16
  export type { WaStoredThreadRecord, WaThreadStore } from './contracts/thread.store';
13
17
  export type { WaPrivacyTokenStore, WaStoredPrivacyTokenRecord } from './contracts/privacy-token.store';
14
18
  export { WaAppStateMemoryStore } from './providers/memory/appstate.store';
15
19
  export { WaSignalMemoryStore } from './providers/memory/signal.store';
20
+ export { WaPreKeyMemoryStore } from './providers/memory/pre-key.store';
21
+ export { WaSessionMemoryStore } from './providers/memory/session.store';
22
+ export { WaIdentityMemoryStore } from './providers/memory/identity.store';
16
23
  export { SenderKeyMemoryStore } from './providers/memory/sender-key.store';
17
24
  export { WaRetryMemoryStore } from './providers/memory/retry.store';
18
25
  export { WaParticipantsMemoryStore } from './providers/memory/participants.store';
19
26
  export { WaDeviceListMemoryStore } from './providers/memory/device-list.store';
20
27
  export { WaContactMemoryStore } from './providers/memory/contact.store';
28
+ export { WaMessageSecretMemoryStore } from './providers/memory/message-secret.store';
21
29
  export { WaMessageMemoryStore } from './providers/memory/message.store';
22
30
  export { WaThreadMemoryStore } from './providers/memory/thread.store';
23
31
  export { WaPrivacyTokenMemoryStore } from './providers/memory/privacy-token.store';
@@ -0,0 +1,3 @@
1
+ import type { WaIdentityStore } from '../contracts/identity.store';
2
+ import type { WithDestroyLifecycle } from '../types';
3
+ export declare function withIdentityLock(store: WaIdentityStore): WithDestroyLifecycle<WaIdentityStore>;
@@ -0,0 +1,3 @@
1
+ import type { WaMessageSecretStore } from '../contracts/message-secret.store';
2
+ import type { WithDestroyLifecycle } from '../types';
3
+ export declare function withMessageSecretLock(store: WaMessageSecretStore): WithDestroyLifecycle<WaMessageSecretStore>;
@@ -0,0 +1,3 @@
1
+ import type { WaPreKeyStore } from '../contracts/pre-key.store';
2
+ import type { WithDestroyLifecycle } from '../types';
3
+ export declare function withPreKeyLock(store: WaPreKeyStore): WithDestroyLifecycle<WaPreKeyStore>;
@@ -0,0 +1,3 @@
1
+ import type { WaSessionStore } from '../contracts/session.store';
2
+ import type { WithDestroyLifecycle } from '../types';
3
+ export declare function withSessionLock(store: WaSessionStore): WithDestroyLifecycle<WaSessionStore>;
@@ -1,10 +1,14 @@
1
1
  import type { WaContactStore } from './contracts/contact.store';
2
2
  import type { WaDeviceListStore } from './contracts/device-list.store';
3
+ import type { WaMessageSecretStore } from './contracts/message-secret.store';
3
4
  import type { WaMessageStore } from './contracts/message.store';
4
5
  import type { WaParticipantsStore } from './contracts/participants.store';
6
+ import type { WaRetryStore } from './contracts/retry.store';
5
7
  import type { WaThreadStore } from './contracts/thread.store';
8
+ export declare const NOOP_MESSAGE_SECRET_STORE: WaMessageSecretStore;
6
9
  export declare const NOOP_MESSAGE_STORE: WaMessageStore;
7
10
  export declare const NOOP_THREAD_STORE: WaThreadStore;
8
11
  export declare const NOOP_CONTACT_STORE: WaContactStore;
12
+ export declare const NOOP_RETRY_STORE: WaRetryStore;
9
13
  export declare const NOOP_PARTICIPANTS_STORE: WaParticipantsStore;
10
14
  export declare const NOOP_DEVICE_LIST_STORE: WaDeviceListStore;
@@ -0,0 +1,18 @@
1
+ import type { SignalAddress } from '../../../signal/types';
2
+ import type { WaIdentityStore as WaIdentityStoreContract } from '../../contracts/identity.store';
3
+ export interface WaIdentityMemoryStoreOptions {
4
+ readonly maxRemoteIdentities?: number;
5
+ }
6
+ export declare class WaIdentityMemoryStore implements WaIdentityStoreContract {
7
+ private readonly remoteIdentities;
8
+ private readonly maxRemoteIdentities;
9
+ constructor(options?: WaIdentityMemoryStoreOptions);
10
+ getRemoteIdentity(address: SignalAddress): Promise<Uint8Array | null>;
11
+ getRemoteIdentities(addresses: readonly SignalAddress[]): Promise<readonly (Uint8Array | null)[]>;
12
+ setRemoteIdentity(address: SignalAddress, identityKey: Uint8Array): Promise<void>;
13
+ setRemoteIdentities(entries: readonly {
14
+ readonly address: SignalAddress;
15
+ readonly identityKey: Uint8Array;
16
+ }[]): Promise<void>;
17
+ clear(): Promise<void>;
18
+ }
@@ -0,0 +1,21 @@
1
+ import type { WaMessageSecretEntry, WaMessageSecretStore } from '../../contracts/message-secret.store';
2
+ export interface WaMessageSecretMemoryStoreOptions {
3
+ readonly maxSecrets?: number;
4
+ }
5
+ export declare class WaMessageSecretMemoryStore implements WaMessageSecretStore {
6
+ private readonly secrets;
7
+ private readonly ttlMs;
8
+ private readonly maxSecrets;
9
+ private readonly cleanupTimer;
10
+ constructor(ttlMs?: number, options?: WaMessageSecretMemoryStoreOptions);
11
+ get(messageId: string, nowMs?: number): Promise<WaMessageSecretEntry | null>;
12
+ getBatch(messageIds: readonly string[], nowMs?: number): Promise<readonly (WaMessageSecretEntry | null)[]>;
13
+ set(messageId: string, entry: WaMessageSecretEntry): Promise<void>;
14
+ setBatch(entries: readonly {
15
+ readonly messageId: string;
16
+ readonly entry: WaMessageSecretEntry;
17
+ }[]): Promise<void>;
18
+ cleanupExpired(nowMs: number): Promise<number>;
19
+ clear(): Promise<void>;
20
+ destroy(): Promise<void>;
21
+ }
@@ -0,0 +1,23 @@
1
+ import type { PreKeyRecord } from '../../../signal/types';
2
+ import type { WaPreKeyStore as WaPreKeyStoreContract } from '../../contracts/pre-key.store';
3
+ export interface WaPreKeyMemoryStoreOptions {
4
+ readonly maxPreKeys?: number;
5
+ }
6
+ export declare class WaPreKeyMemoryStore implements WaPreKeyStoreContract {
7
+ private readonly preKeys;
8
+ private readonly uploadedPreKeys;
9
+ private serverHasPreKeys;
10
+ private nextPreKeyId;
11
+ private readonly maxPreKeys;
12
+ constructor(options?: WaPreKeyMemoryStoreOptions);
13
+ putPreKey(record: PreKeyRecord): Promise<void>;
14
+ getOrGenPreKeys(count: number, generator: (keyId: number) => PreKeyRecord | Promise<PreKeyRecord>): Promise<readonly PreKeyRecord[]>;
15
+ getPreKeyById(keyId: number): Promise<PreKeyRecord | null>;
16
+ getPreKeysById(keyIds: readonly number[]): Promise<readonly (PreKeyRecord | null)[]>;
17
+ consumePreKeyById(keyId: number): Promise<PreKeyRecord | null>;
18
+ getOrGenSinglePreKey(generator: (keyId: number) => PreKeyRecord | Promise<PreKeyRecord>): Promise<PreKeyRecord>;
19
+ markKeyAsUploaded(keyId: number): Promise<void>;
20
+ setServerHasPreKeys(value: boolean): Promise<void>;
21
+ getServerHasPreKeys(): Promise<boolean>;
22
+ clear(): Promise<void>;
23
+ }
@@ -1,12 +1,18 @@
1
1
  import type { WaRetryOutboundMessageRecord, WaRetryOutboundState } from '../../../retry/types';
2
2
  import type { WaRetryStore } from '../../contracts/retry.store';
3
+ export interface WaRetryMemoryStoreOptions {
4
+ readonly maxOutboundMessages?: number;
5
+ readonly maxInboundCounters?: number;
6
+ }
3
7
  export declare class WaRetryMemoryStore implements WaRetryStore {
4
8
  private readonly outboundMessages;
5
9
  private readonly eligibleSets;
6
10
  private readonly inboundCounters;
7
11
  private readonly ttlMs;
12
+ private readonly maxOutboundMessages;
13
+ private readonly maxInboundCounters;
8
14
  private readonly cleanupTimer;
9
- constructor(ttlMs?: number);
15
+ constructor(ttlMs?: number, options?: WaRetryMemoryStoreOptions);
10
16
  getTtlMs(): number;
11
17
  supportsRawReplayPayload(): boolean;
12
18
  getOutboundRequesterStatus(messageId: string, requesterDeviceJid: string): Promise<{
@@ -0,0 +1,21 @@
1
+ import type { SignalAddress, SignalSessionRecord } from '../../../signal/types';
2
+ import type { WaSessionStore as WaSessionStoreContract } from '../../contracts/session.store';
3
+ export interface WaSessionMemoryStoreOptions {
4
+ readonly maxSessions?: number;
5
+ }
6
+ export declare class WaSessionMemoryStore implements WaSessionStoreContract {
7
+ private readonly signalSessions;
8
+ private readonly maxSessions;
9
+ constructor(options?: WaSessionMemoryStoreOptions);
10
+ hasSession(address: SignalAddress): Promise<boolean>;
11
+ hasSessions(addresses: readonly SignalAddress[]): Promise<readonly boolean[]>;
12
+ getSession(address: SignalAddress): Promise<SignalSessionRecord | null>;
13
+ getSessionsBatch(addresses: readonly SignalAddress[]): Promise<readonly (SignalSessionRecord | null)[]>;
14
+ setSession(address: SignalAddress, session: SignalSessionRecord): Promise<void>;
15
+ setSessionsBatch(entries: readonly {
16
+ readonly address: SignalAddress;
17
+ readonly session: SignalSessionRecord;
18
+ }[]): Promise<void>;
19
+ deleteSession(address: SignalAddress): Promise<void>;
20
+ clear(): Promise<void>;
21
+ }
@@ -1,24 +1,10 @@
1
- import type { PreKeyRecord, RegistrationInfo, SignalAddress, SignalSessionRecord, SignedPreKeyRecord } from '../../../signal/types';
2
- import type { WaSignalMetaSnapshot, WaSignalStore as WaSignalStoreContract } from '../../contracts/signal.store';
3
- export interface WaSignalMemoryStoreOptions {
4
- readonly maxPreKeys?: number;
5
- readonly maxSessions?: number;
6
- readonly maxRemoteIdentities?: number;
7
- }
1
+ import type { RegistrationInfo, SignedPreKeyRecord } from '../../../signal/types';
2
+ import type { WaSignalStore as WaSignalStoreContract } from '../../contracts/signal.store';
8
3
  export declare class WaSignalMemoryStore implements WaSignalStoreContract {
9
4
  private registrationInfo;
10
5
  private signedPreKey;
11
6
  private signedPreKeyRotationTs;
12
- private readonly preKeys;
13
- private readonly uploadedPreKeys;
14
- private serverHasPreKeys;
15
- private readonly signalSessions;
16
- private readonly remoteIdentities;
17
- private nextPreKeyId;
18
- private readonly maxPreKeys;
19
- private readonly maxSessions;
20
- private readonly maxRemoteIdentities;
21
- constructor(options?: WaSignalMemoryStoreOptions);
7
+ constructor();
22
8
  getRegistrationInfo(): Promise<RegistrationInfo | null>;
23
9
  setRegistrationInfo(info: RegistrationInfo): Promise<void>;
24
10
  getSignedPreKey(): Promise<SignedPreKeyRecord | null>;
@@ -26,33 +12,5 @@ export declare class WaSignalMemoryStore implements WaSignalStoreContract {
26
12
  getSignedPreKeyById(keyId: number): Promise<SignedPreKeyRecord | null>;
27
13
  setSignedPreKeyRotationTs(value: number | null): Promise<void>;
28
14
  getSignedPreKeyRotationTs(): Promise<number | null>;
29
- putPreKey(record: PreKeyRecord): Promise<void>;
30
- getOrGenPreKeys(count: number, generator: (keyId: number) => PreKeyRecord | Promise<PreKeyRecord>): Promise<readonly PreKeyRecord[]>;
31
- getPreKeyById(keyId: number): Promise<PreKeyRecord | null>;
32
- getPreKeysById(keyIds: readonly number[]): Promise<readonly (PreKeyRecord | null)[]>;
33
- consumePreKeyById(keyId: number): Promise<PreKeyRecord | null>;
34
- getOrGenSinglePreKey(generator: (keyId: number) => PreKeyRecord | Promise<PreKeyRecord>): Promise<PreKeyRecord>;
35
- markKeyAsUploaded(keyId: number): Promise<void>;
36
- setServerHasPreKeys(value: boolean): Promise<void>;
37
- getServerHasPreKeys(): Promise<boolean>;
38
- getSignalMeta(): Promise<WaSignalMetaSnapshot>;
39
- hasSession(address: SignalAddress): Promise<boolean>;
40
- hasSessions(addresses: readonly SignalAddress[]): Promise<readonly boolean[]>;
41
- getSession(address: SignalAddress): Promise<SignalSessionRecord | null>;
42
- getSessionsBatch(addresses: readonly SignalAddress[]): Promise<readonly (SignalSessionRecord | null)[]>;
43
- setSession(address: SignalAddress, session: SignalSessionRecord): Promise<void>;
44
- setSessionsBatch(entries: readonly {
45
- readonly address: SignalAddress;
46
- readonly session: SignalSessionRecord;
47
- }[]): Promise<void>;
48
- deleteSession(address: SignalAddress): Promise<void>;
49
- getRemoteIdentity(address: SignalAddress): Promise<Uint8Array | null>;
50
- getRemoteIdentities(addresses: readonly SignalAddress[]): Promise<readonly (Uint8Array | null)[]>;
51
- setRemoteIdentity(address: SignalAddress, identityKey: Uint8Array): Promise<void>;
52
- setRemoteIdentities(entries: readonly {
53
- readonly address: SignalAddress;
54
- readonly identityKey: Uint8Array;
55
- }[]): Promise<void>;
56
15
  clear(): Promise<void>;
57
- private addUploadedPreKey;
58
16
  }
@@ -1,4 +1,4 @@
1
- import type { WaStoredThreadRecord, WaThreadStore as Contract } from '../../contracts/thread.store';
1
+ import type { WaThreadStore as Contract, WaStoredThreadRecord } from '../../contracts/thread.store';
2
2
  export interface WaThreadMemoryStoreOptions {
3
3
  readonly maxThreads?: number;
4
4
  }
@@ -2,11 +2,15 @@ import type { WaAppStateStore } from './contracts/appstate.store';
2
2
  import type { WaAuthStore } from './contracts/auth.store';
3
3
  import type { WaContactStore } from './contracts/contact.store';
4
4
  import type { WaDeviceListStore } from './contracts/device-list.store';
5
+ import type { WaIdentityStore } from './contracts/identity.store';
6
+ import type { WaMessageSecretStore } from './contracts/message-secret.store';
5
7
  import type { WaMessageStore } from './contracts/message.store';
6
8
  import type { WaParticipantsStore } from './contracts/participants.store';
9
+ import type { WaPreKeyStore } from './contracts/pre-key.store';
7
10
  import type { WaPrivacyTokenStore } from './contracts/privacy-token.store';
8
11
  import type { WaRetryStore } from './contracts/retry.store';
9
12
  import type { WaSenderKeyStore } from './contracts/sender-key.store';
13
+ import type { WaSessionStore } from './contracts/session.store';
10
14
  import type { WaSignalStore } from './contracts/signal.store';
11
15
  import type { WaThreadStore } from './contracts/thread.store';
12
16
  export type WithDestroyLifecycle<T> = T & {
@@ -15,12 +19,16 @@ export type WithDestroyLifecycle<T> = T & {
15
19
  export interface WaStoreSession {
16
20
  readonly auth: WaAuthStore;
17
21
  readonly signal: WaSignalStore;
22
+ readonly preKey: WaPreKeyStore;
23
+ readonly session: WaSessionStore;
24
+ readonly identity: WaIdentityStore;
18
25
  readonly senderKey: WaSenderKeyStore;
19
26
  readonly appState: WaAppStateStore;
20
27
  readonly retry: WaRetryStore;
21
28
  readonly participants: WaParticipantsStore;
22
29
  readonly deviceList: WaDeviceListStore;
23
30
  readonly messages: WaMessageStore;
31
+ readonly messageSecret: WaMessageSecretStore;
24
32
  readonly threads: WaThreadStore;
25
33
  readonly contacts: WaContactStore;
26
34
  readonly privacyToken: WaPrivacyTokenStore;
@@ -36,6 +44,9 @@ export interface WaStoreBackend {
36
44
  readonly stores: {
37
45
  readonly auth: (sessionId: string) => WaAuthStore;
38
46
  readonly signal: (sessionId: string) => WaSignalStore;
47
+ readonly preKey: (sessionId: string) => WaPreKeyStore;
48
+ readonly session: (sessionId: string) => WaSessionStore;
49
+ readonly identity: (sessionId: string) => WaIdentityStore;
39
50
  readonly senderKey: (sessionId: string) => WaSenderKeyStore;
40
51
  readonly appState: (sessionId: string) => WaAppStateStore;
41
52
  readonly messages: (sessionId: string) => WaMessageStore;
@@ -47,6 +58,7 @@ export interface WaStoreBackend {
47
58
  readonly retry: (sessionId: string) => WaRetryStore;
48
59
  readonly participants: (sessionId: string) => WaParticipantsStore;
49
60
  readonly deviceList: (sessionId: string) => WaDeviceListStore;
61
+ readonly messageSecret: (sessionId: string) => WaMessageSecretStore;
50
62
  };
51
63
  }
52
64
  export type WaStoreDomain = keyof WaStoreBackend['stores'];
@@ -56,6 +68,9 @@ export interface WaCreateStoreOptions<B extends string = string> {
56
68
  readonly providers?: {
57
69
  readonly auth?: B | 'memory';
58
70
  readonly signal?: B | 'memory';
71
+ readonly preKey?: B | 'memory';
72
+ readonly session?: B | 'memory';
73
+ readonly identity?: B | 'memory';
59
74
  readonly senderKey?: B | 'memory';
60
75
  readonly appState?: B | 'memory';
61
76
  readonly messages?: B | 'memory' | 'none';
@@ -64,9 +79,10 @@ export interface WaCreateStoreOptions<B extends string = string> {
64
79
  readonly privacyToken?: B | 'memory';
65
80
  };
66
81
  readonly cacheProviders?: {
67
- readonly retry?: B | 'memory';
82
+ readonly retry?: B | 'memory' | 'none';
68
83
  readonly participants?: B | 'memory' | 'none';
69
84
  readonly deviceList?: B | 'memory' | 'none';
85
+ readonly messageSecret?: B | 'memory' | 'none';
70
86
  };
71
87
  readonly memory?: {
72
88
  readonly limits?: WaStoreMemoryLimitSelection;
@@ -74,6 +90,7 @@ export interface WaCreateStoreOptions<B extends string = string> {
74
90
  readonly retryMs?: number;
75
91
  readonly participantsMs?: number;
76
92
  readonly deviceListMs?: number;
93
+ readonly messageSecretMs?: number;
77
94
  };
78
95
  };
79
96
  }
@@ -88,6 +105,9 @@ export interface WaStoreMemoryLimitSelection {
88
105
  readonly participantsGroups?: number;
89
106
  readonly deviceListUsers?: number;
90
107
  readonly messages?: number;
108
+ readonly messageSecrets?: number;
109
+ readonly retryOutboundMessages?: number;
110
+ readonly retryInboundCounters?: number;
91
111
  readonly threads?: number;
92
112
  readonly contacts?: number;
93
113
  readonly privacyTokens?: number;
@@ -5,6 +5,7 @@ export declare class WaWebSocket {
5
5
  private readonly socketUrls;
6
6
  private readonly logger;
7
7
  private readonly webSocketCtor;
8
+ private readonly customWebSocketCtor;
8
9
  private readonly socketRuntime;
9
10
  private readonly connectingSockets;
10
11
  private handlers;
@@ -1,8 +1,15 @@
1
- export type { BinaryNode, RawWebSocket, RawWebSocketConstructor, WaRawWebSocketInit, SocketCloseInfo, SocketOpenInfo, WaCommsConfig, WaCommsState, WaNoiseConfig, WaProxyAgent, WaProxyDispatcher, WaProxyTransport, WaSocketConfig, WaSocketHandlers } from './types';
1
+ export type { BinaryNode, RawWebSocket, RawWebSocketConstructor, WaRawWebSocketInit, SocketCloseInfo, SocketOpenInfo, WaCommsConfig, WaCommsState, WaNoiseConfig, WaNoiseTrustedRootCa, WaProxyAgent, WaProxyDispatcher, WaProxyTransport, WaSocketConfig, WaSocketHandlers } from './types';
2
+ export { decodeBinaryNode, decodeBinaryNodeStanza, encodeBinaryNode, encodeBinaryNodeStanza } from './binary';
2
3
  export { isProxyAgent, isProxyDispatcher, isProxyTransport, toProxyAgent, toProxyDispatcher } from './proxy';
3
4
  export { WaComms } from './WaComms';
5
+ export { verifyNoiseCertificateChain, type WaNoiseRootCa } from './noise/WaNoiseCert';
6
+ export { WaNoiseHandshake } from './noise/WaNoiseHandshake';
7
+ export { WaNoiseSocket } from './noise/WaNoiseSocket';
4
8
  export { WaWebSocket } from './WaWebSocket';
5
9
  export { WaKeepAlive } from './keepalive/WaKeepAlive';
6
10
  export { WaNodeOrchestrator } from './node/WaNodeOrchestrator';
7
11
  export { WaNodeTransport } from './node/WaNodeTransport';
12
+ export { WaMobileTcpSocket, WaMobileTcpSocketCtor } from './node/WaMobileTcpSocket';
13
+ export { buildMobileLoginPayload } from './noise/WaMobileClientPayload';
14
+ export type { WaMobileLoginPayloadConfig, WaMobileTransportDeviceInfo } from './noise/WaMobileClientPayload';
8
15
  export { assertIqResult, buildIqNode, parseIqError, queryWithContext } from './node/query';
@@ -9,6 +9,7 @@ interface WaKeepAliveOptions {
9
9
  };
10
10
  readonly getComms: () => WaComms | null;
11
11
  readonly intervalMs?: number;
12
+ readonly getIntervalMs?: () => number;
12
13
  readonly timeoutMs?: number;
13
14
  readonly hostDomain?: string;
14
15
  readonly jitterRatio?: number;
@@ -18,7 +19,8 @@ export declare class WaKeepAlive {
18
19
  private readonly logger;
19
20
  private readonly nodeOrchestrator;
20
21
  private readonly getCommsFn;
21
- private readonly intervalMs;
22
+ private readonly baseIntervalMs;
23
+ private readonly getIntervalMs;
22
24
  private readonly timeoutMs;
23
25
  private readonly hostDomain;
24
26
  private readonly jitterRatio;
@@ -32,6 +34,7 @@ export declare class WaKeepAlive {
32
34
  private schedule;
33
35
  private run;
34
36
  private normalizeJitterRatio;
37
+ private resolveIntervalMs;
35
38
  private computeNextDelayMs;
36
39
  private clearTimer;
37
40
  }
@@ -0,0 +1,18 @@
1
+ import type { RawWebSocket, RawWebSocketConstructor, WaRawWebSocketInit, WebSocketEventLike } from '../types';
2
+ export declare class WaMobileTcpSocket implements RawWebSocket {
3
+ binaryType: string;
4
+ readyState: number;
5
+ onopen: ((event: WebSocketEventLike) => void) | null;
6
+ onclose: ((event: WebSocketEventLike) => void) | null;
7
+ onerror: ((event: WebSocketEventLike) => void) | null;
8
+ onmessage: ((event: WebSocketEventLike) => void) | null;
9
+ private readonly socket;
10
+ private closedCode;
11
+ private closedReason;
12
+ private closedClean;
13
+ private forceCloseTimer;
14
+ constructor(url: string, _protocols?: unknown, _options?: WaRawWebSocketInit);
15
+ send(data: string | ArrayBuffer | Uint8Array): void;
16
+ close(code?: number, reason?: string): void;
17
+ }
18
+ export declare const WaMobileTcpSocketCtor: RawWebSocketConstructor;
@@ -5,12 +5,14 @@ interface WaNodeOrchestratorOptions {
5
5
  readonly sendNode: (node: BinaryNode) => Promise<void>;
6
6
  readonly defaultTimeoutMs?: number;
7
7
  readonly hostDomain?: string;
8
+ readonly mobileIqIdFormat?: boolean;
8
9
  }
9
10
  export declare class WaNodeOrchestrator {
10
11
  private readonly logger;
11
12
  private readonly sendNodeFn;
12
13
  private readonly defaultTimeoutMs;
13
14
  private readonly hostDomain;
15
+ private readonly mobileIqIdFormat;
14
16
  private idGenerator;
15
17
  private idGeneratorReady;
16
18
  private readonly pendingQueries;
@@ -19,8 +21,10 @@ export declare class WaNodeOrchestrator {
19
21
  clearPending(reason: Error): void;
20
22
  tryResolvePending(node: BinaryNode): boolean;
21
23
  handleIncomingNode(node: BinaryNode): Promise<boolean>;
22
- sendNode(node: BinaryNode): Promise<void>;
23
- query(node: BinaryNode, timeoutMs?: number): Promise<BinaryNode>;
24
+ sendNode(node: BinaryNode, autoId?: boolean): Promise<void>;
25
+ query(node: BinaryNode, timeoutMs?: number, options?: {
26
+ readonly useSystemId?: boolean;
27
+ }): Promise<BinaryNode>;
24
28
  private withAutoId;
25
29
  private getIdGenerator;
26
30
  }
@@ -0,0 +1,5 @@
1
+ import type { BinaryNode } from '../../types';
2
+ export declare function buildGetAbPropsIq(options?: {
3
+ readonly hash?: string | null;
4
+ readonly refreshId?: number | null;
5
+ }): BinaryNode;
@@ -0,0 +1,2 @@
1
+ import type { BinaryNode } from '../../types';
2
+ export declare function buildRemoveCompanionDeviceIq(deviceJid: string, reason: string): BinaryNode;
@@ -0,0 +1,11 @@
1
+ import { type WaEmailContext } from '../../../protocol/email';
2
+ import type { BinaryNode } from '../../types';
3
+ export declare function buildGetEmailIq(): BinaryNode;
4
+ export declare function buildSetEmailIq(email: string, context?: WaEmailContext): BinaryNode;
5
+ export interface BuildRequestEmailVerificationCodeInput {
6
+ readonly languageCode: string;
7
+ readonly localeCode: string;
8
+ }
9
+ export declare function buildRequestEmailVerificationCodeIq(input: BuildRequestEmailVerificationCodeInput): BinaryNode;
10
+ export declare function buildVerifyEmailCodeIq(code: string): BinaryNode;
11
+ export declare function buildConfirmEmailIq(context?: WaEmailContext): BinaryNode;
@@ -0,0 +1,2 @@
1
+ import type { BinaryNode } from '../../types';
2
+ export declare function buildOfflineBatchNode(count: number): BinaryNode;
@@ -1,5 +1,6 @@
1
1
  import type { SignalMissingPreKeysTarget } from '../../../signal/api/SignalMissingPreKeysSyncApi';
2
2
  import type { PreKeyRecord, RegistrationInfo, SignedPreKeyRecord } from '../../../signal/types';
3
- export declare function buildPreKeyUploadIq(registrationInfo: RegistrationInfo, signedPreKey: SignedPreKeyRecord, preKeys: readonly PreKeyRecord[]): import("../..").BinaryNode;
4
- export declare function buildSignedPreKeyRotateIq(signedPreKey: SignedPreKeyRecord): import("../..").BinaryNode;
5
- export declare function buildMissingPreKeysFetchIq(users: readonly SignalMissingPreKeysTarget[]): import("../..").BinaryNode;
3
+ import type { BinaryNode } from '../../types';
4
+ export declare function buildPreKeyUploadIq(registrationInfo: RegistrationInfo, signedPreKey: SignedPreKeyRecord, preKeys: readonly PreKeyRecord[]): BinaryNode;
5
+ export declare function buildSignedPreKeyRotateIq(signedPreKey: SignedPreKeyRecord): BinaryNode;
6
+ export declare function buildMissingPreKeysFetchIq(users: readonly SignalMissingPreKeysTarget[]): BinaryNode;
@@ -0,0 +1,6 @@
1
+ import type { BinaryNode } from '../../types';
2
+ export interface BuildPresenceNodeInput {
3
+ readonly type?: 'available' | 'unavailable';
4
+ readonly name?: string;
5
+ }
6
+ export declare function buildPresenceNode(input?: BuildPresenceNodeInput): BinaryNode;
@@ -2,6 +2,7 @@ import type { BinaryNode } from '../types';
2
2
  export interface NodeIdGenerator {
3
3
  readonly prefix: string;
4
4
  next(): string;
5
+ nextSystem?(): string;
5
6
  }
6
7
  export declare function getNodeChildren(node: BinaryNode): readonly BinaryNode[];
7
8
  export declare function findNodeChild(node: BinaryNode, tag: string): BinaryNode | undefined;
@@ -16,6 +17,8 @@ export declare function findNodeChildrenByTags<const TTags extends readonly stri
16
17
  };
17
18
  export declare function hasNodeChild(node: BinaryNode, tag: string): boolean;
18
19
  export declare function decodeNodeContentUtf8OrBytes(value: BinaryNode['content'], field: string): Uint8Array;
20
+ export declare function getNodeTextContent(node: BinaryNode): string | undefined;
19
21
  export declare function decodeNodeContentBase64OrBytes(value: BinaryNode['content'], field: string): Uint8Array;
20
22
  export declare function formatNodeIdPrefixFromSeed(seed: Uint8Array): string;
21
23
  export declare function createNodeIdGenerator(): Promise<NodeIdGenerator>;
24
+ export declare function createMobileNodeIdGenerator(): NodeIdGenerator;
@@ -0,0 +1,11 @@
1
+ export interface WaMexArgoError {
2
+ readonly message: string;
3
+ readonly path: number | null;
4
+ readonly extensions: Record<string, unknown> | null;
5
+ }
6
+ export interface WaMexArgoResponse {
7
+ readonly data: unknown;
8
+ readonly errors: WaMexArgoError[];
9
+ }
10
+ export declare function isMexArgoDecoderAvailable(): Promise<boolean>;
11
+ export declare function decodeMexArgoResponse(bytes: Uint8Array): Promise<WaMexArgoResponse>;
@@ -0,0 +1,18 @@
1
+ import type { BinaryNode } from '../../types';
2
+ export interface WaMexQuerySocket {
3
+ readonly query: (node: BinaryNode, timeoutMs: number) => Promise<BinaryNode>;
4
+ }
5
+ export interface WaMexQueryArgs {
6
+ readonly docId: string;
7
+ readonly clientDocId: string;
8
+ /** Passed verbatim — caller wraps under `input` only when the op's schema requires it. */
9
+ readonly variables: Readonly<Record<string, unknown>>;
10
+ readonly opName: string;
11
+ readonly timeoutMs?: number;
12
+ readonly iqId?: string;
13
+ }
14
+ export interface WaMexResponse {
15
+ readonly raw: BinaryNode;
16
+ readonly data: unknown;
17
+ }
18
+ export declare function dispatchMexQuery(socket: WaMexQuerySocket, args: WaMexQueryArgs): Promise<WaMexResponse>;
@@ -0,0 +1,14 @@
1
+ export interface WaMexPersistId {
2
+ readonly docId: string;
3
+ readonly clientDocId: string;
4
+ }
5
+ export declare const WA_MEX_PERSIST_IDS: Readonly<{
6
+ WWWGetCertificates: Readonly<{
7
+ docId: "25094190163544446";
8
+ clientDocId: "16428758503015954638431529919";
9
+ }>;
10
+ WWWCreateUser: Readonly<{
11
+ docId: "8548056818544135";
12
+ clientDocId: "25777518041400352865446016972";
13
+ }>;
14
+ }>;
@@ -0,0 +1,29 @@
1
+ import { type Proto } from '../..';
2
+ export interface WaMobileTransportDeviceInfo {
3
+ readonly manufacturer: string;
4
+ readonly device: string;
5
+ readonly osVersion: string;
6
+ readonly osBuildNumber: string;
7
+ readonly appVersion: string;
8
+ readonly mcc?: string;
9
+ readonly mnc?: string;
10
+ readonly localeLanguageIso6391?: string;
11
+ readonly localeCountryIso31661Alpha2?: string;
12
+ readonly phoneId?: string;
13
+ readonly deviceBoard?: string;
14
+ readonly deviceModelType?: string;
15
+ }
16
+ export interface WaMobileLoginPayloadConfig {
17
+ readonly username: number;
18
+ readonly device?: number;
19
+ readonly passive?: boolean;
20
+ readonly pull?: boolean;
21
+ readonly deviceInfo: WaMobileTransportDeviceInfo;
22
+ readonly lidDbMigrated?: boolean;
23
+ readonly connectReason?: Proto.ClientPayload.ConnectReason;
24
+ readonly connectType?: Proto.ClientPayload.ConnectType;
25
+ readonly pushName?: string;
26
+ readonly yearClass?: number;
27
+ readonly memClass?: number;
28
+ }
29
+ export declare function buildMobileLoginPayload(config: WaMobileLoginPayloadConfig): Uint8Array;