zapo-js 0.1.1 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (589) hide show
  1. package/README.md +20 -4
  2. package/dist/appstate/WaAppStateCrypto.js +19 -26
  3. package/dist/appstate/WaAppStateSyncClient.js +293 -181
  4. package/dist/appstate/WaAppStateSyncResponseParser.js +16 -5
  5. package/dist/appstate/constants.js +4 -3
  6. package/dist/appstate/{store/sqlite.js → encoding.js} +13 -8
  7. package/dist/appstate/index.js +8 -6
  8. package/dist/appstate/utils.js +9 -34
  9. package/dist/auth/WaAuthClient.js +43 -61
  10. package/dist/auth/flow/WaAuthCredentialsFlow.js +22 -15
  11. package/dist/auth/index.js +1 -8
  12. package/dist/auth/pairing/WaPairingCodeCrypto.js +6 -4
  13. package/dist/auth/pairing/WaPairingFlow.js +34 -26
  14. package/dist/auth/pairing/WaQrFlow.js +37 -24
  15. package/dist/client/WaClient.js +275 -324
  16. package/dist/client/WaClientFactory.js +500 -133
  17. package/dist/client/connection/WaConnectionManager.js +301 -0
  18. package/dist/client/connection/WaKeyShareCoordinator.js +63 -0
  19. package/dist/client/connection/WaReceiptQueue.js +51 -0
  20. package/dist/client/coordinators/WaAppStateMutationCoordinator.js +471 -0
  21. package/dist/client/coordinators/WaBusinessCoordinator.js +241 -0
  22. package/dist/client/coordinators/WaGroupCoordinator.js +30 -16
  23. package/dist/client/coordinators/WaIncomingNodeCoordinator.js +21 -27
  24. package/dist/client/coordinators/WaMessageDispatchCoordinator.js +439 -701
  25. package/dist/client/coordinators/WaPassiveTasksCoordinator.js +74 -31
  26. package/dist/client/coordinators/WaPrivacyCoordinator.js +134 -0
  27. package/dist/client/coordinators/WaProfileCoordinator.js +212 -0
  28. package/dist/client/coordinators/WaRetryCoordinator.js +242 -57
  29. package/dist/client/coordinators/WaStreamControlCoordinator.js +18 -11
  30. package/dist/client/coordinators/WaTrustedContactTokenCoordinator.js +166 -0
  31. package/dist/client/dirty.js +74 -48
  32. package/dist/client/events/chat.js +4 -3
  33. package/dist/client/events/devices.js +72 -0
  34. package/dist/client/events/group.js +62 -47
  35. package/dist/client/events/identity.js +22 -0
  36. package/dist/client/events/privacy-token.js +39 -0
  37. package/dist/client/history-sync.js +94 -63
  38. package/dist/client/incoming.js +60 -27
  39. package/dist/client/mailbox.js +24 -23
  40. package/dist/client/messages.js +107 -31
  41. package/dist/client/messaging/fanout.js +199 -0
  42. package/dist/client/messaging/key-protocol.js +130 -0
  43. package/dist/client/messaging/participants.js +193 -0
  44. package/dist/client/persistence/WriteBehindPersistence.js +129 -0
  45. package/dist/client/tokens/cs-token.js +50 -0
  46. package/dist/client/tokens/tc-token.js +25 -0
  47. package/dist/crypto/core/hkdf.js +3 -8
  48. package/dist/crypto/core/index.js +2 -5
  49. package/dist/crypto/core/keys.js +6 -7
  50. package/dist/crypto/core/nonce.js +2 -0
  51. package/dist/crypto/core/primitives.js +12 -23
  52. package/dist/crypto/core/random.js +26 -23
  53. package/dist/crypto/curves/Ed25519.js +7 -8
  54. package/dist/crypto/curves/X25519.js +38 -22
  55. package/dist/crypto/index.js +1 -3
  56. package/dist/crypto/math/constants.js +13 -36
  57. package/dist/crypto/math/edwards.js +171 -44
  58. package/dist/crypto/math/fe.js +706 -0
  59. package/dist/crypto/math/mod.js +10 -3
  60. package/dist/esm/appstate/WaAppStateCrypto.js +7 -14
  61. package/dist/esm/appstate/WaAppStateSyncClient.js +284 -172
  62. package/dist/esm/appstate/WaAppStateSyncResponseParser.js +17 -6
  63. package/dist/esm/appstate/constants.js +3 -2
  64. package/dist/esm/appstate/{store/sqlite.js → encoding.js} +13 -8
  65. package/dist/esm/appstate/index.js +2 -2
  66. package/dist/esm/appstate/utils.js +8 -30
  67. package/dist/esm/auth/WaAuthClient.js +43 -61
  68. package/dist/esm/auth/flow/WaAuthCredentialsFlow.js +22 -15
  69. package/dist/esm/auth/index.js +0 -3
  70. package/dist/esm/auth/pairing/WaPairingCodeCrypto.js +6 -4
  71. package/dist/esm/auth/pairing/WaPairingFlow.js +28 -20
  72. package/dist/esm/auth/pairing/WaQrFlow.js +37 -24
  73. package/dist/esm/client/WaClient.js +275 -324
  74. package/dist/esm/client/WaClientFactory.js +501 -134
  75. package/dist/esm/client/connection/WaConnectionManager.js +297 -0
  76. package/dist/esm/client/connection/WaKeyShareCoordinator.js +59 -0
  77. package/dist/esm/client/connection/WaReceiptQueue.js +47 -0
  78. package/dist/esm/client/coordinators/WaAppStateMutationCoordinator.js +467 -0
  79. package/dist/esm/client/coordinators/WaBusinessCoordinator.js +238 -0
  80. package/dist/esm/client/coordinators/WaGroupCoordinator.js +23 -9
  81. package/dist/esm/client/coordinators/WaIncomingNodeCoordinator.js +21 -27
  82. package/dist/esm/client/coordinators/WaMessageDispatchCoordinator.js +443 -705
  83. package/dist/esm/client/coordinators/WaPassiveTasksCoordinator.js +74 -31
  84. package/dist/esm/client/coordinators/WaPrivacyCoordinator.js +131 -0
  85. package/dist/esm/client/coordinators/WaProfileCoordinator.js +209 -0
  86. package/dist/esm/client/coordinators/WaRetryCoordinator.js +244 -59
  87. package/dist/esm/client/coordinators/WaStreamControlCoordinator.js +19 -12
  88. package/dist/esm/client/coordinators/WaTrustedContactTokenCoordinator.js +162 -0
  89. package/dist/esm/client/dirty.js +69 -43
  90. package/dist/esm/client/events/chat.js +4 -3
  91. package/dist/esm/client/events/devices.js +68 -0
  92. package/dist/esm/client/events/group.js +53 -39
  93. package/dist/esm/client/events/identity.js +19 -0
  94. package/dist/esm/client/events/privacy-token.js +36 -0
  95. package/dist/esm/client/history-sync.js +91 -60
  96. package/dist/esm/client/incoming.js +61 -28
  97. package/dist/esm/client/mailbox.js +24 -23
  98. package/dist/esm/client/messages.js +108 -32
  99. package/dist/esm/client/messaging/fanout.js +196 -0
  100. package/dist/esm/client/messaging/key-protocol.js +127 -0
  101. package/dist/esm/client/messaging/participants.js +190 -0
  102. package/dist/esm/client/persistence/WriteBehindPersistence.js +125 -0
  103. package/dist/esm/client/tokens/cs-token.js +46 -0
  104. package/dist/esm/client/tokens/tc-token.js +18 -0
  105. package/dist/esm/crypto/core/hkdf.js +3 -8
  106. package/dist/esm/crypto/core/index.js +2 -3
  107. package/dist/esm/crypto/core/keys.js +3 -4
  108. package/dist/esm/crypto/core/nonce.js +2 -0
  109. package/dist/esm/crypto/core/primitives.js +12 -22
  110. package/dist/esm/crypto/core/random.js +25 -23
  111. package/dist/esm/crypto/curves/Ed25519.js +4 -5
  112. package/dist/esm/crypto/curves/X25519.js +35 -19
  113. package/dist/esm/crypto/index.js +0 -1
  114. package/dist/esm/crypto/math/constants.js +12 -35
  115. package/dist/esm/crypto/math/edwards.js +174 -47
  116. package/dist/esm/crypto/math/fe.js +691 -0
  117. package/dist/esm/crypto/math/mod.js +10 -1
  118. package/dist/esm/index.js +1 -1
  119. package/dist/esm/infra/log/ConsoleLogger.js +18 -17
  120. package/dist/esm/infra/log/PinoLogger.js +15 -9
  121. package/dist/esm/infra/log/types.js +11 -1
  122. package/dist/esm/infra/perf/BackgroundQueue.js +478 -0
  123. package/dist/esm/infra/perf/BoundedTaskQueue.js +16 -18
  124. package/dist/esm/infra/perf/PromiseDedup.js +20 -0
  125. package/dist/esm/infra/perf/SharedExclusiveGate.js +109 -0
  126. package/dist/esm/infra/perf/StoreLock.js +77 -0
  127. package/dist/esm/media/WaMediaCrypto.js +96 -16
  128. package/dist/esm/media/WaMediaTransferClient.js +251 -91
  129. package/dist/esm/media/conn.js +10 -6
  130. package/dist/esm/media/constants.js +6 -2
  131. package/dist/esm/message/WaMessageClient.js +30 -32
  132. package/dist/esm/message/ack.js +6 -6
  133. package/dist/esm/message/addon-crypto.js +59 -0
  134. package/dist/esm/message/content.js +195 -9
  135. package/dist/esm/message/icdc.js +76 -0
  136. package/dist/esm/message/incoming.js +129 -122
  137. package/dist/esm/message/index.js +2 -0
  138. package/dist/esm/message/phash.js +3 -1
  139. package/dist/esm/message/reporting-token.js +425 -0
  140. package/dist/esm/message/use-case-secret.js +49 -0
  141. package/dist/esm/protocol/appstate.js +27 -0
  142. package/dist/esm/protocol/browser.js +10 -18
  143. package/dist/esm/protocol/constants.js +6 -3
  144. package/dist/esm/protocol/defaults.js +6 -0
  145. package/dist/esm/protocol/index.js +2 -11
  146. package/dist/esm/protocol/jid.js +133 -52
  147. package/dist/esm/protocol/media.js +3 -3
  148. package/dist/esm/protocol/message.js +61 -1
  149. package/dist/esm/protocol/nodes.js +4 -0
  150. package/dist/esm/protocol/notification.js +3 -1
  151. package/dist/esm/protocol/privacy-token.js +17 -0
  152. package/dist/esm/protocol/privacy.js +55 -0
  153. package/dist/esm/protocol/stream.js +26 -1
  154. package/dist/esm/protocol/usync.js +11 -0
  155. package/dist/esm/retry/codec.js +216 -0
  156. package/dist/esm/retry/constants.js +1 -1
  157. package/dist/esm/retry/index.js +3 -2
  158. package/dist/esm/retry/parse.js +88 -86
  159. package/dist/esm/retry/replay.js +54 -51
  160. package/dist/esm/retry/tracker.js +94 -0
  161. package/dist/esm/signal/api/SignalDeviceSyncApi.js +276 -92
  162. package/dist/esm/signal/api/SignalDigestSyncApi.js +17 -8
  163. package/dist/esm/signal/api/SignalIdentitySyncApi.js +67 -37
  164. package/dist/esm/signal/api/SignalMissingPreKeysSyncApi.js +86 -67
  165. package/dist/esm/signal/api/SignalRotateKeyApi.js +4 -2
  166. package/dist/esm/signal/api/SignalSessionSyncApi.js +36 -34
  167. package/dist/esm/signal/api/result-map.js +10 -0
  168. package/dist/esm/signal/constants.js +0 -4
  169. package/dist/esm/signal/crypto/WaAdvSignature.js +13 -9
  170. package/dist/esm/signal/{store/sqlite.js → encoding.js} +93 -60
  171. package/dist/esm/signal/group/SenderKeyChain.js +28 -23
  172. package/dist/esm/signal/group/SenderKeyCodec.js +5 -6
  173. package/dist/esm/signal/group/SenderKeyManager.js +144 -115
  174. package/dist/esm/signal/index.js +2 -0
  175. package/dist/esm/signal/registration/keygen.js +6 -2
  176. package/dist/esm/signal/registration/utils.js +1 -0
  177. package/dist/esm/signal/session/SignalProtocol.js +164 -53
  178. package/dist/esm/signal/session/SignalRatchet.js +24 -15
  179. package/dist/esm/signal/session/SignalSession.js +14 -9
  180. package/dist/esm/signal/session/resolver.js +221 -0
  181. package/dist/esm/store/contracts/privacy-token.store.js +1 -0
  182. package/dist/esm/store/createStore.js +100 -188
  183. package/dist/esm/store/index.js +1 -10
  184. package/dist/esm/store/locks/appstate.lock.js +26 -0
  185. package/dist/esm/store/locks/auth.lock.js +15 -0
  186. package/dist/esm/store/locks/contact.lock.js +20 -0
  187. package/dist/esm/store/locks/device-list.lock.js +20 -0
  188. package/dist/esm/store/locks/message.lock.js +21 -0
  189. package/dist/esm/store/locks/participants.lock.js +20 -0
  190. package/dist/esm/store/locks/privacy-token.lock.js +18 -0
  191. package/dist/esm/store/locks/retry.lock.js +29 -0
  192. package/dist/esm/store/locks/sender-key.lock.js +52 -0
  193. package/dist/esm/store/locks/signal.lock.js +63 -0
  194. package/dist/esm/store/locks/thread.lock.js +21 -0
  195. package/dist/esm/store/noop.store.js +4 -7
  196. package/dist/esm/store/providers/memory/appstate.store.js +38 -16
  197. package/dist/esm/store/providers/memory/contact.store.js +5 -0
  198. package/dist/esm/store/providers/memory/device-list.store.js +12 -34
  199. package/dist/esm/store/providers/memory/message.store.js +11 -5
  200. package/dist/esm/store/providers/memory/participants.store.js +1 -8
  201. package/dist/esm/store/providers/memory/privacy-token.store.js +43 -0
  202. package/dist/esm/store/providers/memory/retry.store.js +77 -2
  203. package/dist/esm/store/providers/memory/sender-key.store.js +11 -8
  204. package/dist/esm/store/providers/memory/signal.store.js +47 -18
  205. package/dist/esm/store/providers/memory/thread.store.js +5 -0
  206. package/dist/esm/transport/WaComms.js +28 -24
  207. package/dist/esm/transport/WaWebSocket.js +115 -18
  208. package/dist/esm/transport/binary/constants.js +0 -30
  209. package/dist/esm/transport/binary/decoder.js +8 -8
  210. package/dist/esm/transport/binary/encoder.js +10 -9
  211. package/dist/esm/transport/binary/index.js +0 -1
  212. package/dist/esm/transport/index.js +1 -0
  213. package/dist/esm/transport/keepalive/WaKeepAlive.js +2 -8
  214. package/dist/esm/transport/node/WaNodeOrchestrator.js +25 -21
  215. package/dist/esm/transport/node/WaNodeTransport.js +0 -3
  216. package/dist/esm/transport/node/builders/{accountSync.js → account-sync.js} +16 -36
  217. package/dist/esm/transport/node/builders/business.js +129 -0
  218. package/dist/esm/transport/node/builders/global.js +370 -0
  219. package/dist/esm/transport/node/builders/index.js +7 -3
  220. package/dist/esm/transport/node/builders/message.js +63 -230
  221. package/dist/esm/transport/node/builders/pairing.js +2 -27
  222. package/dist/esm/transport/node/builders/privacy-token.js +41 -0
  223. package/dist/esm/transport/node/builders/privacy.js +48 -0
  224. package/dist/esm/transport/node/builders/profile.js +70 -0
  225. package/dist/esm/transport/node/builders/retry.js +10 -22
  226. package/dist/esm/transport/node/builders/usync.js +45 -0
  227. package/dist/esm/transport/node/helpers.js +125 -5
  228. package/dist/esm/transport/node/usync.js +5 -0
  229. package/dist/esm/transport/node/xml.js +35 -14
  230. package/dist/esm/transport/noise/WaClientPayload.js +10 -10
  231. package/dist/esm/transport/noise/WaFrameCodec.js +48 -33
  232. package/dist/esm/transport/noise/WaNoiseCert.js +4 -7
  233. package/dist/esm/transport/noise/WaNoiseSession.js +77 -29
  234. package/dist/esm/transport/noise/WaNoiseSocket.js +8 -4
  235. package/dist/esm/transport/proxy.js +27 -0
  236. package/dist/esm/transport/stream/parse.js +17 -48
  237. package/dist/esm/util/bytes.js +67 -45
  238. package/dist/esm/util/coercion.js +6 -14
  239. package/dist/esm/util/index.js +5 -0
  240. package/dist/esm/util/primitives.js +40 -14
  241. package/dist/index.js +7 -1
  242. package/dist/infra/log/ConsoleLogger.js +18 -17
  243. package/dist/infra/log/PinoLogger.js +15 -9
  244. package/dist/infra/log/types.js +12 -0
  245. package/dist/infra/perf/BackgroundQueue.js +482 -0
  246. package/dist/infra/perf/BoundedTaskQueue.js +16 -18
  247. package/dist/infra/perf/PromiseDedup.js +24 -0
  248. package/dist/infra/perf/SharedExclusiveGate.js +113 -0
  249. package/dist/infra/perf/StoreLock.js +81 -0
  250. package/dist/media/WaMediaCrypto.js +95 -15
  251. package/dist/media/WaMediaTransferClient.js +284 -91
  252. package/dist/media/conn.js +10 -6
  253. package/dist/media/constants.js +6 -2
  254. package/dist/message/WaMessageClient.js +31 -33
  255. package/dist/message/ack.js +6 -6
  256. package/dist/message/addon-crypto.js +65 -0
  257. package/dist/message/content.js +198 -9
  258. package/dist/message/icdc.js +81 -0
  259. package/dist/message/incoming.js +127 -120
  260. package/dist/message/index.js +2 -0
  261. package/dist/message/phash.js +3 -1
  262. package/dist/message/reporting-token.js +429 -0
  263. package/dist/message/use-case-secret.js +55 -0
  264. package/dist/protocol/appstate.js +28 -1
  265. package/dist/protocol/browser.js +10 -18
  266. package/dist/protocol/constants.js +26 -1
  267. package/dist/protocol/defaults.js +6 -0
  268. package/dist/protocol/index.js +23 -42
  269. package/dist/protocol/jid.js +140 -52
  270. package/dist/protocol/media.js +3 -3
  271. package/dist/protocol/message.js +62 -2
  272. package/dist/protocol/nodes.js +4 -0
  273. package/dist/protocol/notification.js +3 -1
  274. package/dist/protocol/privacy-token.js +20 -0
  275. package/dist/protocol/privacy.js +58 -0
  276. package/dist/protocol/stream.js +27 -2
  277. package/dist/protocol/usync.js +14 -0
  278. package/dist/retry/codec.js +220 -0
  279. package/dist/retry/constants.js +1 -1
  280. package/dist/retry/index.js +7 -5
  281. package/dist/retry/parse.js +88 -85
  282. package/dist/retry/replay.js +52 -49
  283. package/dist/retry/tracker.js +97 -0
  284. package/dist/signal/api/SignalDeviceSyncApi.js +273 -89
  285. package/dist/signal/api/SignalDigestSyncApi.js +17 -8
  286. package/dist/signal/api/SignalIdentitySyncApi.js +66 -36
  287. package/dist/signal/api/SignalMissingPreKeysSyncApi.js +82 -63
  288. package/dist/signal/api/SignalRotateKeyApi.js +4 -2
  289. package/dist/signal/api/SignalSessionSyncApi.js +36 -34
  290. package/dist/signal/api/result-map.js +13 -0
  291. package/dist/signal/constants.js +1 -5
  292. package/dist/signal/crypto/WaAdvSignature.js +11 -7
  293. package/dist/signal/{store/sqlite.js → encoding.js} +94 -61
  294. package/dist/signal/group/SenderKeyChain.js +27 -22
  295. package/dist/signal/group/SenderKeyCodec.js +5 -6
  296. package/dist/signal/group/SenderKeyManager.js +144 -115
  297. package/dist/signal/index.js +15 -1
  298. package/dist/signal/registration/keygen.js +6 -2
  299. package/dist/signal/registration/utils.js +1 -0
  300. package/dist/signal/session/SignalProtocol.js +164 -53
  301. package/dist/signal/session/SignalRatchet.js +24 -15
  302. package/dist/signal/session/SignalSession.js +14 -9
  303. package/dist/signal/session/resolver.js +224 -0
  304. package/dist/store/contracts/privacy-token.store.js +2 -0
  305. package/dist/store/createStore.js +100 -188
  306. package/dist/store/index.js +15 -33
  307. package/dist/store/locks/appstate.lock.js +29 -0
  308. package/dist/store/locks/auth.lock.js +18 -0
  309. package/dist/store/locks/contact.lock.js +23 -0
  310. package/dist/store/locks/device-list.lock.js +23 -0
  311. package/dist/store/locks/message.lock.js +24 -0
  312. package/dist/store/locks/participants.lock.js +23 -0
  313. package/dist/store/locks/privacy-token.lock.js +21 -0
  314. package/dist/store/locks/retry.lock.js +32 -0
  315. package/dist/store/locks/sender-key.lock.js +55 -0
  316. package/dist/store/locks/signal.lock.js +66 -0
  317. package/dist/store/locks/thread.lock.js +24 -0
  318. package/dist/store/noop.store.js +4 -7
  319. package/dist/store/providers/memory/appstate.store.js +36 -14
  320. package/dist/store/providers/memory/contact.store.js +5 -0
  321. package/dist/store/providers/memory/device-list.store.js +12 -34
  322. package/dist/store/providers/memory/message.store.js +11 -5
  323. package/dist/store/providers/memory/participants.store.js +1 -8
  324. package/dist/store/providers/memory/privacy-token.store.js +47 -0
  325. package/dist/store/providers/memory/retry.store.js +77 -2
  326. package/dist/store/providers/memory/sender-key.store.js +14 -11
  327. package/dist/store/providers/memory/signal.store.js +54 -25
  328. package/dist/store/providers/memory/thread.store.js +5 -0
  329. package/dist/transport/WaComms.js +30 -26
  330. package/dist/transport/WaWebSocket.js +148 -18
  331. package/dist/transport/binary/constants.js +1 -31
  332. package/dist/transport/binary/decoder.js +8 -8
  333. package/dist/transport/binary/encoder.js +10 -9
  334. package/dist/transport/binary/index.js +0 -4
  335. package/dist/transport/index.js +7 -1
  336. package/dist/transport/keepalive/WaKeepAlive.js +1 -7
  337. package/dist/transport/node/WaNodeOrchestrator.js +25 -21
  338. package/dist/transport/node/WaNodeTransport.js +0 -3
  339. package/dist/transport/node/builders/{accountSync.js → account-sync.js} +15 -35
  340. package/dist/transport/node/builders/business.js +137 -0
  341. package/dist/transport/node/builders/global.js +375 -0
  342. package/dist/transport/node/builders/index.js +29 -17
  343. package/dist/transport/node/builders/message.js +64 -236
  344. package/dist/transport/node/builders/pairing.js +2 -29
  345. package/dist/transport/node/builders/privacy-token.js +46 -0
  346. package/dist/transport/node/builders/privacy.js +55 -0
  347. package/dist/transport/node/builders/profile.js +78 -0
  348. package/dist/transport/node/builders/retry.js +9 -21
  349. package/dist/transport/node/builders/usync.js +49 -0
  350. package/dist/transport/node/helpers.js +131 -4
  351. package/dist/transport/node/usync.js +8 -0
  352. package/dist/transport/node/xml.js +35 -14
  353. package/dist/transport/noise/WaClientPayload.js +13 -13
  354. package/dist/transport/noise/WaFrameCodec.js +47 -32
  355. package/dist/transport/noise/WaNoiseCert.js +5 -8
  356. package/dist/transport/noise/WaNoiseSession.js +77 -29
  357. package/dist/transport/noise/WaNoiseSocket.js +8 -4
  358. package/dist/transport/proxy.js +34 -0
  359. package/dist/transport/stream/parse.js +20 -52
  360. package/dist/types/appstate/WaAppStateCrypto.d.ts +0 -1
  361. package/dist/types/appstate/WaAppStateSyncClient.d.ts +5 -2
  362. package/dist/types/appstate/constants.d.ts +1 -0
  363. package/dist/types/appstate/encoding.d.ts +7 -0
  364. package/dist/types/appstate/index.d.ts +3 -3
  365. package/dist/types/appstate/utils.d.ts +0 -3
  366. package/dist/types/auth/WaAuthClient.d.ts +10 -12
  367. package/dist/types/auth/flow/WaAuthCredentialsFlow.d.ts +1 -1
  368. package/dist/types/auth/index.d.ts +0 -4
  369. package/dist/types/auth/pairing/WaQrFlow.d.ts +1 -1
  370. package/dist/types/auth/types.d.ts +7 -9
  371. package/dist/types/client/WaClient.d.ts +42 -25
  372. package/dist/types/client/WaClientFactory.d.ts +33 -26
  373. package/dist/types/client/connection/WaConnectionManager.d.ts +66 -0
  374. package/dist/types/client/connection/WaKeyShareCoordinator.d.ts +14 -0
  375. package/dist/types/client/connection/WaReceiptQueue.d.ts +13 -0
  376. package/dist/types/client/coordinators/WaAppStateMutationCoordinator.d.ts +46 -0
  377. package/dist/types/client/coordinators/WaBusinessCoordinator.d.ts +57 -0
  378. package/dist/types/client/coordinators/WaIncomingNodeCoordinator.d.ts +3 -2
  379. package/dist/types/client/coordinators/WaMessageDispatchCoordinator.d.ts +29 -38
  380. package/dist/types/client/coordinators/WaPassiveTasksCoordinator.d.ts +4 -0
  381. package/dist/types/client/coordinators/WaPrivacyCoordinator.d.ts +26 -0
  382. package/dist/types/client/coordinators/WaProfileCoordinator.d.ts +36 -0
  383. package/dist/types/client/coordinators/WaRetryCoordinator.d.ts +8 -0
  384. package/dist/types/client/coordinators/WaStreamControlCoordinator.d.ts +3 -2
  385. package/dist/types/client/coordinators/WaTrustedContactTokenCoordinator.d.ts +45 -0
  386. package/dist/types/client/dirty.d.ts +1 -0
  387. package/dist/types/client/events/devices.d.ts +20 -0
  388. package/dist/types/client/events/group.d.ts +2 -1
  389. package/dist/types/client/events/identity.d.ts +9 -0
  390. package/dist/types/client/events/privacy-token.d.ts +7 -0
  391. package/dist/types/client/history-sync.d.ts +9 -6
  392. package/dist/types/client/incoming.d.ts +3 -1
  393. package/dist/types/client/index.d.ts +1 -1
  394. package/dist/types/client/mailbox.d.ts +3 -5
  395. package/dist/types/client/messages.d.ts +1 -2
  396. package/dist/types/client/messaging/fanout.d.ts +14 -0
  397. package/dist/types/client/messaging/key-protocol.d.ts +18 -0
  398. package/dist/types/client/messaging/participants.d.ts +13 -0
  399. package/dist/types/client/persistence/WriteBehindPersistence.d.ts +34 -0
  400. package/dist/types/client/tokens/cs-token.d.ts +10 -0
  401. package/dist/types/client/tokens/tc-token.d.ts +5 -0
  402. package/dist/types/client/types.d.ts +75 -4
  403. package/dist/types/crypto/core/hkdf.d.ts +0 -6
  404. package/dist/types/crypto/core/index.d.ts +2 -3
  405. package/dist/types/crypto/core/nonce.d.ts +2 -0
  406. package/dist/types/crypto/core/primitives.d.ts +0 -1
  407. package/dist/types/crypto/core/random.d.ts +2 -7
  408. package/dist/types/crypto/index.d.ts +0 -1
  409. package/dist/types/crypto/math/constants.d.ts +4 -2
  410. package/dist/types/crypto/math/fe.d.ts +30 -0
  411. package/dist/types/crypto/math/mod.d.ts +0 -2
  412. package/dist/types/crypto/math/types.d.ts +11 -4
  413. package/dist/types/index.d.ts +5 -3
  414. package/dist/types/infra/log/ConsoleLogger.d.ts +2 -1
  415. package/dist/types/infra/log/PinoLogger.d.ts +1 -1
  416. package/dist/types/infra/log/types.d.ts +1 -0
  417. package/dist/types/infra/perf/BackgroundQueue.d.ts +58 -0
  418. package/dist/types/infra/perf/BoundedTaskQueue.d.ts +1 -1
  419. package/dist/types/infra/perf/PromiseDedup.d.ts +4 -0
  420. package/dist/types/infra/perf/SharedExclusiveGate.d.ts +17 -0
  421. package/dist/types/infra/perf/StoreLock.d.ts +10 -0
  422. package/dist/types/media/WaMediaCrypto.d.ts +3 -2
  423. package/dist/types/media/WaMediaTransferClient.d.ts +16 -15
  424. package/dist/types/media/constants.d.ts +1 -1
  425. package/dist/types/media/index.d.ts +1 -1
  426. package/dist/types/media/types.d.ts +15 -2
  427. package/dist/types/message/addon-crypto.d.ts +25 -0
  428. package/dist/types/message/content.d.ts +8 -0
  429. package/dist/types/message/icdc.d.ts +13 -0
  430. package/dist/types/message/index.d.ts +2 -0
  431. package/dist/types/message/reporting-token.d.ts +18 -0
  432. package/dist/types/message/types.d.ts +45 -6
  433. package/dist/types/message/use-case-secret.d.ts +20 -0
  434. package/dist/types/protocol/appstate.d.ts +47 -0
  435. package/dist/types/protocol/constants.d.ts +8 -3
  436. package/dist/types/protocol/defaults.d.ts +6 -0
  437. package/dist/types/protocol/index.d.ts +2 -11
  438. package/dist/types/protocol/jid.d.ts +22 -5
  439. package/dist/types/protocol/message.d.ts +60 -0
  440. package/dist/types/protocol/nodes.d.ts +4 -0
  441. package/dist/types/protocol/notification.d.ts +2 -0
  442. package/dist/types/protocol/privacy-token.d.ts +17 -0
  443. package/dist/types/protocol/privacy.d.ts +75 -0
  444. package/dist/types/protocol/stream.d.ts +30 -0
  445. package/dist/types/protocol/usync.d.ts +11 -0
  446. package/dist/types/retry/codec.d.ts +3 -0
  447. package/dist/types/retry/index.d.ts +4 -3
  448. package/dist/types/retry/parse.d.ts +5 -2
  449. package/dist/types/retry/replay.d.ts +0 -4
  450. package/dist/types/retry/tracker.d.ts +20 -0
  451. package/dist/types/retry/types.d.ts +10 -4
  452. package/dist/types/signal/api/SignalDeviceSyncApi.d.ts +15 -2
  453. package/dist/types/signal/api/SignalDigestSyncApi.d.ts +6 -0
  454. package/dist/types/signal/api/SignalIdentitySyncApi.d.ts +2 -0
  455. package/dist/types/signal/api/SignalRotateKeyApi.d.ts +4 -5
  456. package/dist/types/signal/api/SignalSessionSyncApi.d.ts +8 -6
  457. package/dist/types/signal/api/result-map.d.ts +1 -0
  458. package/dist/types/signal/constants.d.ts +0 -3
  459. package/dist/types/signal/{store/sqlite.d.ts → encoding.d.ts} +3 -3
  460. package/dist/types/signal/group/SenderKeyCodec.d.ts +4 -6
  461. package/dist/types/signal/group/SenderKeyManager.d.ts +10 -5
  462. package/dist/types/signal/index.d.ts +3 -0
  463. package/dist/types/signal/session/SignalProtocol.d.ts +19 -4
  464. package/dist/types/signal/session/resolver.d.ts +22 -0
  465. package/dist/types/store/contracts/appstate.store.d.ts +4 -1
  466. package/dist/types/store/contracts/contact.store.d.ts +1 -0
  467. package/dist/types/store/contracts/device-list.store.d.ts +0 -3
  468. package/dist/types/store/contracts/message.store.d.ts +1 -0
  469. package/dist/types/store/contracts/participants.store.d.ts +0 -1
  470. package/dist/types/store/contracts/privacy-token.store.d.ts +16 -0
  471. package/dist/types/store/contracts/retry.store.d.ts +7 -0
  472. package/dist/types/store/contracts/sender-key.store.d.ts +0 -1
  473. package/dist/types/store/contracts/signal.store.d.ts +13 -0
  474. package/dist/types/store/contracts/thread.store.d.ts +1 -0
  475. package/dist/types/store/createStore.d.ts +1 -1
  476. package/dist/types/store/index.d.ts +5 -13
  477. package/dist/types/store/locks/appstate.lock.d.ts +3 -0
  478. package/dist/types/store/locks/auth.lock.d.ts +3 -0
  479. package/dist/types/store/locks/contact.lock.d.ts +3 -0
  480. package/dist/types/store/locks/device-list.lock.d.ts +2 -0
  481. package/dist/types/store/locks/message.lock.d.ts +3 -0
  482. package/dist/types/store/locks/participants.lock.d.ts +2 -0
  483. package/dist/types/store/locks/privacy-token.lock.d.ts +2 -0
  484. package/dist/types/store/locks/retry.lock.d.ts +2 -0
  485. package/dist/types/store/locks/sender-key.lock.d.ts +3 -0
  486. package/dist/types/store/locks/signal.lock.d.ts +3 -0
  487. package/dist/types/store/locks/thread.lock.d.ts +3 -0
  488. package/dist/types/store/providers/memory/appstate.store.d.ts +3 -1
  489. package/dist/types/store/providers/memory/contact.store.d.ts +1 -0
  490. package/dist/types/store/providers/memory/device-list.store.d.ts +0 -3
  491. package/dist/types/store/providers/memory/message.store.d.ts +1 -0
  492. package/dist/types/store/providers/memory/participants.store.d.ts +0 -1
  493. package/dist/types/store/providers/memory/privacy-token.store.d.ts +13 -0
  494. package/dist/types/store/providers/memory/retry.store.d.ts +8 -0
  495. package/dist/types/store/providers/memory/sender-key.store.d.ts +0 -1
  496. package/dist/types/store/providers/memory/signal.store.d.ts +8 -1
  497. package/dist/types/store/providers/memory/thread.store.d.ts +1 -0
  498. package/dist/types/store/types.d.ts +49 -58
  499. package/dist/types/transport/WaWebSocket.d.ts +3 -1
  500. package/dist/types/transport/binary/constants.d.ts +0 -30
  501. package/dist/types/transport/binary/index.d.ts +0 -1
  502. package/dist/types/transport/index.d.ts +2 -1
  503. package/dist/types/transport/keepalive/WaKeepAlive.d.ts +0 -1
  504. package/dist/types/transport/node/WaNodeOrchestrator.d.ts +3 -4
  505. package/dist/types/transport/node/WaNodeTransport.d.ts +0 -9
  506. package/dist/types/transport/node/builders/business.d.ts +29 -0
  507. package/dist/types/transport/node/builders/global.d.ts +102 -0
  508. package/dist/types/transport/node/builders/group.d.ts +4 -6
  509. package/dist/types/transport/node/builders/index.d.ts +7 -3
  510. package/dist/types/transport/node/builders/message.d.ts +20 -30
  511. package/dist/types/transport/node/builders/pairing.d.ts +0 -2
  512. package/dist/types/transport/node/builders/privacy-token.d.ts +9 -0
  513. package/dist/types/transport/node/builders/privacy.d.ts +7 -0
  514. package/dist/types/transport/node/builders/profile.d.ts +8 -0
  515. package/dist/types/transport/node/builders/retry.d.ts +2 -5
  516. package/dist/types/transport/node/builders/usync.d.ts +21 -0
  517. package/dist/types/transport/node/helpers.d.ts +13 -0
  518. package/dist/types/transport/node/usync.d.ts +2 -0
  519. package/dist/types/transport/noise/WaFrameCodec.d.ts +3 -0
  520. package/dist/types/transport/noise/WaNoiseSession.d.ts +4 -2
  521. package/dist/types/transport/noise/WaNoiseSocket.d.ts +4 -2
  522. package/dist/types/transport/proxy.d.ts +6 -0
  523. package/dist/types/transport/stream/parse.d.ts +0 -1
  524. package/dist/types/transport/types.d.ts +18 -1
  525. package/dist/types/util/bytes.d.ts +5 -0
  526. package/dist/types/util/index.d.ts +5 -0
  527. package/dist/types/util/primitives.d.ts +2 -0
  528. package/dist/util/bytes.js +72 -46
  529. package/dist/util/coercion.js +6 -14
  530. package/dist/util/index.js +23 -0
  531. package/dist/util/primitives.js +42 -14
  532. package/package.json +52 -9
  533. package/proto/index.js +1 -1
  534. package/dist/crypto/core/constants.js +0 -4
  535. package/dist/crypto/core/encoding.js +0 -29
  536. package/dist/esm/crypto/core/constants.js +0 -1
  537. package/dist/esm/crypto/core/encoding.js +0 -25
  538. package/dist/esm/retry/outbound.js +0 -83
  539. package/dist/esm/store/providers/sqlite/BaseSqliteStore.js +0 -37
  540. package/dist/esm/store/providers/sqlite/appstate.store.js +0 -169
  541. package/dist/esm/store/providers/sqlite/auth.store.js +0 -176
  542. package/dist/esm/store/providers/sqlite/connection.js +0 -240
  543. package/dist/esm/store/providers/sqlite/contact.store.js +0 -61
  544. package/dist/esm/store/providers/sqlite/device-list.store.js +0 -155
  545. package/dist/esm/store/providers/sqlite/message.store.js +0 -119
  546. package/dist/esm/store/providers/sqlite/migrations.js +0 -347
  547. package/dist/esm/store/providers/sqlite/participants.store.js +0 -85
  548. package/dist/esm/store/providers/sqlite/retry.store.js +0 -144
  549. package/dist/esm/store/providers/sqlite/sender-key.store.js +0 -203
  550. package/dist/esm/store/providers/sqlite/signal.store.js +0 -353
  551. package/dist/esm/store/providers/sqlite/thread.store.js +0 -72
  552. package/dist/esm/util/base64.js +0 -18
  553. package/dist/esm/util/signal-address.js +0 -5
  554. package/dist/retry/outbound.js +0 -88
  555. package/dist/store/providers/sqlite/BaseSqliteStore.js +0 -41
  556. package/dist/store/providers/sqlite/appstate.store.js +0 -173
  557. package/dist/store/providers/sqlite/auth.store.js +0 -180
  558. package/dist/store/providers/sqlite/connection.js +0 -276
  559. package/dist/store/providers/sqlite/contact.store.js +0 -65
  560. package/dist/store/providers/sqlite/device-list.store.js +0 -159
  561. package/dist/store/providers/sqlite/message.store.js +0 -123
  562. package/dist/store/providers/sqlite/migrations.js +0 -350
  563. package/dist/store/providers/sqlite/participants.store.js +0 -89
  564. package/dist/store/providers/sqlite/retry.store.js +0 -148
  565. package/dist/store/providers/sqlite/sender-key.store.js +0 -207
  566. package/dist/store/providers/sqlite/signal.store.js +0 -357
  567. package/dist/store/providers/sqlite/thread.store.js +0 -76
  568. package/dist/types/appstate/store/sqlite.d.ts +0 -21
  569. package/dist/types/crypto/core/constants.d.ts +0 -1
  570. package/dist/types/crypto/core/encoding.d.ts +0 -11
  571. package/dist/types/retry/outbound.d.ts +0 -4
  572. package/dist/types/store/providers/sqlite/BaseSqliteStore.d.ts +0 -12
  573. package/dist/types/store/providers/sqlite/appstate.store.d.ts +0 -15
  574. package/dist/types/store/providers/sqlite/auth.store.d.ts +0 -10
  575. package/dist/types/store/providers/sqlite/connection.d.ts +0 -10
  576. package/dist/types/store/providers/sqlite/contact.store.d.ts +0 -10
  577. package/dist/types/store/providers/sqlite/device-list.store.d.ts +0 -18
  578. package/dist/types/store/providers/sqlite/message.store.d.ts +0 -11
  579. package/dist/types/store/providers/sqlite/migrations.d.ts +0 -3
  580. package/dist/types/store/providers/sqlite/participants.store.d.ts +0 -13
  581. package/dist/types/store/providers/sqlite/retry.store.d.ts +0 -16
  582. package/dist/types/store/providers/sqlite/sender-key.store.d.ts +0 -25
  583. package/dist/types/store/providers/sqlite/signal.store.d.ts +0 -46
  584. package/dist/types/store/providers/sqlite/thread.store.d.ts +0 -11
  585. package/dist/types/util/base64.d.ts +0 -4
  586. package/dist/types/util/signal-address.d.ts +0 -2
  587. package/dist/util/base64.js +0 -24
  588. package/dist/util/signal-address.js +0 -8
  589. /package/dist/types/transport/node/builders/{accountSync.d.ts → account-sync.d.ts} +0 -0
@@ -32,7 +32,6 @@ export declare class WaKeepAlive {
32
32
  private schedule;
33
33
  private run;
34
34
  private normalizeJitterRatio;
35
- private normalizeMinJitterMs;
36
35
  private computeNextDelayMs;
37
36
  private clearTimer;
38
37
  }
@@ -11,8 +11,8 @@ export declare class WaNodeOrchestrator {
11
11
  private readonly sendNodeFn;
12
12
  private readonly defaultTimeoutMs;
13
13
  private readonly hostDomain;
14
- private stanzaPrefix;
15
- private stanzaCounter;
14
+ private idGenerator;
15
+ private idGeneratorReady;
16
16
  private readonly pendingQueries;
17
17
  constructor(options: WaNodeOrchestratorOptions);
18
18
  hasPending(): boolean;
@@ -22,7 +22,6 @@ export declare class WaNodeOrchestrator {
22
22
  sendNode(node: BinaryNode): Promise<void>;
23
23
  query(node: BinaryNode, timeoutMs?: number): Promise<BinaryNode>;
24
24
  private withAutoId;
25
- private getStanzaPrefix;
26
- private generateStanzaPrefix;
25
+ private getIdGenerator;
27
26
  }
28
27
  export {};
@@ -2,21 +2,12 @@ import { EventEmitter } from 'node:events';
2
2
  import type { Logger } from '../../infra/log/types';
3
3
  import type { BinaryNode } from '../types';
4
4
  import type { WaComms } from '../WaComms';
5
- interface NodeTransportEventMap {
6
- readonly frame_in: (frame: Uint8Array) => void;
7
- readonly frame_out: (frame: Uint8Array) => void;
8
- readonly node_in: (node: BinaryNode, frame: Uint8Array) => void;
9
- readonly node_out: (node: BinaryNode, frame: Uint8Array) => void;
10
- readonly decode_error: (error: Error, frame: Uint8Array) => void;
11
- }
12
5
  export declare class WaNodeTransport extends EventEmitter {
13
6
  private readonly logger;
14
7
  private comms;
15
8
  constructor(logger?: Logger);
16
- on<K extends keyof NodeTransportEventMap>(event: K, listener: NodeTransportEventMap[K]): this;
17
9
  bindComms(comms: WaComms | null): void;
18
10
  sendNode(node: BinaryNode): Promise<void>;
19
11
  dispatchIncomingFrame(frame: Uint8Array, onNode: (node: BinaryNode) => Promise<void> | void): Promise<void>;
20
12
  private shouldIncludeTraceXml;
21
13
  }
22
- export {};
@@ -0,0 +1,29 @@
1
+ import type { BinaryNode } from '../../types';
2
+ export declare const WA_BUSINESS_PROFILE_VERSION = 116;
3
+ export interface WaEditBusinessProfileInput {
4
+ readonly address?: string;
5
+ readonly description?: string;
6
+ readonly email?: string;
7
+ readonly websites?: readonly {
8
+ readonly url: string;
9
+ }[];
10
+ readonly categories?: readonly {
11
+ readonly id: string;
12
+ }[];
13
+ readonly businessHours?: {
14
+ readonly timezone?: string;
15
+ readonly config: readonly {
16
+ readonly dayOfWeek: string;
17
+ readonly mode: string;
18
+ readonly openTime?: number;
19
+ readonly closeTime?: number;
20
+ }[];
21
+ };
22
+ readonly latitude?: number;
23
+ readonly longitude?: number;
24
+ }
25
+ export declare function buildGetBusinessProfileIq(jids: readonly string[], version?: number): BinaryNode;
26
+ export declare function buildEditBusinessProfileIq(input: WaEditBusinessProfileInput): BinaryNode;
27
+ export declare function buildGetVerifiedNameIq(jid: string): BinaryNode;
28
+ export declare function buildUpdateCoverPhotoIq(id: string, timestamp: string, token: string): BinaryNode;
29
+ export declare function buildDeleteCoverPhotoIq(id: string): BinaryNode;
@@ -0,0 +1,102 @@
1
+ import type { BinaryNode } from '../../types';
2
+ export type BuildAckNodeInput = {
3
+ readonly kind: 'notification';
4
+ readonly node: BinaryNode;
5
+ readonly typeOverride?: string;
6
+ readonly includeParticipant?: boolean;
7
+ readonly includeType?: boolean;
8
+ readonly content?: BinaryNode[];
9
+ } | {
10
+ readonly kind: 'message';
11
+ readonly node: BinaryNode;
12
+ readonly id: string;
13
+ readonly to: string;
14
+ readonly from?: string | null;
15
+ readonly typeOverride?: string;
16
+ readonly participant?: string;
17
+ readonly recipient?: string;
18
+ } | {
19
+ readonly kind: 'receipt';
20
+ readonly node: BinaryNode;
21
+ readonly retryType?: boolean;
22
+ readonly typeOverride?: string;
23
+ readonly includeParticipant?: boolean;
24
+ readonly includeRecipient?: boolean;
25
+ } | {
26
+ readonly kind: 'aggregate_message';
27
+ readonly to: string;
28
+ readonly ids: readonly string[];
29
+ readonly recipient?: string;
30
+ readonly participant?: string;
31
+ readonly type?: string;
32
+ } | {
33
+ readonly kind: 'nack';
34
+ readonly stanzaTag: string;
35
+ readonly id: string;
36
+ readonly to: string;
37
+ readonly type?: string;
38
+ readonly participant?: string;
39
+ readonly error: number | string;
40
+ readonly failureReason?: number;
41
+ } | {
42
+ readonly kind: 'custom';
43
+ readonly ackClass: string;
44
+ readonly to: string;
45
+ readonly id?: string;
46
+ readonly type?: string;
47
+ readonly participant?: string;
48
+ readonly recipient?: string;
49
+ readonly from?: string;
50
+ readonly error?: number | string;
51
+ readonly content?: BinaryNode[];
52
+ };
53
+ export declare function buildAckNode(input: BuildAckNodeInput): BinaryNode;
54
+ export type BuildReceiptNodeInput = {
55
+ readonly kind: 'delivery';
56
+ readonly node: BinaryNode;
57
+ readonly id: string;
58
+ readonly to: string;
59
+ } | {
60
+ readonly kind: 'retry_custom';
61
+ readonly id: string;
62
+ readonly to: string;
63
+ readonly participant?: string;
64
+ readonly recipient?: string;
65
+ readonly categoryPeer?: boolean;
66
+ readonly content: BinaryNode[];
67
+ } | {
68
+ readonly kind: 'retry';
69
+ readonly node: BinaryNode;
70
+ readonly id: string;
71
+ readonly to: string;
72
+ readonly retryCount?: number;
73
+ } | {
74
+ readonly kind: 'outbound';
75
+ readonly id: string;
76
+ readonly to: string;
77
+ readonly type?: string;
78
+ readonly participant?: string;
79
+ readonly recipient?: string;
80
+ readonly category?: string;
81
+ readonly from?: string;
82
+ readonly t?: string;
83
+ readonly peerParticipantPn?: string;
84
+ readonly listIds?: readonly string[];
85
+ readonly content?: BinaryNode[];
86
+ } | {
87
+ readonly kind: 'server_error';
88
+ readonly id: string;
89
+ readonly to: string;
90
+ readonly categoryPeer?: boolean;
91
+ readonly encryptCiphertext: Uint8Array;
92
+ readonly encryptIv: Uint8Array;
93
+ readonly rmrJid?: string;
94
+ readonly rmrFromMe?: boolean | string;
95
+ readonly rmrParticipant?: string;
96
+ } | {
97
+ readonly kind: 'custom';
98
+ readonly attrs: Readonly<Record<string, string>>;
99
+ readonly content?: BinaryNode[];
100
+ };
101
+ export declare function buildReceiptNode(input: BuildReceiptNodeInput): BinaryNode;
102
+ export declare function buildIqResultNode(iqNode: BinaryNode): BinaryNode;
@@ -1,16 +1,14 @@
1
1
  import type { BinaryNode } from '../../types';
2
- interface BuildCreateGroupIqInput {
2
+ export declare function buildCreateGroupIq(input: {
3
3
  readonly subject: string;
4
4
  readonly participants: readonly string[];
5
5
  readonly description?: string;
6
- }
7
- export declare function buildCreateGroupIq(input: BuildCreateGroupIqInput): BinaryNode;
6
+ }): BinaryNode;
8
7
  type GroupParticipantAction = 'add' | 'remove' | 'promote' | 'demote';
9
- interface BuildGroupParticipantChangeIqInput {
8
+ export declare function buildGroupParticipantChangeIq(input: {
10
9
  readonly groupJid: string;
11
10
  readonly action: GroupParticipantAction;
12
11
  readonly participants: readonly string[];
13
- }
14
- export declare function buildGroupParticipantChangeIq(input: BuildGroupParticipantChangeIqInput): BinaryNode;
12
+ }): BinaryNode;
15
13
  export declare function buildLeaveGroupIq(groupJids: readonly string[]): BinaryNode;
16
14
  export {};
@@ -1,7 +1,11 @@
1
- export { buildAccountBlocklistSyncIq, buildAccountDevicesSyncIq, buildAccountPictureSyncIq, buildAccountPrivacySyncIq, buildClearDirtyBitsIq, buildGroupsDirtySyncIq, buildNewsletterMetadataSyncIq } from '../../node/builders/accountSync';
2
- export { buildCompanionFinishRequestNode, buildCompanionHelloRequestNode, buildGetCountryCodeRequestNode, buildIqResultNode, buildNotificationAckNode } from '../../node/builders/pairing';
1
+ export { buildAccountBlocklistSyncIq, buildAccountDevicesSyncIq, buildAccountPictureSyncIq, buildAccountPrivacySyncIq, buildClearDirtyBitsIq, buildGroupsDirtySyncIq, buildNewsletterMetadataSyncIq } from '../../node/builders/account-sync';
2
+ export { buildCompanionFinishRequestNode, buildCompanionHelloRequestNode, buildGetCountryCodeRequestNode } from '../../node/builders/pairing';
3
+ export { buildAckNode, buildReceiptNode, buildIqResultNode } from '../../node/builders/global';
3
4
  export { buildMediaConnIq } from '../../node/builders/media';
4
- export { buildDirectMessageFanoutNode, buildGroupDirectMessageNode, buildGroupRetryMessageNode, buildGroupSenderKeyMessageNode, buildInboundDeliveryReceiptNode, buildInboundMessageAckNode, buildInboundReceiptAckNode, buildInboundRetryReceiptNode, buildInboundRetryReceiptAckNode } from '../../node/builders/message';
5
+ export { buildDirectMessageFanoutNode, buildGroupRetryMessageNode, buildGroupSenderKeyMessageNode, buildMetaNode } from '../../node/builders/message';
5
6
  export { buildRetryReceiptNode } from '../../node/builders/retry';
6
7
  export { buildMissingPreKeysFetchIq, buildPreKeyUploadIq, buildSignedPreKeyRotateIq } from '../../node/builders/prekeys';
7
8
  export { buildCreateGroupIq, buildGroupParticipantChangeIq, buildLeaveGroupIq } from '../../node/builders/group';
9
+ export { buildUsyncIq, buildUsyncUserNode, type BuildUsyncIqInput, type BuildUsyncUserNodeInput, type WaUsyncContext, type WaUsyncMode } from '../../node/builders/usync';
10
+ export { buildDeleteProfilePictureIq, buildGetProfilePictureIq, buildGetStatusUsyncQueryNodes, buildSetProfilePictureIq, type WaProfilePictureType } from '../../node/builders/profile';
11
+ export { buildDeleteCoverPhotoIq, buildEditBusinessProfileIq, buildGetBusinessProfileIq, buildGetVerifiedNameIq, buildUpdateCoverPhotoIq, WA_BUSINESS_PROFILE_VERSION, type WaEditBusinessProfileInput } from '../../node/builders/business';
@@ -4,33 +4,26 @@ interface EncryptedParticipant {
4
4
  readonly encType: 'msg' | 'pkmsg';
5
5
  readonly ciphertext: Uint8Array;
6
6
  }
7
- interface BuildDirectMessageFanoutNodeInput {
7
+ type DirectMessageFanoutInput = {
8
8
  readonly to: string;
9
9
  readonly type: string;
10
10
  readonly id?: string;
11
+ readonly edit?: string;
11
12
  readonly participants: readonly EncryptedParticipant[];
12
13
  readonly deviceIdentity?: Uint8Array;
13
- }
14
- interface BuildGroupSenderKeyMessageNodeInput {
15
- readonly to: string;
16
- readonly type: string;
17
- readonly groupCiphertext: Uint8Array;
18
- readonly id?: string;
19
- readonly phash?: string;
20
- readonly addressingMode?: 'pn' | 'lid';
21
- readonly participants: readonly EncryptedParticipant[];
22
- readonly deviceIdentity?: Uint8Array;
23
- }
24
- interface BuildGroupDirectMessageNodeInput {
25
- readonly to: string;
26
- readonly type: string;
27
- readonly id?: string;
14
+ readonly reportingNode?: BinaryNode;
15
+ readonly privacyTokenNode?: BinaryNode;
16
+ readonly metaNode?: BinaryNode;
17
+ readonly mediatype?: string;
18
+ };
19
+ type GroupMessageFanoutInput = DirectMessageFanoutInput & {
28
20
  readonly phash?: string;
29
21
  readonly addressingMode?: 'pn' | 'lid';
30
- readonly participants: readonly EncryptedParticipant[];
31
- readonly deviceIdentity?: Uint8Array;
32
- }
33
- interface BuildGroupRetryMessageNodeInput {
22
+ };
23
+ type GroupSenderKeyMessageInput = GroupMessageFanoutInput & {
24
+ readonly groupCiphertext: Uint8Array;
25
+ };
26
+ type GroupRetryMessageInput = {
34
27
  readonly to: string;
35
28
  readonly type: string;
36
29
  readonly id: string;
@@ -38,15 +31,12 @@ interface BuildGroupRetryMessageNodeInput {
38
31
  readonly addressingMode: 'pn' | 'lid';
39
32
  readonly encType: 'msg' | 'pkmsg';
40
33
  readonly ciphertext: Uint8Array;
34
+ readonly retryCount: number;
41
35
  readonly deviceIdentity?: Uint8Array;
42
- }
43
- export declare function buildDirectMessageFanoutNode(input: BuildDirectMessageFanoutNodeInput): BinaryNode;
44
- export declare function buildGroupSenderKeyMessageNode(input: BuildGroupSenderKeyMessageNodeInput): BinaryNode;
45
- export declare function buildGroupDirectMessageNode(input: BuildGroupDirectMessageNodeInput): BinaryNode;
46
- export declare function buildInboundMessageAckNode(messageNode: BinaryNode, id: string, to: string, meJid: string | null | undefined): BinaryNode;
47
- export declare function buildInboundDeliveryReceiptNode(messageNode: BinaryNode, id: string, to: string): BinaryNode;
48
- export declare function buildInboundRetryReceiptNode(messageNode: BinaryNode, id: string, to: string, meJid?: string | null, retryCount?: number): BinaryNode;
49
- export declare function buildInboundRetryReceiptAckNode(receiptNode: BinaryNode): BinaryNode;
50
- export declare function buildInboundReceiptAckNode(receiptNode: BinaryNode): BinaryNode;
51
- export declare function buildGroupRetryMessageNode(input: BuildGroupRetryMessageNodeInput): BinaryNode;
36
+ readonly mediatype?: string;
37
+ };
38
+ export declare function buildDirectMessageFanoutNode(input: GroupMessageFanoutInput): BinaryNode;
39
+ export declare function buildGroupSenderKeyMessageNode(input: GroupSenderKeyMessageInput): BinaryNode;
40
+ export declare function buildGroupRetryMessageNode(input: GroupRetryMessageInput): BinaryNode;
41
+ export declare function buildMetaNode(attrs: Record<string, string>): BinaryNode;
52
42
  export {};
@@ -14,5 +14,3 @@ export declare function buildCompanionFinishRequestNode(args: {
14
14
  readonly companionIdentityPublic: Uint8Array;
15
15
  readonly ref: Uint8Array;
16
16
  }): BinaryNode;
17
- export declare function buildNotificationAckNode(node: BinaryNode, typeOverride?: string): BinaryNode;
18
- export declare function buildIqResultNode(iqNode: BinaryNode): BinaryNode;
@@ -0,0 +1,9 @@
1
+ import type { BinaryNode } from '../../types';
2
+ export interface BuildPrivacyTokenIqInput {
3
+ readonly jid: string;
4
+ readonly timestampS: number;
5
+ readonly type?: string;
6
+ }
7
+ export declare function buildPrivacyTokenIqNode(input: BuildPrivacyTokenIqInput): BinaryNode;
8
+ export declare function buildTcTokenMessageNode(token: Uint8Array): BinaryNode;
9
+ export declare function buildCsTokenMessageNode(hash: Uint8Array): BinaryNode;
@@ -0,0 +1,7 @@
1
+ import { type WaPrivacyCategory, type WaPrivacyValue } from '../../../protocol/privacy';
2
+ import type { BinaryNode } from '../../types';
3
+ export declare function buildGetPrivacySettingsIq(): BinaryNode;
4
+ export declare function buildSetPrivacyCategoryIq(category: WaPrivacyCategory, value: WaPrivacyValue): BinaryNode;
5
+ export declare function buildGetPrivacyDisallowedListIq(category: WaPrivacyCategory): BinaryNode;
6
+ export declare function buildGetBlocklistIq(): BinaryNode;
7
+ export declare function buildBlocklistChangeIq(jid: string, action: 'block' | 'unblock'): BinaryNode;
@@ -0,0 +1,8 @@
1
+ import type { BinaryNode } from '../../types';
2
+ export type WaProfilePictureType = 'preview' | 'image';
3
+ export declare function buildGetProfilePictureIq(targetJid: string, type?: WaProfilePictureType, existingId?: string): BinaryNode;
4
+ export declare function buildSetProfilePictureIq(imageBytes: Uint8Array, targetJid?: string): BinaryNode;
5
+ export declare function buildDeleteProfilePictureIq(targetJid?: string): BinaryNode;
6
+ export declare function buildSetStatusIq(text: string): BinaryNode;
7
+ export declare function buildGetDisappearingModeUsyncQueryNode(): BinaryNode;
8
+ export declare function buildGetStatusUsyncQueryNodes(): readonly BinaryNode[];
@@ -1,11 +1,10 @@
1
1
  import type { WaRetryKeyBundle } from '../../../retry/types';
2
2
  import type { BinaryNode } from '../../types';
3
- interface BuildRetryReceiptNodeInput {
3
+ export declare function buildRetryReceiptNode(input: {
4
4
  readonly stanzaId: string;
5
5
  readonly to: string;
6
6
  readonly participant?: string;
7
7
  readonly recipient?: string;
8
- readonly from?: string;
9
8
  readonly originalMsgId: string;
10
9
  readonly retryCount: number;
11
10
  readonly t: string;
@@ -13,6 +12,4 @@ interface BuildRetryReceiptNodeInput {
13
12
  readonly error?: number;
14
13
  readonly categoryPeer?: boolean;
15
14
  readonly keys?: WaRetryKeyBundle;
16
- }
17
- export declare function buildRetryReceiptNode(input: BuildRetryReceiptNodeInput): BinaryNode;
18
- export {};
15
+ }): BinaryNode;
@@ -0,0 +1,21 @@
1
+ import { WA_USYNC_CONTEXTS, WA_USYNC_MODES } from '../../../protocol/constants';
2
+ import type { BinaryNode } from '../../types';
3
+ export type WaUsyncMode = (typeof WA_USYNC_MODES)[keyof typeof WA_USYNC_MODES];
4
+ export type WaUsyncContext = (typeof WA_USYNC_CONTEXTS)[keyof typeof WA_USYNC_CONTEXTS];
5
+ export interface BuildUsyncUserNodeInput {
6
+ readonly jid: string;
7
+ readonly attrs?: Readonly<Record<string, string>>;
8
+ readonly content?: BinaryNode['content'];
9
+ }
10
+ export interface BuildUsyncIqInput {
11
+ readonly sid: string;
12
+ readonly queryProtocolNodes: readonly BinaryNode[];
13
+ readonly users: readonly BuildUsyncUserNodeInput[];
14
+ readonly mode?: WaUsyncMode;
15
+ readonly context?: WaUsyncContext;
16
+ readonly index?: string;
17
+ readonly last?: string;
18
+ readonly hostDomain?: string;
19
+ }
20
+ export declare function buildUsyncUserNode(input: BuildUsyncUserNodeInput): BinaryNode;
21
+ export declare function buildUsyncIq(input: BuildUsyncIqInput): BinaryNode;
@@ -1,8 +1,21 @@
1
1
  import type { BinaryNode } from '../types';
2
+ export interface NodeIdGenerator {
3
+ readonly prefix: string;
4
+ next(): string;
5
+ }
2
6
  export declare function getNodeChildren(node: BinaryNode): readonly BinaryNode[];
3
7
  export declare function findNodeChild(node: BinaryNode, tag: string): BinaryNode | undefined;
4
8
  export declare function getFirstNodeChild(node: BinaryNode): BinaryNode | undefined;
5
9
  export declare function getNodeChildrenByTag(node: BinaryNode, tag: string): readonly BinaryNode[];
10
+ export declare function getNodeChildrenByTagFromChildren(node: BinaryNode, tag: string): readonly BinaryNode[];
11
+ export declare function getNodeChildrenTags(node: BinaryNode): readonly string[];
12
+ export declare function getNodeChildrenNonEmptyAttrValuesByTag(node: BinaryNode, tag: string, attr: string): readonly string[];
13
+ export declare function getNodeChildrenNonEmptyUtf8ByTag(node: BinaryNode, tag: string, field: string): readonly string[];
14
+ export declare function findNodeChildrenByTags<const TTags extends readonly string[]>(node: BinaryNode, tags: TTags): {
15
+ readonly [Index in keyof TTags]: BinaryNode | undefined;
16
+ };
6
17
  export declare function hasNodeChild(node: BinaryNode, tag: string): boolean;
7
18
  export declare function decodeNodeContentUtf8OrBytes(value: BinaryNode['content'], field: string): Uint8Array;
8
19
  export declare function decodeNodeContentBase64OrBytes(value: BinaryNode['content'], field: string): Uint8Array;
20
+ export declare function formatNodeIdPrefixFromSeed(seed: Uint8Array): string;
21
+ export declare function createNodeIdGenerator(): Promise<NodeIdGenerator>;
@@ -0,0 +1,2 @@
1
+ export type WaUsyncSidGenerator = () => Promise<string>;
2
+ export declare function createUsyncSidGenerator(): WaUsyncSidGenerator;
@@ -3,7 +3,10 @@ export declare class WaFrameCodec {
3
3
  private readonly maxFrameLength;
4
4
  private introSent;
5
5
  private buffered;
6
+ private bufferedLength;
6
7
  constructor(introFrame?: Uint8Array, maxFrameLength?: number);
8
+ private assertFrameLength;
9
+ private appendBuffered;
7
10
  encodeFrame(frame: Uint8Array): Uint8Array;
8
11
  pushWireChunk(chunk: Uint8Array): readonly Uint8Array[];
9
12
  }
@@ -3,10 +3,11 @@ import type { WaNoiseConfig } from '../types';
3
3
  export declare class WaNoiseSession {
4
4
  private readonly sendWire;
5
5
  private readonly logger;
6
- private readonly writeQueue;
7
- private readonly readQueue;
6
+ private writeChain;
7
+ private readChain;
8
8
  private frameCodec;
9
9
  private handshakeInbox;
10
+ private handshakeInboxHead;
10
11
  private handshakeWaiter;
11
12
  private handshakeRejecter;
12
13
  private pendingDecryptedFrames;
@@ -19,6 +20,7 @@ export declare class WaNoiseSession {
19
20
  encryptFrame(frame: Uint8Array): Promise<Uint8Array>;
20
21
  pushWireChunk(chunk: Uint8Array): Promise<readonly Uint8Array[]>;
21
22
  onSocketClosed(error?: Error): void;
23
+ private decryptFramesBatch;
22
24
  reset(): void;
23
25
  getServerStaticKey(): Uint8Array | null;
24
26
  private fullHandshake;
@@ -5,6 +5,8 @@ export declare class WaNoiseSocket {
5
5
  private writeCounter;
6
6
  private readCounter;
7
7
  constructor(encryptKey: CryptoKey, decryptKey: CryptoKey);
8
- encrypt(frame: Uint8Array, additionalData?: Uint8Array): Promise<Uint8Array>;
9
- decrypt(frame: Uint8Array, additionalData?: Uint8Array): Promise<Uint8Array>;
8
+ reserveWriteNonce(): Uint8Array;
9
+ encrypt(nonce: Uint8Array, frame: Uint8Array, additionalData?: Uint8Array): Promise<Uint8Array>;
10
+ reserveReadNonce(): Uint8Array;
11
+ decrypt(nonce: Uint8Array, frame: Uint8Array, additionalData?: Uint8Array): Promise<Uint8Array>;
10
12
  }
@@ -0,0 +1,6 @@
1
+ import type { WaProxyAgent, WaProxyDispatcher, WaProxyTransport } from './types';
2
+ export declare function isProxyDispatcher(value: unknown): value is WaProxyDispatcher;
3
+ export declare function isProxyAgent(value: unknown): value is WaProxyAgent;
4
+ export declare function isProxyTransport(value: unknown): value is WaProxyTransport;
5
+ export declare function toProxyDispatcher(proxy: WaProxyTransport | undefined): WaProxyDispatcher | undefined;
6
+ export declare function toProxyAgent(proxy: WaProxyTransport | undefined): WaProxyAgent | undefined;
@@ -18,6 +18,5 @@ export type WaStreamControlNodeResult = {
18
18
  readonly kind: 'stream_error_other';
19
19
  };
20
20
  export declare function parseStreamControlNode(node: BinaryNode): WaStreamControlNodeResult | null;
21
- export declare function parseOptionalInt(value: string | undefined): number | undefined;
22
21
  export declare function parseCompanionEncStatic(value: string | undefined, onError?: (error: Error) => void): Uint8Array | undefined;
23
22
  export declare function parseSuccessPersistAttributes(node: BinaryNode, onCompanionParseError?: (error: Error) => void): WaSuccessPersistAttributes;
@@ -1,5 +1,12 @@
1
+ import type { Agent as HttpAgent } from 'node:http';
2
+ import type { Agent as HttpsAgent } from 'node:https';
1
3
  import type { SignalKeyPair } from '../crypto/curves/types';
2
4
  import type { WaLoginPayloadConfig, WaRegistrationPayloadConfig } from './noise/types';
5
+ export interface WaProxyDispatcher {
6
+ dispatch(...args: readonly unknown[]): unknown;
7
+ }
8
+ export type WaProxyAgent = HttpAgent | HttpsAgent;
9
+ export type WaProxyTransport = WaProxyDispatcher | WaProxyAgent;
3
10
  export interface BinaryNode {
4
11
  readonly tag: string;
5
12
  readonly attrs: Readonly<Record<string, string>>;
@@ -18,6 +25,8 @@ export interface WaSocketConfig {
18
25
  readonly urls?: readonly string[];
19
26
  readonly protocols?: readonly string[];
20
27
  readonly headers?: Readonly<Record<string, string>>;
28
+ readonly dispatcher?: WaProxyDispatcher;
29
+ readonly agent?: WaProxyAgent;
21
30
  readonly timeoutIntervalMs?: number;
22
31
  }
23
32
  export interface WaSocketHandlers {
@@ -66,6 +75,14 @@ export interface RawWebSocket {
66
75
  close(code?: number, reason?: string): void;
67
76
  send(data: string | ArrayBuffer | Uint8Array): void;
68
77
  }
69
- export type RawWebSocketConstructor = new (url: string, protocols?: string | readonly string[], options?: {
78
+ export interface WaRawWebSocketInit {
79
+ readonly protocols?: string | readonly string[];
80
+ readonly headers?: Readonly<Record<string, string>>;
81
+ readonly dispatcher?: WaProxyDispatcher;
82
+ readonly agent?: WaProxyAgent;
83
+ }
84
+ export type RawWebSocketConstructor = new (url: string, protocols?: string | readonly string[] | WaRawWebSocketInit, options?: {
70
85
  headers?: Readonly<Record<string, string>>;
86
+ dispatcher?: WaProxyDispatcher;
87
+ agent?: WaProxyAgent;
71
88
  }) => RawWebSocket;
@@ -1,6 +1,7 @@
1
1
  import type { Readable } from 'node:stream';
2
2
  export declare const TEXT_ENCODER: import("../util").TextEncoder;
3
3
  export declare const TEXT_DECODER: import("../util").TextDecoder;
4
+ export declare const ZERO_BYTES: Readonly<Uint8Array>;
4
5
  export declare const EMPTY_BYTES: Readonly<Uint8Array<ArrayBuffer>>;
5
6
  /**
6
7
  * Encodes a Uint8Array to a hex string
@@ -12,6 +13,10 @@ export declare function bytesToHex(value: Uint8Array): string;
12
13
  export declare function hexToBytes(value: string): Uint8Array;
13
14
  export declare function bytesToBase64(value: Uint8Array): string;
14
15
  export declare function base64ToBytes(value: string): Uint8Array;
16
+ export declare function base64ToBytesChecked(value: string, field: string, requireNonEmpty?: boolean): Uint8Array;
17
+ export declare function decodeBase64Url(value: string | undefined, field: string): Uint8Array;
18
+ export declare function assertByteLength(value: Uint8Array, expectedLength: number, errorMessage: string): void;
19
+ export declare function decodeProtoBytes(value: Uint8Array | string | null | undefined, field: string): Uint8Array;
15
20
  /**
16
21
  * Encodes a Uint8Array to a base64url string (URL-safe, no padding)
17
22
  */
@@ -0,0 +1,5 @@
1
+ export { bytesToHex, hexToBytes, toBytesView, uint8Equal } from './bytes';
2
+ export { asBytes, asNumber, asOptionalBytes, asOptionalNumber, asOptionalString, asString, resolvePositive, toBoolOrUndef } from './coercion';
3
+ export { normalizeQueryLimit } from './collections';
4
+ export { toSafeNumber } from './primitives';
5
+ export { isBunRuntime } from './runtime';
@@ -5,3 +5,5 @@ export declare function toSafeNumber(value: number | {
5
5
  export declare function longToNumber(value: number | {
6
6
  toNumber(): number;
7
7
  } | null | undefined): number;
8
+ export declare function normalizeNonNegativeInteger(value: number | undefined, fallback: number): number;
9
+ export declare function parseOptionalInt(value: string | undefined): number | undefined;