zapo-js 0.1.2 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (630) hide show
  1. package/README.md +16 -4
  2. package/dist/appstate/WaAppStateCrypto.js +50 -42
  3. package/dist/appstate/WaAppStateSyncClient.js +215 -133
  4. package/dist/appstate/{store/sqlite.js → encoding.js} +13 -8
  5. package/dist/appstate/index.js +9 -7
  6. package/dist/appstate/utils.js +0 -5
  7. package/dist/auth/WaAuthClient.js +55 -57
  8. package/dist/auth/credentials-flow.js +195 -0
  9. package/dist/auth/index.js +1 -6
  10. package/dist/auth/pairing/WaPairingFlow.js +39 -32
  11. package/dist/auth/pairing/{WaPairingCodeCrypto.js → pairing-code-crypto.js} +35 -17
  12. package/dist/client/WaClient.js +338 -174
  13. package/dist/client/WaClientFactory.js +399 -66
  14. package/dist/client/connection/WaConnectionManager.js +23 -11
  15. package/dist/client/coordinators/WaAbPropsCoordinator.js +141 -0
  16. package/dist/client/coordinators/WaBusinessCoordinator.js +232 -0
  17. package/dist/client/coordinators/WaEmailCoordinator.js +63 -0
  18. package/dist/client/coordinators/WaGroupCoordinator.js +11 -7
  19. package/dist/client/coordinators/WaIncomingNodeCoordinator.js +34 -8
  20. package/dist/client/coordinators/WaMessageDispatchCoordinator.js +341 -118
  21. package/dist/client/coordinators/WaOfflineResumeCoordinator.js +114 -0
  22. package/dist/client/coordinators/WaPassiveTasksCoordinator.js +97 -36
  23. package/dist/client/coordinators/WaPrivacyCoordinator.js +134 -0
  24. package/dist/client/coordinators/WaProfileCoordinator.js +214 -0
  25. package/dist/client/coordinators/WaRetryCoordinator.js +184 -30
  26. package/dist/client/coordinators/WaStreamControlCoordinator.js +18 -11
  27. package/dist/client/coordinators/WaTrustedContactTokenCoordinator.js +184 -0
  28. package/dist/client/dirty.js +41 -21
  29. package/dist/client/events/abprops.js +43 -0
  30. package/dist/client/events/devices.js +72 -0
  31. package/dist/client/events/group.js +3 -11
  32. package/dist/client/events/identity.js +22 -0
  33. package/dist/client/events/privacy-token.js +38 -0
  34. package/dist/client/events/registration.js +42 -0
  35. package/dist/client/history-sync.js +50 -9
  36. package/dist/client/incoming.js +74 -7
  37. package/dist/client/mailbox.js +40 -23
  38. package/dist/client/media.js +243 -0
  39. package/dist/client/messages.js +245 -92
  40. package/dist/client/messaging/fanout.js +21 -11
  41. package/dist/client/messaging/participants.js +6 -4
  42. package/dist/client/persistence/WriteBehindPersistence.js +129 -0
  43. package/dist/client/tokens/cs-token.js +50 -0
  44. package/dist/client/tokens/tc-token.js +25 -0
  45. package/dist/crypto/core/index.js +5 -2
  46. package/dist/crypto/core/keys.js +4 -4
  47. package/dist/crypto/core/nonce.js +2 -0
  48. package/dist/crypto/core/primitives.js +0 -8
  49. package/dist/crypto/core/random.js +24 -8
  50. package/dist/crypto/core/xeddsa.js +57 -0
  51. package/dist/crypto/curves/X25519.js +43 -6
  52. package/dist/crypto/curves/constants.js +2 -1
  53. package/dist/crypto/index.js +3 -0
  54. package/dist/crypto/math/constants.js +13 -36
  55. package/dist/crypto/math/edwards.js +171 -44
  56. package/dist/crypto/math/fe.js +706 -0
  57. package/dist/crypto/math/mod.js +10 -3
  58. package/dist/esm/appstate/WaAppStateCrypto.js +40 -32
  59. package/dist/esm/appstate/WaAppStateSyncClient.js +206 -124
  60. package/dist/esm/appstate/{store/sqlite.js → encoding.js} +13 -8
  61. package/dist/esm/appstate/index.js +2 -2
  62. package/dist/esm/appstate/{WaAppStateSyncResponseParser.js → response-parser.js} +1 -1
  63. package/dist/esm/appstate/utils.js +2 -5
  64. package/dist/esm/auth/WaAuthClient.js +52 -54
  65. package/dist/esm/auth/credentials-flow.js +190 -0
  66. package/dist/esm/auth/index.js +0 -2
  67. package/dist/esm/auth/pairing/WaPairingFlow.js +39 -32
  68. package/dist/esm/auth/pairing/{WaPairingCodeCrypto.js → pairing-code-crypto.js} +26 -10
  69. package/dist/esm/client/WaClient.js +339 -175
  70. package/dist/esm/client/WaClientFactory.js +401 -68
  71. package/dist/esm/client/connection/WaConnectionManager.js +23 -11
  72. package/dist/esm/client/coordinators/WaAbPropsCoordinator.js +137 -0
  73. package/dist/esm/client/coordinators/WaBusinessCoordinator.js +229 -0
  74. package/dist/esm/client/coordinators/WaEmailCoordinator.js +60 -0
  75. package/dist/esm/client/coordinators/WaGroupCoordinator.js +11 -7
  76. package/dist/esm/client/coordinators/WaIncomingNodeCoordinator.js +36 -10
  77. package/dist/esm/client/coordinators/WaMessageDispatchCoordinator.js +337 -114
  78. package/dist/esm/client/coordinators/WaOfflineResumeCoordinator.js +110 -0
  79. package/dist/esm/client/coordinators/WaPassiveTasksCoordinator.js +97 -36
  80. package/dist/esm/client/coordinators/WaPrivacyCoordinator.js +131 -0
  81. package/dist/esm/client/coordinators/WaProfileCoordinator.js +211 -0
  82. package/dist/esm/client/coordinators/WaRetryCoordinator.js +186 -32
  83. package/dist/esm/client/coordinators/WaStreamControlCoordinator.js +19 -12
  84. package/dist/esm/client/coordinators/WaTrustedContactTokenCoordinator.js +180 -0
  85. package/dist/esm/client/dirty.js +41 -21
  86. package/dist/esm/client/events/abprops.js +40 -0
  87. package/dist/esm/client/events/devices.js +68 -0
  88. package/dist/esm/client/events/group.js +3 -11
  89. package/dist/esm/client/events/identity.js +19 -0
  90. package/dist/esm/client/events/privacy-token.js +35 -0
  91. package/dist/esm/client/events/registration.js +39 -0
  92. package/dist/esm/client/history-sync.js +50 -9
  93. package/dist/esm/client/incoming.js +74 -8
  94. package/dist/esm/client/mailbox.js +40 -23
  95. package/dist/esm/client/media.js +234 -0
  96. package/dist/esm/client/messages.js +244 -91
  97. package/dist/esm/client/messaging/fanout.js +22 -12
  98. package/dist/esm/client/messaging/participants.js +6 -4
  99. package/dist/esm/client/persistence/WriteBehindPersistence.js +125 -0
  100. package/dist/esm/client/tokens/cs-token.js +46 -0
  101. package/dist/esm/client/tokens/tc-token.js +18 -0
  102. package/dist/esm/crypto/core/index.js +3 -2
  103. package/dist/esm/crypto/core/keys.js +1 -1
  104. package/dist/esm/crypto/core/nonce.js +2 -0
  105. package/dist/esm/crypto/core/primitives.js +0 -7
  106. package/dist/esm/crypto/core/random.js +23 -7
  107. package/dist/esm/crypto/core/xeddsa.js +53 -0
  108. package/dist/esm/crypto/curves/X25519.js +45 -8
  109. package/dist/esm/crypto/curves/constants.js +1 -0
  110. package/dist/esm/crypto/index.js +1 -0
  111. package/dist/esm/crypto/math/constants.js +12 -35
  112. package/dist/esm/crypto/math/edwards.js +174 -47
  113. package/dist/esm/crypto/math/fe.js +691 -0
  114. package/dist/esm/crypto/math/mod.js +10 -1
  115. package/dist/esm/index.js +1 -1
  116. package/dist/esm/infra/perf/BackgroundQueue.js +478 -0
  117. package/dist/esm/infra/perf/BoundedTaskQueue.js +3 -1
  118. package/dist/esm/infra/perf/PromiseDedup.js +20 -0
  119. package/dist/esm/infra/perf/SharedExclusiveGate.js +109 -0
  120. package/dist/esm/infra/perf/StoreLock.js +80 -0
  121. package/dist/esm/media/WaMediaCrypto.js +332 -55
  122. package/dist/esm/media/WaMediaTransferClient.js +69 -220
  123. package/dist/esm/media/constants.js +4 -1
  124. package/dist/esm/media/processor.js +1 -0
  125. package/dist/esm/message/WaMessageClient.js +26 -19
  126. package/dist/esm/message/addon-crypto.js +130 -3
  127. package/dist/esm/message/content.js +206 -14
  128. package/dist/esm/message/icdc.js +76 -0
  129. package/dist/esm/message/incoming.js +38 -24
  130. package/dist/esm/message/phash.js +35 -13
  131. package/dist/esm/message/reporting-token.js +17 -30
  132. package/dist/esm/message/use-case-secret.js +1 -1
  133. package/dist/esm/protocol/abprops.js +159 -0
  134. package/dist/esm/protocol/appstate.js +9 -40
  135. package/dist/esm/protocol/browser.js +24 -18
  136. package/dist/esm/protocol/constants.js +8 -4
  137. package/dist/esm/protocol/defaults.js +6 -0
  138. package/dist/esm/protocol/email.js +30 -0
  139. package/dist/esm/protocol/index.js +1 -2
  140. package/dist/esm/protocol/jid.js +142 -39
  141. package/dist/esm/protocol/message.js +61 -1
  142. package/dist/esm/protocol/nodes.js +8 -2
  143. package/dist/esm/protocol/notification.js +9 -1
  144. package/dist/esm/protocol/privacy-token.js +17 -0
  145. package/dist/esm/protocol/privacy.js +55 -0
  146. package/dist/esm/protocol/stream.js +26 -1
  147. package/dist/esm/retry/codec.js +216 -0
  148. package/dist/esm/retry/constants.js +1 -1
  149. package/dist/esm/retry/index.js +2 -2
  150. package/dist/esm/retry/parse.js +50 -30
  151. package/dist/esm/retry/reason.js +1 -1
  152. package/dist/esm/retry/replay.js +11 -7
  153. package/dist/esm/retry/tracker.js +50 -12
  154. package/dist/esm/signal/api/SignalDeviceSyncApi.js +52 -32
  155. package/dist/esm/signal/api/SignalDigestSyncApi.js +21 -15
  156. package/dist/esm/signal/api/SignalIdentitySyncApi.js +30 -15
  157. package/dist/esm/signal/api/SignalMissingPreKeysSyncApi.js +19 -8
  158. package/dist/esm/signal/api/SignalRotateKeyApi.js +4 -2
  159. package/dist/esm/signal/api/SignalSessionSyncApi.js +17 -8
  160. package/dist/esm/signal/api/result-map.js +10 -0
  161. package/dist/esm/signal/constants.js +0 -4
  162. package/dist/esm/signal/crypto/WaAdvSignature.js +5 -45
  163. package/dist/esm/signal/crypto/constants.js +0 -4
  164. package/dist/esm/signal/{store/sqlite.js → encoding.js} +40 -29
  165. package/dist/esm/signal/group/SenderKeyChain.js +3 -3
  166. package/dist/esm/signal/group/SenderKeyCodec.js +8 -8
  167. package/dist/esm/signal/group/SenderKeyManager.js +131 -109
  168. package/dist/esm/signal/index.js +1 -0
  169. package/dist/esm/signal/registration/keygen.js +8 -5
  170. package/dist/esm/signal/registration/utils.js +3 -2
  171. package/dist/esm/signal/session/SignalProtocol.js +158 -81
  172. package/dist/esm/signal/session/SignalRatchet.js +21 -10
  173. package/dist/esm/signal/session/SignalSerializer.js +5 -6
  174. package/dist/esm/signal/session/SignalSession.js +11 -9
  175. package/dist/esm/signal/session/resolver.js +140 -105
  176. package/dist/esm/store/contracts/identity.store.js +1 -0
  177. package/dist/esm/store/contracts/message-secret.store.js +1 -0
  178. package/dist/esm/store/contracts/pre-key.store.js +1 -0
  179. package/dist/esm/store/contracts/privacy-token.store.js +1 -0
  180. package/dist/esm/store/contracts/session.store.js +1 -0
  181. package/dist/esm/store/createStore.js +143 -193
  182. package/dist/esm/store/index.js +5 -10
  183. package/dist/esm/store/locks/appstate.lock.js +26 -0
  184. package/dist/esm/store/locks/auth.lock.js +15 -0
  185. package/dist/esm/store/locks/contact.lock.js +20 -0
  186. package/dist/esm/store/locks/device-list.lock.js +20 -0
  187. package/dist/esm/store/locks/identity.lock.js +16 -0
  188. package/dist/esm/store/locks/message-secret.lock.js +17 -0
  189. package/dist/esm/store/locks/message.lock.js +21 -0
  190. package/dist/esm/store/locks/participants.lock.js +20 -0
  191. package/dist/esm/store/locks/pre-key.lock.js +27 -0
  192. package/dist/esm/store/locks/privacy-token.lock.js +18 -0
  193. package/dist/esm/store/locks/retry.lock.js +29 -0
  194. package/dist/esm/store/locks/sender-key.lock.js +52 -0
  195. package/dist/esm/store/locks/session.lock.js +19 -0
  196. package/dist/esm/store/locks/signal.lock.js +39 -0
  197. package/dist/esm/store/locks/thread.lock.js +21 -0
  198. package/dist/esm/store/noop.store.js +21 -1
  199. package/dist/esm/store/providers/memory/appstate.store.js +22 -24
  200. package/dist/esm/store/providers/memory/device-list.store.js +13 -5
  201. package/dist/esm/store/providers/memory/identity.store.js +31 -0
  202. package/dist/esm/store/providers/memory/message-secret.store.js +81 -0
  203. package/dist/esm/store/providers/memory/participants.store.js +3 -0
  204. package/dist/esm/store/providers/memory/pre-key.store.js +97 -0
  205. package/dist/esm/store/providers/memory/privacy-token.store.js +43 -0
  206. package/dist/esm/store/providers/memory/retry.store.js +99 -10
  207. package/dist/esm/store/providers/memory/sender-key.store.js +6 -1
  208. package/dist/esm/store/providers/memory/session.store.js +45 -0
  209. package/dist/esm/store/providers/memory/signal.store.js +1 -147
  210. package/dist/esm/transport/WaComms.js +7 -4
  211. package/dist/esm/transport/WaWebSocket.js +9 -7
  212. package/dist/esm/transport/binary/constants.js +0 -30
  213. package/dist/esm/transport/binary/decoder.js +4 -4
  214. package/dist/esm/transport/binary/encoder.js +8 -15
  215. package/dist/esm/transport/binary/index.js +0 -1
  216. package/dist/esm/transport/index.js +6 -0
  217. package/dist/esm/transport/keepalive/WaKeepAlive.js +17 -8
  218. package/dist/esm/transport/node/WaMobileTcpSocket.js +114 -0
  219. package/dist/esm/transport/node/WaNodeOrchestrator.js +37 -22
  220. package/dist/esm/transport/node/builders/abprops.js +20 -0
  221. package/dist/esm/transport/node/builders/business.js +129 -0
  222. package/dist/esm/transport/node/builders/device.js +11 -0
  223. package/dist/esm/transport/node/builders/email.js +65 -0
  224. package/dist/esm/transport/node/builders/global.js +370 -0
  225. package/dist/esm/transport/node/builders/message.js +63 -239
  226. package/dist/esm/transport/node/builders/offline.js +14 -0
  227. package/dist/esm/transport/node/builders/pairing.js +0 -24
  228. package/dist/esm/transport/node/builders/prekeys.js +37 -40
  229. package/dist/esm/transport/node/builders/presence.js +13 -0
  230. package/dist/esm/transport/node/builders/privacy-token.js +37 -0
  231. package/dist/esm/transport/node/builders/privacy.js +48 -0
  232. package/dist/esm/transport/node/builders/profile.js +70 -0
  233. package/dist/esm/transport/node/builders/retry.js +11 -23
  234. package/dist/esm/transport/node/builders/usync.js +6 -2
  235. package/dist/esm/transport/node/helpers.js +43 -1
  236. package/dist/esm/transport/node/mex/argo-decoder.js +152 -0
  237. package/dist/esm/transport/node/mex/client.js +83 -0
  238. package/dist/esm/transport/node/mex/persist-ids.js +10 -0
  239. package/dist/esm/transport/node/usync.js +3 -33
  240. package/dist/esm/transport/node/xml.js +35 -14
  241. package/dist/esm/transport/noise/WaClientPayload.js +24 -19
  242. package/dist/esm/transport/noise/WaFrameCodec.js +2 -2
  243. package/dist/esm/transport/noise/WaMobileClientPayload.js +53 -0
  244. package/dist/esm/transport/noise/WaNoiseCert.js +9 -27
  245. package/dist/esm/transport/noise/WaNoiseSession.js +76 -34
  246. package/dist/esm/transport/noise/WaNoiseSocket.js +8 -4
  247. package/dist/esm/transport/stream/parse.js +8 -4
  248. package/dist/esm/util/bytes.js +22 -18
  249. package/dist/esm/util/index.js +5 -0
  250. package/dist/esm/util/primitives.js +3 -2
  251. package/dist/index.js +7 -1
  252. package/dist/infra/perf/BackgroundQueue.js +482 -0
  253. package/dist/infra/perf/BoundedTaskQueue.js +3 -1
  254. package/dist/infra/perf/PromiseDedup.js +24 -0
  255. package/dist/infra/perf/SharedExclusiveGate.js +113 -0
  256. package/dist/infra/perf/StoreLock.js +84 -0
  257. package/dist/media/WaMediaCrypto.js +328 -51
  258. package/dist/media/WaMediaTransferClient.js +72 -253
  259. package/dist/media/constants.js +5 -2
  260. package/dist/media/processor.js +2 -0
  261. package/dist/message/WaMessageClient.js +26 -19
  262. package/dist/message/addon-crypto.js +131 -0
  263. package/dist/message/content.js +211 -14
  264. package/dist/message/icdc.js +81 -0
  265. package/dist/message/incoming.js +38 -24
  266. package/dist/message/phash.js +35 -13
  267. package/dist/message/reporting-token.js +16 -30
  268. package/dist/message/use-case-secret.js +1 -1
  269. package/dist/protocol/abprops.js +163 -0
  270. package/dist/protocol/appstate.js +10 -41
  271. package/dist/protocol/browser.js +25 -18
  272. package/dist/protocol/constants.js +33 -2
  273. package/dist/protocol/defaults.js +6 -0
  274. package/dist/protocol/email.js +33 -0
  275. package/dist/protocol/index.js +8 -5
  276. package/dist/protocol/jid.js +149 -39
  277. package/dist/protocol/message.js +62 -2
  278. package/dist/protocol/nodes.js +8 -2
  279. package/dist/protocol/notification.js +10 -2
  280. package/dist/protocol/privacy-token.js +20 -0
  281. package/dist/protocol/privacy.js +58 -0
  282. package/dist/protocol/stream.js +27 -2
  283. package/dist/retry/codec.js +220 -0
  284. package/dist/retry/constants.js +1 -1
  285. package/dist/retry/index.js +5 -5
  286. package/dist/retry/parse.js +51 -30
  287. package/dist/retry/reason.js +1 -1
  288. package/dist/retry/replay.js +10 -6
  289. package/dist/retry/tracker.js +50 -12
  290. package/dist/signal/api/SignalDeviceSyncApi.js +51 -31
  291. package/dist/signal/api/SignalDigestSyncApi.js +21 -15
  292. package/dist/signal/api/SignalIdentitySyncApi.js +29 -14
  293. package/dist/signal/api/SignalMissingPreKeysSyncApi.js +17 -6
  294. package/dist/signal/api/SignalRotateKeyApi.js +4 -2
  295. package/dist/signal/api/SignalSessionSyncApi.js +16 -7
  296. package/dist/signal/api/result-map.js +13 -0
  297. package/dist/signal/constants.js +1 -5
  298. package/dist/signal/crypto/WaAdvSignature.js +2 -44
  299. package/dist/signal/crypto/constants.js +1 -5
  300. package/dist/signal/{store/sqlite.js → encoding.js} +41 -25
  301. package/dist/signal/group/SenderKeyChain.js +2 -2
  302. package/dist/signal/group/SenderKeyCodec.js +8 -8
  303. package/dist/signal/group/SenderKeyManager.js +130 -108
  304. package/dist/signal/index.js +13 -1
  305. package/dist/signal/registration/keygen.js +7 -4
  306. package/dist/signal/registration/utils.js +3 -2
  307. package/dist/signal/session/SignalProtocol.js +158 -81
  308. package/dist/signal/session/SignalRatchet.js +19 -8
  309. package/dist/signal/session/SignalSerializer.js +5 -6
  310. package/dist/signal/session/SignalSession.js +11 -9
  311. package/dist/signal/session/resolver.js +138 -103
  312. package/dist/store/contracts/identity.store.js +2 -0
  313. package/dist/store/contracts/message-secret.store.js +2 -0
  314. package/dist/store/contracts/pre-key.store.js +2 -0
  315. package/dist/store/contracts/privacy-token.store.js +2 -0
  316. package/dist/store/contracts/session.store.js +2 -0
  317. package/dist/store/createStore.js +142 -192
  318. package/dist/store/index.js +23 -33
  319. package/dist/store/locks/appstate.lock.js +29 -0
  320. package/dist/store/locks/auth.lock.js +18 -0
  321. package/dist/store/locks/contact.lock.js +23 -0
  322. package/dist/store/locks/device-list.lock.js +23 -0
  323. package/dist/store/locks/identity.lock.js +19 -0
  324. package/dist/store/locks/message-secret.lock.js +20 -0
  325. package/dist/store/locks/message.lock.js +24 -0
  326. package/dist/store/locks/participants.lock.js +23 -0
  327. package/dist/store/locks/pre-key.lock.js +30 -0
  328. package/dist/store/locks/privacy-token.lock.js +21 -0
  329. package/dist/store/locks/retry.lock.js +32 -0
  330. package/dist/store/locks/sender-key.lock.js +55 -0
  331. package/dist/store/locks/session.lock.js +22 -0
  332. package/dist/store/locks/signal.lock.js +42 -0
  333. package/dist/store/locks/thread.lock.js +24 -0
  334. package/dist/store/noop.store.js +22 -2
  335. package/dist/store/providers/memory/appstate.store.js +22 -24
  336. package/dist/store/providers/memory/device-list.store.js +13 -5
  337. package/dist/store/providers/memory/identity.store.js +35 -0
  338. package/dist/store/providers/memory/message-secret.store.js +85 -0
  339. package/dist/store/providers/memory/participants.store.js +3 -0
  340. package/dist/store/providers/memory/pre-key.store.js +101 -0
  341. package/dist/store/providers/memory/privacy-token.store.js +47 -0
  342. package/dist/store/providers/memory/retry.store.js +98 -9
  343. package/dist/store/providers/memory/sender-key.store.js +6 -1
  344. package/dist/store/providers/memory/session.store.js +49 -0
  345. package/dist/store/providers/memory/signal.store.js +1 -147
  346. package/dist/transport/WaComms.js +7 -4
  347. package/dist/transport/WaWebSocket.js +9 -7
  348. package/dist/transport/binary/constants.js +1 -31
  349. package/dist/transport/binary/decoder.js +4 -4
  350. package/dist/transport/binary/encoder.js +8 -15
  351. package/dist/transport/binary/index.js +0 -4
  352. package/dist/transport/index.js +17 -1
  353. package/dist/transport/keepalive/WaKeepAlive.js +17 -8
  354. package/dist/transport/node/WaMobileTcpSocket.js +118 -0
  355. package/dist/transport/node/WaNodeOrchestrator.js +36 -21
  356. package/dist/transport/node/builders/abprops.js +23 -0
  357. package/dist/transport/node/builders/business.js +137 -0
  358. package/dist/transport/node/builders/device.js +14 -0
  359. package/dist/transport/node/builders/email.js +72 -0
  360. package/dist/transport/node/builders/global.js +375 -0
  361. package/dist/transport/node/builders/message.js +64 -245
  362. package/dist/transport/node/builders/offline.js +17 -0
  363. package/dist/transport/node/builders/pairing.js +0 -26
  364. package/dist/transport/node/builders/prekeys.js +36 -39
  365. package/dist/transport/node/builders/presence.js +16 -0
  366. package/dist/transport/node/builders/privacy-token.js +42 -0
  367. package/dist/transport/node/builders/privacy.js +55 -0
  368. package/dist/transport/node/builders/profile.js +78 -0
  369. package/dist/transport/node/builders/retry.js +10 -22
  370. package/dist/transport/node/builders/usync.js +6 -2
  371. package/dist/transport/node/helpers.js +46 -1
  372. package/dist/transport/node/mex/argo-decoder.js +189 -0
  373. package/dist/transport/node/mex/client.js +86 -0
  374. package/dist/transport/node/mex/persist-ids.js +13 -0
  375. package/dist/transport/node/usync.js +2 -32
  376. package/dist/transport/node/xml.js +35 -14
  377. package/dist/transport/noise/WaClientPayload.js +26 -21
  378. package/dist/transport/noise/WaFrameCodec.js +1 -1
  379. package/dist/transport/noise/WaMobileClientPayload.js +56 -0
  380. package/dist/transport/noise/WaNoiseCert.js +8 -26
  381. package/dist/transport/noise/WaNoiseSession.js +75 -33
  382. package/dist/transport/noise/WaNoiseSocket.js +8 -4
  383. package/dist/transport/stream/parse.js +7 -3
  384. package/dist/types/appstate/WaAppStateCrypto.d.ts +11 -8
  385. package/dist/types/appstate/WaAppStateSyncClient.d.ts +6 -2
  386. package/dist/types/appstate/encoding.d.ts +7 -0
  387. package/dist/types/appstate/index.d.ts +3 -3
  388. package/dist/types/appstate/{WaAppStateSyncResponseParser.d.ts → response-parser.d.ts} +1 -1
  389. package/dist/types/appstate/types.d.ts +1 -1
  390. package/dist/types/appstate/utils.d.ts +0 -2
  391. package/dist/types/auth/WaAuthClient.d.ts +9 -3
  392. package/dist/types/auth/credentials-flow.d.ts +20 -0
  393. package/dist/types/auth/index.d.ts +0 -2
  394. package/dist/types/auth/pairing/WaPairingFlow.d.ts +3 -2
  395. package/dist/types/auth/pairing/{WaPairingCodeCrypto.d.ts → pairing-code-crypto.d.ts} +6 -1
  396. package/dist/types/auth/types.d.ts +41 -0
  397. package/dist/types/client/WaClient.d.ts +44 -18
  398. package/dist/types/client/WaClientFactory.d.ts +22 -8
  399. package/dist/types/client/connection/WaConnectionManager.d.ts +2 -0
  400. package/dist/types/client/coordinators/WaAbPropsCoordinator.d.ts +26 -0
  401. package/dist/types/client/coordinators/WaBusinessCoordinator.d.ts +57 -0
  402. package/dist/types/client/coordinators/WaEmailCoordinator.d.ts +24 -0
  403. package/dist/types/client/coordinators/WaIncomingNodeCoordinator.d.ts +9 -2
  404. package/dist/types/client/coordinators/WaMessageDispatchCoordinator.d.ts +29 -2
  405. package/dist/types/client/coordinators/WaOfflineResumeCoordinator.d.ts +31 -0
  406. package/dist/types/client/coordinators/WaPassiveTasksCoordinator.d.ts +16 -1
  407. package/dist/types/client/coordinators/WaPrivacyCoordinator.d.ts +26 -0
  408. package/dist/types/client/coordinators/WaProfileCoordinator.d.ts +38 -0
  409. package/dist/types/client/coordinators/WaRetryCoordinator.d.ts +12 -0
  410. package/dist/types/client/coordinators/WaStreamControlCoordinator.d.ts +3 -2
  411. package/dist/types/client/coordinators/WaTrustedContactTokenCoordinator.d.ts +55 -0
  412. package/dist/types/client/dirty.d.ts +3 -1
  413. package/dist/types/client/events/abprops.d.ts +14 -0
  414. package/dist/types/client/events/devices.d.ts +20 -0
  415. package/dist/types/client/events/identity.d.ts +9 -0
  416. package/dist/types/client/events/privacy-token.d.ts +7 -0
  417. package/dist/types/client/events/registration.d.ts +17 -0
  418. package/dist/types/client/history-sync.d.ts +9 -6
  419. package/dist/types/client/incoming.d.ts +9 -2
  420. package/dist/types/client/index.d.ts +1 -1
  421. package/dist/types/client/mailbox.d.ts +5 -5
  422. package/dist/types/client/media.d.ts +31 -0
  423. package/dist/types/client/messages.d.ts +3 -2
  424. package/dist/types/client/persistence/WriteBehindPersistence.d.ts +34 -0
  425. package/dist/types/client/tokens/cs-token.d.ts +10 -0
  426. package/dist/types/client/tokens/tc-token.d.ts +5 -0
  427. package/dist/types/client/types.d.ts +151 -4
  428. package/dist/types/crypto/core/index.d.ts +3 -2
  429. package/dist/types/crypto/core/nonce.d.ts +2 -0
  430. package/dist/types/crypto/core/primitives.d.ts +1 -2
  431. package/dist/types/crypto/core/random.d.ts +2 -1
  432. package/dist/types/crypto/core/xeddsa.d.ts +2 -0
  433. package/dist/types/crypto/curves/constants.d.ts +1 -0
  434. package/dist/types/crypto/index.d.ts +2 -0
  435. package/dist/types/crypto/math/constants.d.ts +4 -2
  436. package/dist/types/crypto/math/fe.d.ts +30 -0
  437. package/dist/types/crypto/math/mod.d.ts +0 -2
  438. package/dist/types/crypto/math/types.d.ts +11 -4
  439. package/dist/types/index.d.ts +6 -3
  440. package/dist/types/infra/log/ConsoleLogger.d.ts +1 -1
  441. package/dist/types/infra/log/PinoLogger.d.ts +1 -1
  442. package/dist/types/infra/perf/BackgroundQueue.d.ts +58 -0
  443. package/dist/types/infra/perf/PromiseDedup.d.ts +4 -0
  444. package/dist/types/infra/perf/SharedExclusiveGate.d.ts +17 -0
  445. package/dist/types/infra/perf/StoreLock.d.ts +11 -0
  446. package/dist/types/media/WaMediaCrypto.d.ts +16 -6
  447. package/dist/types/media/WaMediaTransferClient.d.ts +6 -23
  448. package/dist/types/media/constants.d.ts +3 -1
  449. package/dist/types/media/index.d.ts +2 -1
  450. package/dist/types/media/processor.d.ts +28 -0
  451. package/dist/types/media/types.d.ts +19 -5
  452. package/dist/types/message/addon-crypto.d.ts +34 -3
  453. package/dist/types/message/content.d.ts +11 -1
  454. package/dist/types/message/icdc.d.ts +13 -0
  455. package/dist/types/message/reporting-token.d.ts +0 -1
  456. package/dist/types/message/types.d.ts +42 -11
  457. package/dist/types/protocol/abprops.d.ts +142 -0
  458. package/dist/types/protocol/appstate.d.ts +0 -11
  459. package/dist/types/protocol/browser.d.ts +1 -0
  460. package/dist/types/protocol/constants.d.ts +12 -4
  461. package/dist/types/protocol/defaults.d.ts +6 -0
  462. package/dist/types/protocol/email.d.ts +32 -0
  463. package/dist/types/protocol/index.d.ts +1 -2
  464. package/dist/types/protocol/jid.d.ts +20 -2
  465. package/dist/types/protocol/message.d.ts +60 -0
  466. package/dist/types/protocol/nodes.d.ts +6 -0
  467. package/dist/types/protocol/notification.d.ts +8 -0
  468. package/dist/types/protocol/privacy-token.d.ts +17 -0
  469. package/dist/types/protocol/privacy.d.ts +75 -0
  470. package/dist/types/protocol/stream.d.ts +31 -0
  471. package/dist/types/retry/codec.d.ts +3 -0
  472. package/dist/types/retry/index.d.ts +3 -3
  473. package/dist/types/retry/parse.d.ts +5 -2
  474. package/dist/types/retry/reason.d.ts +1 -1
  475. package/dist/types/retry/tracker.d.ts +1 -0
  476. package/dist/types/retry/types.d.ts +6 -1
  477. package/dist/types/signal/api/SignalDeviceSyncApi.d.ts +2 -1
  478. package/dist/types/signal/api/SignalDigestSyncApi.d.ts +9 -0
  479. package/dist/types/signal/api/SignalIdentitySyncApi.d.ts +5 -3
  480. package/dist/types/signal/api/SignalRotateKeyApi.d.ts +4 -5
  481. package/dist/types/signal/api/SignalSessionSyncApi.d.ts +8 -6
  482. package/dist/types/signal/api/result-map.d.ts +1 -0
  483. package/dist/types/signal/constants.d.ts +0 -3
  484. package/dist/types/signal/crypto/WaAdvSignature.d.ts +0 -2
  485. package/dist/types/signal/crypto/constants.d.ts +0 -1
  486. package/dist/types/signal/{store/sqlite.d.ts → encoding.d.ts} +9 -3
  487. package/dist/types/signal/group/SenderKeyChain.d.ts +1 -1
  488. package/dist/types/signal/group/SenderKeyManager.d.ts +17 -7
  489. package/dist/types/signal/index.d.ts +2 -0
  490. package/dist/types/signal/registration/utils.d.ts +2 -1
  491. package/dist/types/signal/session/SignalProtocol.d.ts +21 -6
  492. package/dist/types/signal/session/SignalSerializer.d.ts +2 -1
  493. package/dist/types/signal/session/resolver.d.ts +11 -4
  494. package/dist/types/signal/types.d.ts +16 -4
  495. package/dist/types/store/contracts/appstate.store.d.ts +1 -1
  496. package/dist/types/store/contracts/identity.store.d.ts +11 -0
  497. package/dist/types/store/contracts/message-secret.store.d.ts +16 -0
  498. package/dist/types/store/contracts/pre-key.store.d.ts +13 -0
  499. package/dist/types/store/contracts/privacy-token.store.d.ts +16 -0
  500. package/dist/types/store/contracts/retry.store.d.ts +7 -0
  501. package/dist/types/store/contracts/session.store.d.ts +14 -0
  502. package/dist/types/store/contracts/signal.store.d.ts +1 -27
  503. package/dist/types/store/createStore.d.ts +1 -1
  504. package/dist/types/store/index.d.ts +12 -12
  505. package/dist/types/store/locks/appstate.lock.d.ts +3 -0
  506. package/dist/types/store/locks/auth.lock.d.ts +3 -0
  507. package/dist/types/store/locks/contact.lock.d.ts +3 -0
  508. package/dist/types/store/locks/device-list.lock.d.ts +2 -0
  509. package/dist/types/store/locks/identity.lock.d.ts +3 -0
  510. package/dist/types/store/locks/message-secret.lock.d.ts +3 -0
  511. package/dist/types/store/locks/message.lock.d.ts +3 -0
  512. package/dist/types/store/locks/participants.lock.d.ts +2 -0
  513. package/dist/types/store/locks/pre-key.lock.d.ts +3 -0
  514. package/dist/types/store/locks/privacy-token.lock.d.ts +2 -0
  515. package/dist/types/store/locks/retry.lock.d.ts +2 -0
  516. package/dist/types/store/locks/sender-key.lock.d.ts +3 -0
  517. package/dist/types/store/locks/session.lock.d.ts +3 -0
  518. package/dist/types/store/locks/signal.lock.d.ts +3 -0
  519. package/dist/types/store/locks/thread.lock.d.ts +3 -0
  520. package/dist/types/store/noop.store.d.ts +4 -0
  521. package/dist/types/store/providers/memory/appstate.store.d.ts +1 -1
  522. package/dist/types/store/providers/memory/identity.store.d.ts +18 -0
  523. package/dist/types/store/providers/memory/message-secret.store.d.ts +21 -0
  524. package/dist/types/store/providers/memory/pre-key.store.d.ts +23 -0
  525. package/dist/types/store/providers/memory/privacy-token.store.d.ts +13 -0
  526. package/dist/types/store/providers/memory/retry.store.d.ts +15 -1
  527. package/dist/types/store/providers/memory/session.store.d.ts +21 -0
  528. package/dist/types/store/providers/memory/signal.store.d.ts +2 -43
  529. package/dist/types/store/providers/memory/thread.store.d.ts +1 -1
  530. package/dist/types/store/types.d.ts +69 -61
  531. package/dist/types/transport/WaWebSocket.d.ts +1 -1
  532. package/dist/types/transport/binary/constants.d.ts +0 -30
  533. package/dist/types/transport/binary/index.d.ts +0 -1
  534. package/dist/types/transport/index.d.ts +8 -1
  535. package/dist/types/transport/keepalive/WaKeepAlive.d.ts +4 -1
  536. package/dist/types/transport/node/WaMobileTcpSocket.d.ts +18 -0
  537. package/dist/types/transport/node/WaNodeOrchestrator.d.ts +9 -6
  538. package/dist/types/transport/node/builders/abprops.d.ts +5 -0
  539. package/dist/types/transport/node/builders/business.d.ts +29 -0
  540. package/dist/types/transport/node/builders/device.d.ts +2 -0
  541. package/dist/types/transport/node/builders/email.d.ts +11 -0
  542. package/dist/types/transport/node/builders/global.d.ts +102 -0
  543. package/dist/types/transport/node/builders/message.d.ts +8 -7
  544. package/dist/types/transport/node/builders/offline.d.ts +2 -0
  545. package/dist/types/transport/node/builders/pairing.d.ts +0 -2
  546. package/dist/types/transport/node/builders/prekeys.d.ts +4 -3
  547. package/dist/types/transport/node/builders/presence.d.ts +6 -0
  548. package/dist/types/transport/node/builders/privacy-token.d.ts +9 -0
  549. package/dist/types/transport/node/builders/privacy.d.ts +7 -0
  550. package/dist/types/transport/node/builders/profile.d.ts +8 -0
  551. package/dist/types/transport/node/builders/retry.d.ts +0 -1
  552. package/dist/types/transport/node/helpers.d.ts +8 -0
  553. package/dist/types/transport/node/mex/argo-decoder.d.ts +11 -0
  554. package/dist/types/transport/node/mex/client.d.ts +18 -0
  555. package/dist/types/transport/node/mex/persist-ids.d.ts +14 -0
  556. package/dist/types/transport/noise/WaMobileClientPayload.d.ts +29 -0
  557. package/dist/types/transport/noise/WaNoiseCert.d.ts +7 -1
  558. package/dist/types/transport/noise/WaNoiseSession.d.ts +4 -2
  559. package/dist/types/transport/noise/WaNoiseSocket.d.ts +4 -2
  560. package/dist/types/transport/types.d.ts +8 -0
  561. package/dist/types/util/bytes.d.ts +1 -1
  562. package/dist/types/util/index.d.ts +5 -0
  563. package/dist/types/util/primitives.d.ts +0 -1
  564. package/dist/util/bytes.js +22 -18
  565. package/dist/util/index.js +23 -0
  566. package/dist/util/primitives.js +2 -2
  567. package/package.json +34 -10
  568. package/proto/index.js +1 -1
  569. package/dist/auth/flow/WaAuthCredentialsFlow.js +0 -130
  570. package/dist/auth/pairing/constants.js +0 -5
  571. package/dist/client/connection/WaKeyShareCoordinator.js +0 -63
  572. package/dist/crypto/core/constants.js +0 -4
  573. package/dist/esm/auth/flow/WaAuthCredentialsFlow.js +0 -125
  574. package/dist/esm/auth/pairing/constants.js +0 -2
  575. package/dist/esm/client/connection/WaKeyShareCoordinator.js +0 -59
  576. package/dist/esm/crypto/core/constants.js +0 -1
  577. package/dist/esm/retry/outbound.js +0 -82
  578. package/dist/esm/store/providers/sqlite/BaseSqliteStore.js +0 -37
  579. package/dist/esm/store/providers/sqlite/appstate.store.js +0 -250
  580. package/dist/esm/store/providers/sqlite/auth.store.js +0 -176
  581. package/dist/esm/store/providers/sqlite/connection.js +0 -245
  582. package/dist/esm/store/providers/sqlite/contact.store.js +0 -74
  583. package/dist/esm/store/providers/sqlite/device-list.store.js +0 -127
  584. package/dist/esm/store/providers/sqlite/message.store.js +0 -132
  585. package/dist/esm/store/providers/sqlite/migrations.js +0 -347
  586. package/dist/esm/store/providers/sqlite/participants.store.js +0 -77
  587. package/dist/esm/store/providers/sqlite/retry.store.js +0 -141
  588. package/dist/esm/store/providers/sqlite/sender-key.store.js +0 -198
  589. package/dist/esm/store/providers/sqlite/signal.store.js +0 -435
  590. package/dist/esm/store/providers/sqlite/table-names.js +0 -107
  591. package/dist/esm/store/providers/sqlite/thread.store.js +0 -85
  592. package/dist/esm/transport/node/builders/index.js +0 -8
  593. package/dist/retry/outbound.js +0 -87
  594. package/dist/store/providers/sqlite/BaseSqliteStore.js +0 -41
  595. package/dist/store/providers/sqlite/appstate.store.js +0 -254
  596. package/dist/store/providers/sqlite/auth.store.js +0 -180
  597. package/dist/store/providers/sqlite/connection.js +0 -281
  598. package/dist/store/providers/sqlite/contact.store.js +0 -78
  599. package/dist/store/providers/sqlite/device-list.store.js +0 -131
  600. package/dist/store/providers/sqlite/message.store.js +0 -136
  601. package/dist/store/providers/sqlite/migrations.js +0 -350
  602. package/dist/store/providers/sqlite/participants.store.js +0 -81
  603. package/dist/store/providers/sqlite/retry.store.js +0 -145
  604. package/dist/store/providers/sqlite/sender-key.store.js +0 -202
  605. package/dist/store/providers/sqlite/signal.store.js +0 -439
  606. package/dist/store/providers/sqlite/table-names.js +0 -113
  607. package/dist/store/providers/sqlite/thread.store.js +0 -89
  608. package/dist/transport/node/builders/index.js +0 -42
  609. package/dist/types/appstate/store/sqlite.d.ts +0 -7
  610. package/dist/types/auth/flow/WaAuthCredentialsFlow.d.ts +0 -14
  611. package/dist/types/auth/pairing/constants.d.ts +0 -2
  612. package/dist/types/client/connection/WaKeyShareCoordinator.d.ts +0 -14
  613. package/dist/types/crypto/core/constants.d.ts +0 -1
  614. package/dist/types/retry/outbound.d.ts +0 -4
  615. package/dist/types/store/providers/sqlite/BaseSqliteStore.d.ts +0 -12
  616. package/dist/types/store/providers/sqlite/appstate.store.d.ts +0 -17
  617. package/dist/types/store/providers/sqlite/auth.store.d.ts +0 -10
  618. package/dist/types/store/providers/sqlite/connection.d.ts +0 -10
  619. package/dist/types/store/providers/sqlite/contact.store.d.ts +0 -12
  620. package/dist/types/store/providers/sqlite/device-list.store.d.ts +0 -15
  621. package/dist/types/store/providers/sqlite/message.store.d.ts +0 -13
  622. package/dist/types/store/providers/sqlite/migrations.d.ts +0 -3
  623. package/dist/types/store/providers/sqlite/participants.store.d.ts +0 -12
  624. package/dist/types/store/providers/sqlite/retry.store.d.ts +0 -15
  625. package/dist/types/store/providers/sqlite/sender-key.store.d.ts +0 -24
  626. package/dist/types/store/providers/sqlite/signal.store.d.ts +0 -53
  627. package/dist/types/store/providers/sqlite/table-names.d.ts +0 -5
  628. package/dist/types/store/providers/sqlite/thread.store.d.ts +0 -13
  629. package/dist/types/transport/node/builders/index.d.ts +0 -8
  630. /package/dist/appstate/{WaAppStateSyncResponseParser.js → response-parser.js} +0 -0
@@ -2,33 +2,36 @@ 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';
10
+ import type { WaPrivacyTokenStore } from './contracts/privacy-token.store';
7
11
  import type { WaRetryStore } from './contracts/retry.store';
8
12
  import type { WaSenderKeyStore } from './contracts/sender-key.store';
13
+ import type { WaSessionStore } from './contracts/session.store';
9
14
  import type { WaSignalStore } from './contracts/signal.store';
10
15
  import type { WaThreadStore } from './contracts/thread.store';
11
- export type WaSqliteDriver = 'auto' | 'better-sqlite3' | 'bun';
12
- export type WaSqliteTableName = 'wa_migrations' | 'auth_credentials' | 'signal_meta' | 'signal_registration' | 'signal_signed_prekey' | 'signal_prekey' | 'signal_session' | 'signal_identity' | 'sender_keys' | 'sender_key_distribution' | 'appstate_sync_keys' | 'appstate_collection_versions' | 'appstate_collection_index_values' | 'retry_outbound_messages' | 'retry_inbound_counters' | 'mailbox_messages' | 'mailbox_threads' | 'mailbox_contacts' | 'group_participants_cache' | 'device_list_cache';
13
- export type WaSqliteTableNameOverrides = Readonly<Partial<Record<WaSqliteTableName, string>>>;
14
- export interface WaSqliteStorageOptions {
15
- readonly path: string;
16
- readonly sessionId: string;
17
- readonly driver?: WaSqliteDriver;
18
- readonly pragmas?: Readonly<Record<string, string | number>>;
19
- readonly tableNames?: WaSqliteTableNameOverrides;
20
- }
16
+ export type WithDestroyLifecycle<T> = T & {
17
+ readonly destroy?: () => Promise<void>;
18
+ };
21
19
  export interface WaStoreSession {
22
20
  readonly auth: WaAuthStore;
23
21
  readonly signal: WaSignalStore;
22
+ readonly preKey: WaPreKeyStore;
23
+ readonly session: WaSessionStore;
24
+ readonly identity: WaIdentityStore;
24
25
  readonly senderKey: WaSenderKeyStore;
25
26
  readonly appState: WaAppStateStore;
26
27
  readonly retry: WaRetryStore;
27
28
  readonly participants: WaParticipantsStore;
28
29
  readonly deviceList: WaDeviceListStore;
29
30
  readonly messages: WaMessageStore;
31
+ readonly messageSecret: WaMessageSecretStore;
30
32
  readonly threads: WaThreadStore;
31
33
  readonly contacts: WaContactStore;
34
+ readonly privacyToken: WaPrivacyTokenStore;
32
35
  destroyCaches(): Promise<void>;
33
36
  destroy(): Promise<void>;
34
37
  }
@@ -37,30 +40,59 @@ export interface WaStore {
37
40
  destroyCaches(): Promise<void>;
38
41
  destroy(): Promise<void>;
39
42
  }
40
- export interface WaStoreProviderSelection {
41
- readonly auth?: 'sqlite';
42
- readonly signal?: 'sqlite' | 'memory';
43
- readonly senderKey?: 'sqlite' | 'memory';
44
- readonly appState?: 'sqlite' | 'memory';
45
- readonly messages?: 'none' | 'sqlite' | 'memory';
46
- readonly threads?: 'none' | 'sqlite' | 'memory';
47
- readonly contacts?: 'none' | 'sqlite' | 'memory';
48
- }
49
- export interface WaStoreCacheProviderSelection {
50
- readonly retry?: 'sqlite' | 'memory';
51
- readonly participants?: 'none' | 'sqlite' | 'memory';
52
- readonly deviceList?: 'none' | 'sqlite' | 'memory';
53
- }
54
- export interface WaStoreCacheTtlSelection {
55
- readonly retryMs?: number;
56
- readonly participantsMs?: number;
57
- readonly deviceListMs?: number;
43
+ export interface WaStoreBackend {
44
+ readonly stores: {
45
+ readonly auth: (sessionId: string) => WaAuthStore;
46
+ readonly signal: (sessionId: string) => WaSignalStore;
47
+ readonly preKey: (sessionId: string) => WaPreKeyStore;
48
+ readonly session: (sessionId: string) => WaSessionStore;
49
+ readonly identity: (sessionId: string) => WaIdentityStore;
50
+ readonly senderKey: (sessionId: string) => WaSenderKeyStore;
51
+ readonly appState: (sessionId: string) => WaAppStateStore;
52
+ readonly messages: (sessionId: string) => WaMessageStore;
53
+ readonly threads: (sessionId: string) => WaThreadStore;
54
+ readonly contacts: (sessionId: string) => WaContactStore;
55
+ readonly privacyToken: (sessionId: string) => WaPrivacyTokenStore;
56
+ };
57
+ readonly caches: {
58
+ readonly retry: (sessionId: string) => WaRetryStore;
59
+ readonly participants: (sessionId: string) => WaParticipantsStore;
60
+ readonly deviceList: (sessionId: string) => WaDeviceListStore;
61
+ readonly messageSecret: (sessionId: string) => WaMessageSecretStore;
62
+ };
58
63
  }
59
- export interface WaStoreSqliteBatchSizeSelection {
60
- readonly deviceList?: number;
61
- readonly senderKeyDistribution?: number;
62
- readonly signalPreKey?: number;
63
- readonly signalHasSession?: number;
64
+ export type WaStoreDomain = keyof WaStoreBackend['stores'];
65
+ export type WaCacheDomain = keyof WaStoreBackend['caches'];
66
+ export interface WaCreateStoreOptions<B extends string = string> {
67
+ readonly backends?: Readonly<Record<B, WaStoreBackend>>;
68
+ readonly providers?: {
69
+ readonly auth?: B | 'memory';
70
+ readonly signal?: B | 'memory';
71
+ readonly preKey?: B | 'memory';
72
+ readonly session?: B | 'memory';
73
+ readonly identity?: B | 'memory';
74
+ readonly senderKey?: B | 'memory';
75
+ readonly appState?: B | 'memory';
76
+ readonly messages?: B | 'memory' | 'none';
77
+ readonly threads?: B | 'memory' | 'none';
78
+ readonly contacts?: B | 'memory' | 'none';
79
+ readonly privacyToken?: B | 'memory';
80
+ };
81
+ readonly cacheProviders?: {
82
+ readonly retry?: B | 'memory' | 'none';
83
+ readonly participants?: B | 'memory' | 'none';
84
+ readonly deviceList?: B | 'memory' | 'none';
85
+ readonly messageSecret?: B | 'memory' | 'none';
86
+ };
87
+ readonly memory?: {
88
+ readonly limits?: WaStoreMemoryLimitSelection;
89
+ readonly cacheTtlMs?: {
90
+ readonly retryMs?: number;
91
+ readonly participantsMs?: number;
92
+ readonly deviceListMs?: number;
93
+ readonly messageSecretMs?: number;
94
+ };
95
+ };
64
96
  }
65
97
  export interface WaStoreMemoryLimitSelection {
66
98
  readonly appStateSyncKeys?: number;
@@ -73,34 +105,10 @@ export interface WaStoreMemoryLimitSelection {
73
105
  readonly participantsGroups?: number;
74
106
  readonly deviceListUsers?: number;
75
107
  readonly messages?: number;
108
+ readonly messageSecrets?: number;
109
+ readonly retryOutboundMessages?: number;
110
+ readonly retryInboundCounters?: number;
76
111
  readonly threads?: number;
77
112
  readonly contacts?: number;
78
- }
79
- export type WaStoreDomainValueOrFactory<T> = T | ((sessionId: string) => T);
80
- export interface WaCreateStoreCustomProviders {
81
- readonly auth?: WaStoreDomainValueOrFactory<WaAuthStore>;
82
- readonly signal?: WaStoreDomainValueOrFactory<WaSignalStore>;
83
- readonly senderKey?: WaStoreDomainValueOrFactory<WaSenderKeyStore>;
84
- readonly appState?: WaStoreDomainValueOrFactory<WaAppStateStore>;
85
- readonly messages?: WaStoreDomainValueOrFactory<WaMessageStore>;
86
- readonly threads?: WaStoreDomainValueOrFactory<WaThreadStore>;
87
- readonly contacts?: WaStoreDomainValueOrFactory<WaContactStore>;
88
- }
89
- export interface WaCreateStoreCustomCacheProviders {
90
- readonly retry?: WaStoreDomainValueOrFactory<WaRetryStore>;
91
- readonly participants?: WaStoreDomainValueOrFactory<WaParticipantsStore>;
92
- readonly deviceList?: WaStoreDomainValueOrFactory<WaDeviceListStore>;
93
- }
94
- export interface WaCreateStoreOptions {
95
- readonly sqlite?: Omit<WaSqliteStorageOptions, 'sessionId'> & {
96
- readonly batchSizes?: WaStoreSqliteBatchSizeSelection;
97
- };
98
- readonly memory?: {
99
- readonly limits?: WaStoreMemoryLimitSelection;
100
- };
101
- readonly providers?: WaStoreProviderSelection;
102
- readonly cacheProviders?: WaStoreCacheProviderSelection;
103
- readonly cacheTtlMs?: WaStoreCacheTtlSelection;
104
- readonly custom?: WaCreateStoreCustomProviders;
105
- readonly customCache?: WaCreateStoreCustomCacheProviders;
113
+ readonly privacyTokens?: number;
106
114
  }
@@ -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;
@@ -15,7 +16,6 @@ export declare class WaWebSocket {
15
16
  setHandlers(handlers: WaSocketHandlers): void;
16
17
  isOpen(): boolean;
17
18
  isConnecting(): boolean;
18
- getReadyState(): number;
19
19
  open(): Promise<SocketOpenInfo>;
20
20
  close(code?: number, reason?: string): Promise<SocketCloseInfo | null>;
21
21
  send(data: string | ArrayBuffer | Uint8Array): Promise<void>;
@@ -17,33 +17,3 @@ export declare const NIBBLE_ALPHABET: readonly string[];
17
17
  export declare const HEX_ALPHABET: readonly string[];
18
18
  export declare const SINGLE_BYTE_TOKEN_MAP: ReadonlyMap<string, number>;
19
19
  export declare const DICTIONARY_TOKEN_MAPS: readonly ReadonlyMap<string, number>[];
20
- export declare const WAP_ENCODE_CONSTANTS: Readonly<{
21
- LIST_EMPTY: 0;
22
- LIST_8: 248;
23
- LIST_16: 249;
24
- JID_PAIR: 250;
25
- HEX_8: 251;
26
- BINARY_8: 252;
27
- BINARY_20: 253;
28
- BINARY_32: 254;
29
- NIBBLE_8: 255;
30
- DICTIONARY_0: 236;
31
- DICTIONARY_3: 239;
32
- }>;
33
- export declare const WAP_DECODE_CONSTANTS: Readonly<{
34
- LIST_EMPTY: 0;
35
- LIST_8: 248;
36
- LIST_16: 249;
37
- JID_PAIR: 250;
38
- JID_FB: 246;
39
- JID_INTEROP: 245;
40
- JID_U: 247;
41
- HEX_8: 251;
42
- BINARY_8: 252;
43
- BINARY_20: 253;
44
- BINARY_32: 254;
45
- NIBBLE_8: 255;
46
- DICTIONARY_0: 236;
47
- DICTIONARY_3: 239;
48
- STREAM_END: 2;
49
- }>;
@@ -1,4 +1,3 @@
1
1
  export * from '../binary/tokens';
2
2
  export * from '../binary/encoder';
3
3
  export * from '../binary/decoder';
4
- export { WAP_DECODE_CONSTANTS as WapDecodeConstants, WAP_ENCODE_CONSTANTS as WapEncodeConstants } from '../binary/constants';
@@ -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,24 +5,27 @@ 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;
14
- private stanzaPrefix;
15
- private stanzaCounter;
15
+ private readonly mobileIqIdFormat;
16
+ private idGenerator;
17
+ private idGeneratorReady;
16
18
  private readonly pendingQueries;
17
19
  constructor(options: WaNodeOrchestratorOptions);
18
20
  hasPending(): boolean;
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
- private getStanzaPrefix;
26
- private generateStanzaPrefix;
29
+ private getIdGenerator;
27
30
  }
28
31
  export {};
@@ -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,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,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,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;
@@ -8,9 +8,13 @@ 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
  readonly reportingNode?: BinaryNode;
15
+ readonly privacyTokenNode?: BinaryNode;
16
+ readonly metaNode?: BinaryNode;
17
+ readonly mediatype?: string;
14
18
  };
15
19
  type GroupMessageFanoutInput = DirectMessageFanoutInput & {
16
20
  readonly phash?: string;
@@ -27,15 +31,12 @@ type GroupRetryMessageInput = {
27
31
  readonly addressingMode: 'pn' | 'lid';
28
32
  readonly encType: 'msg' | 'pkmsg';
29
33
  readonly ciphertext: Uint8Array;
34
+ readonly retryCount: number;
30
35
  readonly deviceIdentity?: Uint8Array;
36
+ readonly mediatype?: string;
31
37
  };
32
- export declare function buildDirectMessageFanoutNode(input: DirectMessageFanoutInput): BinaryNode;
38
+ export declare function buildDirectMessageFanoutNode(input: GroupMessageFanoutInput): BinaryNode;
33
39
  export declare function buildGroupSenderKeyMessageNode(input: GroupSenderKeyMessageInput): BinaryNode;
34
- export declare function buildGroupDirectMessageNode(input: GroupMessageFanoutInput): BinaryNode;
35
- export declare function buildInboundMessageAckNode(messageNode: BinaryNode, id: string, to: string, meJid: string | null | undefined): BinaryNode;
36
- export declare function buildInboundDeliveryReceiptNode(messageNode: BinaryNode, id: string, to: string): BinaryNode;
37
- export declare function buildInboundRetryReceiptNode(messageNode: BinaryNode, id: string, to: string, meJid?: string | null, retryCount?: number): BinaryNode;
38
- export declare function buildInboundRetryReceiptAckNode(receiptNode: BinaryNode): BinaryNode;
39
- export declare function buildInboundReceiptAckNode(receiptNode: BinaryNode): BinaryNode;
40
40
  export declare function buildGroupRetryMessageNode(input: GroupRetryMessageInput): BinaryNode;
41
+ export declare function buildMetaNode(attrs: Record<string, string>): BinaryNode;
41
42
  export {};
@@ -0,0 +1,2 @@
1
+ import type { BinaryNode } from '../../types';
2
+ export declare function buildOfflineBatchNode(count: number): BinaryNode;
@@ -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;
@@ -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;
@@ -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[];
@@ -5,7 +5,6 @@ export declare function buildRetryReceiptNode(input: {
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;
@@ -1,4 +1,9 @@
1
1
  import type { BinaryNode } from '../types';
2
+ export interface NodeIdGenerator {
3
+ readonly prefix: string;
4
+ next(): string;
5
+ nextSystem?(): string;
6
+ }
2
7
  export declare function getNodeChildren(node: BinaryNode): readonly BinaryNode[];
3
8
  export declare function findNodeChild(node: BinaryNode, tag: string): BinaryNode | undefined;
4
9
  export declare function getFirstNodeChild(node: BinaryNode): BinaryNode | undefined;
@@ -12,5 +17,8 @@ export declare function findNodeChildrenByTags<const TTags extends readonly stri
12
17
  };
13
18
  export declare function hasNodeChild(node: BinaryNode, tag: string): boolean;
14
19
  export declare function decodeNodeContentUtf8OrBytes(value: BinaryNode['content'], field: string): Uint8Array;
20
+ export declare function getNodeTextContent(node: BinaryNode): string | undefined;
15
21
  export declare function decodeNodeContentBase64OrBytes(value: BinaryNode['content'], field: string): Uint8Array;
16
22
  export declare function formatNodeIdPrefixFromSeed(seed: Uint8Array): string;
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>;