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
@@ -1,10 +1,12 @@
1
1
  export { WaClient } from '@client';
2
- export type { WaClientEventMap, WaClientOptions, WaHistorySyncChunkEvent, WaHistorySyncOptions } from '@client';
2
+ export type { WaClientEventMap, WaClientOptions, WaClientProxyOptions, WaHistorySyncChunkEvent, WaHistorySyncOptions, WaWriteBehindOptions } from '@client';
3
+ export type { WaBlocklistResult, WaPrivacyCoordinator, WaPrivacyDisallowedListResult, WaPrivacySettings } from './client/coordinators/WaPrivacyCoordinator';
3
4
  export { ConsoleLogger } from './infra/log/ConsoleLogger';
4
5
  export { PinoLogger, createPinoLogger } from './infra/log/PinoLogger';
5
6
  export type { PinoLoggerOptions } from './infra/log/PinoLogger';
6
7
  export type { Logger, LogLevel } from './infra/log/types';
7
8
  export { createStore } from '@store';
8
- export type { WaAppStateCollectionStoreState, WaAppStateStore, WaAuthStore, WaContactStore, WaCreateStoreCustomCacheProviders, WaCreateStoreCustomProviders, WaCreateStoreOptions, WaDeviceListSnapshot, WaDeviceListStore, WaMessageStore, WaParticipantsSnapshot, WaParticipantsStore, WaRetryStore, WaSenderKeyStore, WaSignalStore, WaSqliteDriver, WaSqliteStorageOptions, WaStoredContactRecord, WaStoredMessageRecord, WaStoredThreadRecord, WaStore, WaStoreCacheProviderSelection, WaStoreCacheTtlSelection, WaStoreDomainValueOrFactory, WaStoreProviderSelection, WaStoreSession, WaThreadStore } from '@store';
9
- export { getLoginIdentity, getWaCompanionPlatformId, getWaMediaHkdfInfo, isGroupJid, normalizeDeviceJid, normalizeRecipientJid, parsePhoneJid, parseSignalAddressFromJid, splitJid, toUserJid, WA_ACCOUNT_SYNC_PROTOCOLS, WA_APP_STATE_COLLECTIONS, WA_APP_STATE_COLLECTION_STATES, WA_APP_STATE_ERROR_CODES, WA_APP_STATE_KDF_INFO, WA_APP_STATE_KEY_TYPES, WA_APP_STATE_SYNC_DATA_TYPE, WA_BROWSERS, WA_COMPANION_PLATFORM_IDS, WA_DEFAULTS, WA_DIRTY_PROTOCOLS, WA_DIRTY_TYPES, WA_DISCONNECT_REASONS, WA_IQ_TYPES, WA_LOGOUT_REASONS, WA_MESSAGE_TAGS, WA_MESSAGE_TYPES, WA_MEDIA_HKDF_INFO, WA_NODE_TAGS, WA_PAIRING_KDF_INFO, WA_PREVIEW_MEDIA_HKDF_INFO, WA_READY_STATES, WA_RETRYABLE_ACK_CODES, WA_SIGNALING, WA_STREAM_SIGNALING, WA_SUPPORTED_DIRTY_TYPES, WA_XMLNS } from '@protocol';
9
+ export type { WaAppStateCollectionStoreState, WaAppStateStore, WaAuthStore, WaContactStore, WaCreateStoreOptions, WaDeviceListSnapshot, WaDeviceListStore, WaMessageStore, WaParticipantsSnapshot, WaParticipantsStore, WaRetryStore, WaSenderKeyStore, WaSignalStore, WaStoredContactRecord, WaStoredMessageRecord, WaStoredThreadRecord, WaStore, WaStoreBackend, WaStoreSession, WaThreadStore } from '@store';
10
+ export { getLoginIdentity, getWaCompanionPlatformId, getWaMediaHkdfInfo, isGroupJid, normalizeDeviceJid, normalizeRecipientJid, parsePhoneJid, parseSignalAddressFromJid, splitJid, toUserJid, WA_ACCOUNT_SYNC_PROTOCOLS, WA_APP_STATE_COLLECTIONS, WA_APP_STATE_COLLECTION_STATES, WA_APP_STATE_ERROR_CODES, WA_APP_STATE_KDF_INFO, WA_APP_STATE_KEY_TYPES, WA_APP_STATE_SYNC_DATA_TYPE, WA_BROWSERS, WA_COMPANION_PLATFORM_IDS, WA_DEFAULTS, WA_DIRTY_PROTOCOLS, WA_DIRTY_TYPES, WA_DISCONNECT_REASONS, WA_IQ_TYPES, WA_LOGOUT_REASONS, WA_MESSAGE_TAGS, WA_MESSAGE_TYPES, WA_MEDIA_HKDF_INFO, WA_NODE_TAGS, WA_PAIRING_KDF_INFO, WA_PREVIEW_MEDIA_HKDF_INFO, WA_READY_STATES, WA_RETRYABLE_ACK_CODES, WA_SIGNALING, WA_STREAM_SIGNALING, WA_SUPPORTED_DIRTY_TYPES, WA_PRIVACY_CATEGORIES, WA_PRIVACY_CATEGORY_TO_SETTING, WA_PRIVACY_DISALLOWED_LIST_CATEGORIES, WA_PRIVACY_SETTING_TO_CATEGORY, WA_PRIVACY_TAGS, WA_PRIVACY_VALUES, WA_XMLNS } from '@protocol';
11
+ export type { WaPrivacyCategory, WaPrivacySettingName, WaPrivacyValue } from '@protocol';
10
12
  export { proto } from '.';
@@ -1,11 +1,12 @@
1
1
  import type { LogLevel, Logger } from '../log/types';
2
2
  export declare class ConsoleLogger implements Logger {
3
3
  readonly level: LogLevel;
4
+ private readonly minLevelPriority;
4
5
  constructor(level?: LogLevel);
5
6
  trace(message: string, context?: Record<string, unknown>): void;
6
7
  debug(message: string, context?: Record<string, unknown>): void;
7
8
  info(message: string, context?: Record<string, unknown>): void;
8
9
  warn(message: string, context?: Record<string, unknown>): void;
9
10
  error(message: string, context?: Record<string, unknown>): void;
10
- private canLog;
11
+ private write;
11
12
  }
@@ -24,7 +24,7 @@ export declare class PinoLogger implements Logger {
24
24
  info(message: string, context?: Readonly<Record<string, unknown>>): void;
25
25
  warn(message: string, context?: Readonly<Record<string, unknown>>): void;
26
26
  error(message: string, context?: Readonly<Record<string, unknown>>): void;
27
- private writeLog;
27
+ private write;
28
28
  }
29
29
  export declare function createPinoLogger(options?: PinoLoggerOptions): Promise<PinoLogger>;
30
30
  export {};
@@ -7,3 +7,4 @@ export interface Logger {
7
7
  warn(message: string, context?: Readonly<Record<string, unknown>>): void;
8
8
  error(message: string, context?: Readonly<Record<string, unknown>>): void;
9
9
  }
10
+ export declare function createNoopLogger(level?: LogLevel): Logger;
@@ -0,0 +1,58 @@
1
+ export interface BackgroundQueueOptions<K extends string, V> {
2
+ readonly coalesce?: (previous: V, incoming: V, key: K) => V;
3
+ readonly maxPendingKeys?: number;
4
+ readonly maxWriteConcurrency?: number;
5
+ readonly flushTimeoutMs?: number;
6
+ readonly onError?: (key: K, error: unknown, attempt: number) => void;
7
+ readonly onPressure?: (pendingKeys: number) => void;
8
+ readonly onDiscard?: (key: K, value: V) => void;
9
+ }
10
+ export interface BackgroundQueueFlushResult {
11
+ readonly flushed: number;
12
+ readonly remaining: number;
13
+ }
14
+ export declare class BackgroundQueue<K extends string, V> {
15
+ private readonly writer;
16
+ private readonly coalesce;
17
+ private readonly maxPendingKeys;
18
+ private readonly maxWriteConcurrency;
19
+ private readonly flushTimeoutMs;
20
+ private readonly onError?;
21
+ private readonly onPressure?;
22
+ private readonly onDiscard?;
23
+ private readonly pendingByKey;
24
+ private readonly retryTimersByKey;
25
+ private readonly stateWaiters;
26
+ private drainingPromise;
27
+ private inFlight;
28
+ private flushedCount;
29
+ private shutdownRequested;
30
+ private retryDisabled;
31
+ constructor(writer: (key: K, value: V) => Promise<void>, options?: BackgroundQueueOptions<K, V>);
32
+ enqueue(key: K, value: V): void;
33
+ enqueueAsync(key: K, value: V): Promise<void>;
34
+ private waitForCapacity;
35
+ private addPendingEntry;
36
+ private detachRetryEntry;
37
+ flush(timeoutMs?: number): Promise<BackgroundQueueFlushResult>;
38
+ destroy(timeoutMs?: number): Promise<BackgroundQueueFlushResult>;
39
+ private ensureDrain;
40
+ private drainLoop;
41
+ private takeBatch;
42
+ private processEntry;
43
+ private takeNext;
44
+ private mergeForRetry;
45
+ private retryDelayMs;
46
+ private scheduleRetry;
47
+ private resolveEntry;
48
+ private discardEntry;
49
+ private discardPending;
50
+ private remaining;
51
+ private trackedKeys;
52
+ private notifyStateChange;
53
+ private waitForStateChange;
54
+ private removeStateWaiter;
55
+ private invokeOnError;
56
+ private invokeOnPressure;
57
+ private invokeOnDiscard;
58
+ }
@@ -10,10 +10,10 @@ export declare class BoundedTaskQueue {
10
10
  private head;
11
11
  private running;
12
12
  constructor(maxQueueSize?: number, maxConcurrency?: number);
13
+ private readonly settleTask;
13
14
  enqueue<T>(task: Task<T>): Promise<T>;
14
15
  pending(): number;
15
16
  inFlight(): number;
16
17
  private drain;
17
- private compactIfNeeded;
18
18
  }
19
19
  export {};
@@ -0,0 +1,4 @@
1
+ export declare class PromiseDedup {
2
+ private readonly inFlight;
3
+ run<T>(key: string, task: () => Promise<T>): Promise<T>;
4
+ }
@@ -0,0 +1,17 @@
1
+ type SharedExclusiveTask<T> = () => Promise<T>;
2
+ export declare class SharedExclusiveGate {
3
+ private activeShared;
4
+ private pendingExclusive;
5
+ private exclusiveActive;
6
+ private closed;
7
+ private readonly waiters;
8
+ runShared<T>(task: SharedExclusiveTask<T>): Promise<T>;
9
+ private runSharedSlow;
10
+ runExclusive<T>(task: SharedExclusiveTask<T>): Promise<T>;
11
+ close(): Promise<void>;
12
+ private acquireShared;
13
+ private acquireExclusive;
14
+ private notifyStateChange;
15
+ private waitForStateChange;
16
+ }
17
+ export {};
@@ -0,0 +1,10 @@
1
+ type StoreTask<T> = () => Promise<T>;
2
+ export declare class StoreLock {
3
+ private readonly chains;
4
+ private closed;
5
+ run<T>(key: string, task: StoreTask<T>): Promise<T>;
6
+ private runInternal;
7
+ runMany<T>(keys: readonly string[], task: StoreTask<T>): Promise<T>;
8
+ shutdown(): Promise<void>;
9
+ }
10
+ export {};
@@ -1,12 +1,13 @@
1
1
  import type { Readable } from 'node:stream';
2
- import type { MediaCryptoType, WaMediaDecryptReadableOptions, WaMediaDecryptionResult, WaMediaDerivedKeys, WaMediaEncryptionResult, WaMediaReadableDecryptionResult, WaMediaReadableEncryptionResult } from './types';
2
+ import type { MediaCryptoType, WaMediaDecryptReadableOptions, WaMediaDecryptionResult, WaMediaDerivedKeys, WaMediaEncryptionResult, WaMediaFileEncryptionResult, WaMediaReadableDecryptionResult, WaMediaReadableEncryptionResult } from './types';
3
3
  export declare class WaMediaCrypto {
4
4
  static generateMediaKey(): Promise<Uint8Array>;
5
5
  static deriveKeys(mediaType: MediaCryptoType, mediaKey: Uint8Array): Promise<WaMediaDerivedKeys>;
6
6
  static encryptBytes(mediaType: MediaCryptoType, mediaKey: Uint8Array, plaintext: Uint8Array): Promise<WaMediaEncryptionResult>;
7
7
  static decryptBytes(mediaType: MediaCryptoType, mediaKey: Uint8Array, ciphertextHmac: Uint8Array, expectedFileSha256?: Uint8Array, expectedFileEncSha256?: Uint8Array): Promise<WaMediaDecryptionResult>;
8
8
  static encryptReadable(mediaType: MediaCryptoType, mediaKey: Uint8Array, plaintext: Readable): Promise<WaMediaReadableEncryptionResult>;
9
- static decryptReadableToBytes(encrypted: Readable, options: WaMediaDecryptReadableOptions): Promise<WaMediaDecryptionResult>;
9
+ static encryptToFile(mediaType: MediaCryptoType, mediaKey: Uint8Array, plaintext: Readable): Promise<WaMediaFileEncryptionResult>;
10
+ static cleanupEncryptedFile(filePath: string): Promise<void>;
10
11
  static decryptReadable(encrypted: Readable, options: WaMediaDecryptReadableOptions): Promise<WaMediaReadableDecryptionResult>;
11
12
  static encryptedLength(plaintextLength: number): number;
12
13
  }
@@ -1,10 +1,12 @@
1
1
  import { Readable } from 'node:stream';
2
- import type { MediaCryptoType, WaMediaTransferClientOptions } from './types';
2
+ import type { MediaCryptoType, WaMediaReadableDecryptionResult, WaMediaTransferClientOptions } from './types';
3
3
  interface StreamDownloadRequest {
4
4
  readonly url?: string;
5
5
  readonly directPath?: string;
6
6
  readonly hosts?: readonly string[];
7
7
  readonly headers?: Readonly<Record<string, string>>;
8
+ readonly dispatcher?: WaMediaTransferClientOptions['defaultDownloadDispatcher'];
9
+ readonly agent?: WaMediaTransferClientOptions['defaultDownloadAgent'];
8
10
  readonly timeoutMs?: number;
9
11
  readonly signal?: AbortSignal;
10
12
  readonly maxBytes?: number;
@@ -35,6 +37,7 @@ interface EncryptedUploadResult {
35
37
  readonly mediaKey: Uint8Array;
36
38
  readonly fileSha256: Uint8Array;
37
39
  readonly fileEncSha256: Uint8Array;
40
+ readonly plaintextLength: number;
38
41
  }
39
42
  interface EncryptedDownloadRequest extends StreamDownloadRequest {
40
43
  readonly mediaType: MediaCryptoType;
@@ -42,40 +45,38 @@ interface EncryptedDownloadRequest extends StreamDownloadRequest {
42
45
  readonly fileSha256?: Uint8Array;
43
46
  readonly fileEncSha256?: Uint8Array;
44
47
  }
45
- interface EncryptedDownloadStream {
46
- readonly plaintext: Readable;
47
- readonly metadata: Promise<{
48
- readonly fileSha256: Uint8Array;
49
- readonly fileEncSha256: Uint8Array;
50
- }>;
51
- }
52
48
  export declare class WaMediaTransferClient {
53
49
  private readonly logger?;
54
50
  private readonly defaultHosts;
55
51
  private readonly defaultTimeoutMs;
56
52
  private readonly defaultMaxReadBytes;
57
53
  private readonly defaultHeaders;
54
+ private readonly defaultUploadDispatcher;
55
+ private readonly defaultDownloadDispatcher;
56
+ private readonly defaultUploadAgent;
57
+ private readonly defaultDownloadAgent;
58
+ private gotModulePromise;
58
59
  constructor(options?: WaMediaTransferClientOptions);
59
60
  downloadStream(request: StreamDownloadRequest): Promise<StreamTransferResponse>;
60
61
  downloadBytes(request: StreamDownloadRequest): Promise<Uint8Array>;
61
62
  uploadStream(request: StreamUploadRequest): Promise<StreamTransferResponse>;
62
63
  uploadEncrypted(request: EncryptedUploadRequest): Promise<EncryptedUploadResult>;
63
64
  downloadAndDecrypt(request: EncryptedDownloadRequest): Promise<Uint8Array>;
64
- downloadAndDecryptStream(request: EncryptedDownloadRequest): Promise<EncryptedDownloadStream>;
65
+ downloadAndDecryptStream(request: EncryptedDownloadRequest): Promise<WaMediaReadableDecryptionResult>;
65
66
  readResponseBytes(response: StreamTransferResponse, maxBytes?: number): Promise<Uint8Array>;
67
+ private transferRequest;
68
+ private fetchWithDispatcher;
69
+ private toFetchTransferResponse;
70
+ private gotWithAgent;
71
+ private loadGotModule;
72
+ private toGotTransferResponse;
66
73
  private resolveTransferRequest;
67
- private executeTransfer;
68
74
  private prepareEncryptedUpload;
69
75
  private assertSuccessfulResponse;
70
76
  private requireResponseBody;
71
77
  private resolveUrls;
72
- private mergeHeaders;
73
- private readAllBytesWithLimit;
74
78
  private fetchWithFallback;
75
79
  private createAbortContext;
76
- private toResponse;
77
- private headersToRecord;
78
- private cancelWebBody;
79
80
  private drainBody;
80
81
  }
81
82
  export {};
@@ -7,4 +7,4 @@ export declare const ENC_KEY_END = 48;
7
7
  export declare const MAC_KEY_START = 48;
8
8
  export declare const MAC_KEY_END = 80;
9
9
  export declare const HMAC_TRUNCATED_SIZE = 10;
10
- export declare const MEDIA_UPLOAD_PATHS: Readonly<Record<'image' | 'video' | 'audio' | 'document' | 'sticker' | 'gif' | 'ptt', string>>;
10
+ export declare const MEDIA_UPLOAD_PATHS: Readonly<Record<'image' | 'video' | 'audio' | 'document' | 'sticker' | 'gif' | 'ptt' | 'ptv', string>>;
@@ -1,4 +1,4 @@
1
1
  export { WaMediaTransferClient } from './WaMediaTransferClient';
2
2
  export { parseMediaConnResponse } from './conn';
3
- export type { WaMediaConn, WaMediaConnHost, WaMediaTransferClientOptions, WaMediaDerivedKeys, WaMediaEncryptionResult, WaMediaDecryptionResult, WaMediaReadableEncryptionResult, WaMediaReadableDecryptionResult } from './types';
3
+ export type { WaMediaConn } from './types';
4
4
  export { WaMediaCrypto } from './WaMediaCrypto';
@@ -1,7 +1,8 @@
1
1
  import type { Readable } from 'node:stream';
2
2
  import type { Logger } from '../infra/log/types';
3
- export type MediaKind = 'image' | 'video' | 'audio' | 'document' | 'sticker';
4
- export type MediaCryptoType = MediaKind | 'ptt' | 'gif' | 'ptv' | 'history' | 'md-app-state';
3
+ import type { WaProxyAgent, WaProxyDispatcher } from '../transport/types';
4
+ export type MediaKind = 'image' | 'video' | 'audio' | 'document' | 'sticker' | 'ptv';
5
+ export type MediaCryptoType = MediaKind | 'ptt' | 'gif' | 'history' | 'md-app-state';
5
6
  export interface WaMediaConnHost {
6
7
  readonly hostname: string;
7
8
  readonly isFallback: boolean;
@@ -17,6 +18,10 @@ export interface WaMediaTransferClientOptions {
17
18
  readonly defaultTimeoutMs?: number;
18
19
  readonly defaultMaxReadBytes?: number;
19
20
  readonly defaultHeaders?: Readonly<Record<string, string>>;
21
+ readonly defaultUploadDispatcher?: WaProxyDispatcher;
22
+ readonly defaultDownloadDispatcher?: WaProxyDispatcher;
23
+ readonly defaultUploadAgent?: WaProxyAgent;
24
+ readonly defaultDownloadAgent?: WaProxyAgent;
20
25
  }
21
26
  export interface WaMediaDerivedKeys {
22
27
  readonly iv: Uint8Array;
@@ -39,6 +44,7 @@ export interface WaMediaReadableEncryptionResult {
39
44
  readonly metadata: Promise<{
40
45
  readonly fileSha256: Uint8Array;
41
46
  readonly fileEncSha256: Uint8Array;
47
+ readonly plaintextLength: number;
42
48
  }>;
43
49
  }
44
50
  export interface WaMediaReadableDecryptionResult {
@@ -48,6 +54,13 @@ export interface WaMediaReadableDecryptionResult {
48
54
  readonly fileEncSha256: Uint8Array;
49
55
  }>;
50
56
  }
57
+ export interface WaMediaFileEncryptionResult {
58
+ readonly filePath: string;
59
+ readonly fileSize: number;
60
+ readonly fileSha256: Uint8Array;
61
+ readonly fileEncSha256: Uint8Array;
62
+ readonly plaintextLength: number;
63
+ }
51
64
  export interface WaMediaDecryptReadableOptions {
52
65
  readonly mediaType: MediaCryptoType;
53
66
  readonly mediaKey: Uint8Array;
@@ -0,0 +1,25 @@
1
+ import { WA_USE_CASE_SECRET_MODIFICATION_TYPES } from './use-case-secret';
2
+ type WaAddonBytes = Uint8Array | ArrayBuffer | ArrayBufferView;
3
+ export declare function shouldUseAddonAdditionalData(modificationType: (typeof WA_USE_CASE_SECRET_MODIFICATION_TYPES)[keyof typeof WA_USE_CASE_SECRET_MODIFICATION_TYPES]): boolean;
4
+ export declare function buildAddonAdditionalData(stanzaId: string, addOnSenderJid: string): Uint8Array;
5
+ export declare function encryptAddonPayload(input: {
6
+ readonly messageSecret: WaAddonBytes;
7
+ readonly stanzaId: string;
8
+ readonly parentMsgOriginalSender: string;
9
+ readonly modificationSender: string;
10
+ readonly modificationType: (typeof WA_USE_CASE_SECRET_MODIFICATION_TYPES)[keyof typeof WA_USE_CASE_SECRET_MODIFICATION_TYPES];
11
+ readonly payload: WaAddonBytes;
12
+ readonly iv: WaAddonBytes;
13
+ readonly additionalData?: WaAddonBytes;
14
+ }): Promise<Uint8Array>;
15
+ export declare function decryptAddonPayload(input: {
16
+ readonly messageSecret: WaAddonBytes;
17
+ readonly stanzaId: string;
18
+ readonly parentMsgOriginalSender: string;
19
+ readonly modificationSender: string;
20
+ readonly modificationType: (typeof WA_USE_CASE_SECRET_MODIFICATION_TYPES)[keyof typeof WA_USE_CASE_SECRET_MODIFICATION_TYPES];
21
+ readonly ciphertext: WaAddonBytes;
22
+ readonly iv: WaAddonBytes;
23
+ readonly additionalData?: WaAddonBytes;
24
+ }): Promise<Uint8Array>;
25
+ export {};
@@ -2,3 +2,11 @@ import type { WaSendMediaMessage } from './types';
2
2
  import type { Proto } from '..';
3
3
  export declare function isSendMediaMessage(content: unknown): content is WaSendMediaMessage;
4
4
  export declare function resolveMessageTypeAttr(message: Proto.IMessage): string;
5
+ export declare function resolveEditAttr(message: Proto.IMessage, subtype?: string): string | null;
6
+ export declare function resolveEncMediaType(message: Proto.IMessage): string | null;
7
+ export interface MessageMetaAttrs {
8
+ readonly polltype?: string;
9
+ readonly event_type?: string;
10
+ readonly view_once?: string;
11
+ }
12
+ export declare function resolveMetaAttrs(message: Proto.IMessage): MessageMetaAttrs | null;
@@ -0,0 +1,13 @@
1
+ import type { Proto } from '..';
2
+ import type { SignalAddress } from '../signal/types';
3
+ import type { WaSignalStore } from '../store/contracts/signal.store';
4
+ export interface IcdcMeta {
5
+ readonly keyHash: Uint8Array;
6
+ readonly timestamp: number | undefined;
7
+ }
8
+ export declare function computeDeviceKeyHash(identityKeys: readonly Uint8Array[]): Promise<Uint8Array>;
9
+ export declare function resolveIcdcMeta(deviceJids: readonly string[], signalStore: WaSignalStore, updatedAtMs: number | undefined, localIdentity?: {
10
+ readonly address: SignalAddress;
11
+ readonly pubKey: Uint8Array;
12
+ }): Promise<IcdcMeta | null>;
13
+ export declare function injectDeviceListMetadata(message: Proto.IMessage, senderIcdc: IcdcMeta | null, recipientIcdc: IcdcMeta | null): Proto.IMessage;
@@ -1,2 +1,4 @@
1
1
  export { WaMessageClient } from './WaMessageClient';
2
+ export * from './addon-crypto';
2
3
  export * from './types';
4
+ export * from './use-case-secret';
@@ -0,0 +1,18 @@
1
+ import { type Proto } from '..';
2
+ import type { BinaryNode } from '../transport/types';
3
+ export declare const WA_REPORTING_TOKEN_VERSION = 2;
4
+ export interface BuildReportingTokenNodeInput {
5
+ readonly message: Proto.IMessage;
6
+ readonly stanzaId: string;
7
+ readonly senderUserJid: string;
8
+ readonly remoteJid: string;
9
+ readonly version?: number;
10
+ }
11
+ export interface BuildReportingTokenArtifactsResult {
12
+ readonly node: BinaryNode;
13
+ readonly version: number;
14
+ readonly reportingToken: Uint8Array;
15
+ readonly reportingTokenContent: Uint8Array;
16
+ readonly reportingTokenKey: Uint8Array;
17
+ }
18
+ export declare function buildReportingTokenArtifacts(input: BuildReportingTokenNodeInput): Promise<BuildReportingTokenArtifactsResult | null>;
@@ -1,4 +1,4 @@
1
- import type { MediaKind } from '../media/types';
1
+ import type { Readable } from 'node:stream';
2
2
  import type { Proto } from '..';
3
3
  import type { BinaryNode } from '../transport/types';
4
4
  export interface WaMessagePublishOptions {
@@ -21,18 +21,48 @@ export interface WaMessagePublishResult {
21
21
  readonly ackNode: BinaryNode;
22
22
  readonly ack: WaMessageAckMetadata;
23
23
  }
24
- export interface WaSendMediaMessage {
25
- readonly type: MediaKind;
26
- readonly media: Uint8Array | ArrayBuffer;
24
+ type MediaInput = Uint8Array | ArrayBuffer | Readable;
25
+ interface WaSendMediaBase {
26
+ readonly media: MediaInput;
27
27
  readonly mimetype: string;
28
+ readonly fileLength?: number;
29
+ }
30
+ interface WaSendImageMessage extends WaSendMediaBase {
31
+ readonly type: 'image';
32
+ readonly caption?: string;
33
+ readonly width?: number;
34
+ readonly height?: number;
35
+ }
36
+ interface WaSendVideoMessage extends WaSendMediaBase {
37
+ readonly type: 'video';
28
38
  readonly caption?: string;
29
- readonly fileName?: string;
30
- readonly ptt?: boolean;
31
39
  readonly gifPlayback?: boolean;
32
40
  readonly seconds?: number;
33
41
  readonly width?: number;
34
42
  readonly height?: number;
35
43
  }
44
+ interface WaSendPtvMessage extends WaSendMediaBase {
45
+ readonly type: 'ptv';
46
+ readonly seconds?: number;
47
+ readonly width?: number;
48
+ readonly height?: number;
49
+ }
50
+ interface WaSendAudioMessage extends WaSendMediaBase {
51
+ readonly type: 'audio';
52
+ readonly ptt?: boolean;
53
+ readonly seconds?: number;
54
+ }
55
+ interface WaSendDocumentMessage extends WaSendMediaBase {
56
+ readonly type: 'document';
57
+ readonly caption?: string;
58
+ readonly fileName?: string;
59
+ }
60
+ interface WaSendStickerMessage extends WaSendMediaBase {
61
+ readonly type: 'sticker';
62
+ readonly width?: number;
63
+ readonly height?: number;
64
+ }
65
+ export type WaSendMediaMessage = WaSendImageMessage | WaSendVideoMessage | WaSendPtvMessage | WaSendAudioMessage | WaSendDocumentMessage | WaSendStickerMessage;
36
66
  export type WaSendMessageContent = string | Proto.IMessage | WaSendMediaMessage;
37
67
  export interface WaEncryptedMessageInput {
38
68
  readonly to: string;
@@ -43,16 +73,25 @@ export interface WaEncryptedMessageInput {
43
73
  readonly encCount?: number;
44
74
  readonly id?: string;
45
75
  readonly type?: string;
76
+ readonly edit?: string;
77
+ readonly mediatype?: string;
46
78
  readonly category?: string;
47
79
  readonly pushPriority?: string;
48
80
  readonly participant?: string;
49
81
  readonly deviceFanout?: string;
82
+ readonly metaNode?: BinaryNode;
50
83
  }
51
84
  export interface WaSendReceiptInput {
52
85
  readonly to: string;
53
86
  readonly id: string;
54
87
  readonly type?: string;
55
88
  readonly participant?: string;
89
+ readonly recipient?: string;
90
+ readonly category?: string;
56
91
  readonly from?: string;
57
92
  readonly t?: string;
93
+ readonly peerParticipantPn?: string;
94
+ readonly listIds?: readonly string[];
95
+ readonly content?: readonly BinaryNode[];
58
96
  }
97
+ export {};
@@ -0,0 +1,20 @@
1
+ import type { Proto } from '..';
2
+ export declare const WA_MESSAGE_SECRET_BYTES = 32;
3
+ export declare const WA_USE_CASE_SECRET_MODIFICATION_TYPES: Readonly<{
4
+ readonly POLL_VOTE: "Poll Vote";
5
+ readonly ENC_REACTION: "Enc Reaction";
6
+ readonly ENC_COMMENT: "Enc Comment";
7
+ readonly REPORT_TOKEN: "Report Token";
8
+ readonly EVENT_RESPONSE: "Event Response";
9
+ readonly EVENT_EDIT_ENCRYPTED: "Event Edit";
10
+ readonly MESSAGE_EDIT: "Message Edit";
11
+ }>;
12
+ export declare function assertMessageSecret(messageSecret: Uint8Array | ArrayBuffer | ArrayBufferView, context?: string): Uint8Array;
13
+ export declare function ensureMessageSecret(message: Proto.IMessage): Promise<Proto.IMessage>;
14
+ export declare function createUseCaseSecret(input: {
15
+ readonly messageSecret: Uint8Array | ArrayBuffer | ArrayBufferView;
16
+ readonly stanzaId: string;
17
+ readonly parentMsgOriginalSender: string;
18
+ readonly modificationSender: string;
19
+ readonly modificationType: (typeof WA_USE_CASE_SECRET_MODIFICATION_TYPES)[keyof typeof WA_USE_CASE_SECRET_MODIFICATION_TYPES];
20
+ }): Promise<Uint8Array>;
@@ -32,3 +32,50 @@ export declare const WA_APP_STATE_KDF_INFO: Readonly<{
32
32
  readonly MUTATION_KEYS: "WhatsApp Mutation Keys";
33
33
  readonly PATCH_INTEGRITY: "WhatsApp Patch Integrity";
34
34
  }>;
35
+ export declare const WA_APP_STATE_CHAT_MUTATION_SPECS: Readonly<{
36
+ readonly STAR: {
37
+ readonly collection: "regular_high";
38
+ readonly action: "star";
39
+ readonly version: 2;
40
+ };
41
+ readonly MUTE: {
42
+ readonly collection: "regular_high";
43
+ readonly action: "mute";
44
+ readonly version: 2;
45
+ };
46
+ readonly PIN: {
47
+ readonly collection: "regular_low";
48
+ readonly action: "pin_v1";
49
+ readonly version: 5;
50
+ };
51
+ readonly ARCHIVE: {
52
+ readonly collection: "regular_low";
53
+ readonly action: "archive";
54
+ readonly version: 3;
55
+ };
56
+ readonly DELETE_MESSAGE_FOR_ME: {
57
+ readonly collection: "regular_high";
58
+ readonly action: "deleteMessageForMe";
59
+ readonly version: 3;
60
+ };
61
+ readonly MARK_CHAT_AS_READ: {
62
+ readonly collection: "regular_low";
63
+ readonly action: "markChatAsRead";
64
+ readonly version: 3;
65
+ };
66
+ readonly CLEAR_CHAT: {
67
+ readonly collection: "regular_high";
68
+ readonly action: "clearChat";
69
+ readonly version: 6;
70
+ };
71
+ readonly DELETE_CHAT: {
72
+ readonly collection: "regular_high";
73
+ readonly action: "deleteChat";
74
+ readonly version: 6;
75
+ };
76
+ readonly LOCK_CHAT: {
77
+ readonly collection: "regular_low";
78
+ readonly action: "lock";
79
+ readonly version: 7;
80
+ };
81
+ }>;
@@ -1,11 +1,16 @@
1
1
  export { getWaCompanionPlatformId, WA_BROWSERS, WA_COMPANION_PLATFORM_IDS } from './browser';
2
2
  export { WA_SIGNALING, WA_PAIRING_KDF_INFO } from './auth';
3
- export { WA_DISCONNECT_REASONS, WA_LOGOUT_REASONS, WA_READY_STATES, WA_STREAM_SIGNALING } from './stream';
3
+ export { WA_CONNECTION_REASONS, WA_DISCONNECT_REASONS, WA_FAILURE_REASONS, WA_LOGOUT_REASONS, WA_READY_STATES, WA_STREAM_SIGNALING } from './stream';
4
+ export type { WaConnectionCode, WaConnectionOpenReason, WaDisconnectReason, WaFailureReasonCode, WaStreamErrorCode } from './stream';
4
5
  export { WA_IQ_TYPES, WA_NODE_TAGS, WA_XMLNS } from './nodes';
5
- export { WA_MESSAGE_TAGS, WA_MESSAGE_TYPES, WA_RETRYABLE_ACK_CODES } from './message';
6
- export { WA_APP_STATE_COLLECTIONS, WA_APP_STATE_COLLECTION_STATES, WA_APP_STATE_ERROR_CODES, WA_APP_STATE_KDF_INFO, WA_APP_STATE_KEY_TYPES, WA_APP_STATE_SYNC_DATA_TYPE } from './appstate';
6
+ export { WA_EDIT_ATTRS, WA_ENC_MEDIA_TYPES, WA_EVENT_META_TYPES, WA_MESSAGE_TAGS, WA_MESSAGE_TYPES, WA_POLL_META_TYPES, WA_RETRYABLE_ACK_CODES, WA_STANZA_MSG_TYPES } from './message';
7
+ export { WA_APP_STATE_COLLECTIONS, WA_APP_STATE_COLLECTION_STATES, WA_APP_STATE_CHAT_MUTATION_SPECS, WA_APP_STATE_ERROR_CODES, WA_APP_STATE_KDF_INFO, WA_APP_STATE_KEY_TYPES, WA_APP_STATE_SYNC_DATA_TYPE } from './appstate';
7
8
  export { getWaMediaHkdfInfo, WA_MEDIA_HKDF_INFO, WA_PREVIEW_MEDIA_HKDF_INFO } from './media';
8
9
  export { WA_ACCOUNT_SYNC_PROTOCOLS, WA_DIRTY_PROTOCOLS, WA_DIRTY_TYPES, WA_SUPPORTED_DIRTY_TYPES } from './dirty';
9
10
  export { WA_GROUP_NOTIFICATION_TAGS, WA_NOTIFICATION_TYPES } from './notification';
11
+ export { WA_PRIVACY_TOKEN_NOTIFICATION_TYPE, WA_PRIVACY_TOKEN_TAGS, WA_PRIVACY_TOKEN_TYPES, WA_TC_TOKEN_DEFAULTS } from './privacy-token';
12
+ export { WA_PRIVACY_CATEGORIES, WA_PRIVACY_CATEGORY_TO_SETTING, WA_PRIVACY_DISALLOWED_LIST_CATEGORIES, WA_PRIVACY_SETTING_TO_CATEGORY, WA_PRIVACY_TAGS, WA_PRIVACY_VALUES } from './privacy';
13
+ export type { WaPrivacyCategory, WaPrivacySettingName, WaPrivacyValue } from './privacy';
10
14
  export { WA_DEFAULTS } from './defaults';
11
15
  export { WA_GROUP_PARTICIPANT_TYPES, type WaGroupSetting } from './group';
16
+ export { WA_USYNC_CONTEXTS, WA_USYNC_DEFAULTS, WA_USYNC_MODES } from './usync';
@@ -2,6 +2,12 @@ export declare const WA_DEFAULTS: Readonly<{
2
2
  readonly HOST_DOMAIN: "s.whatsapp.net";
3
3
  readonly GROUP_SERVER: "g.us";
4
4
  readonly BROADCAST_SERVER: "broadcast";
5
+ readonly LID_SERVER: "lid";
6
+ readonly HOSTED_SERVER: "hosted";
7
+ readonly HOSTED_LID_SERVER: "hosted.lid";
8
+ readonly HOSTED_DEVICE_ID: 99;
9
+ readonly MSGR_SERVER: "msgr";
10
+ readonly INTEROP_SERVER: "interop";
5
11
  readonly DEVICE_BROWSER: "firefox";
6
12
  readonly DEVICE_PLATFORM: string;
7
13
  readonly CHAT_SOCKET_URLS: readonly ["wss://web.whatsapp.com/ws/chat", "wss://web.whatsapp.com:5222/ws/chat"];
@@ -1,11 +1,2 @@
1
- export { getWaCompanionPlatformId, WA_BROWSERS, WA_COMPANION_PLATFORM_IDS } from './browser';
2
- export { WA_SIGNALING, WA_PAIRING_KDF_INFO } from './auth';
3
- export { WA_DISCONNECT_REASONS, WA_LOGOUT_REASONS, WA_READY_STATES, WA_STREAM_SIGNALING } from './stream';
4
- export { WA_IQ_TYPES, WA_NODE_TAGS, WA_XMLNS } from './nodes';
5
- export { WA_MESSAGE_TAGS, WA_MESSAGE_TYPES, WA_RETRYABLE_ACK_CODES } from './message';
6
- export { WA_APP_STATE_COLLECTIONS, WA_APP_STATE_COLLECTION_STATES, WA_APP_STATE_ERROR_CODES, WA_APP_STATE_KDF_INFO, WA_APP_STATE_KEY_TYPES, WA_APP_STATE_SYNC_DATA_TYPE } from './appstate';
7
- export { getWaMediaHkdfInfo, WA_MEDIA_HKDF_INFO, WA_PREVIEW_MEDIA_HKDF_INFO } from './media';
8
- export { WA_ACCOUNT_SYNC_PROTOCOLS, WA_DIRTY_PROTOCOLS, WA_DIRTY_TYPES, WA_SUPPORTED_DIRTY_TYPES } from './dirty';
9
- export { WA_GROUP_NOTIFICATION_TAGS, WA_NOTIFICATION_TYPES } from './notification';
10
- export { WA_DEFAULTS } from './defaults';
11
- export { getLoginIdentity, isGroupJid, normalizeDeviceJid, normalizeRecipientJid, parsePhoneJid, parseSignalAddressFromJid, splitJid, toUserJid } from './jid';
1
+ export * from './constants';
2
+ export { buildDeviceJid, canonicalizeSignalJid, canonicalizeSignalServer, getLoginIdentity, isHostedDeviceId, isHostedDeviceJid, isHostedServer, isGroupJid, normalizeDeviceJid, normalizeRecipientJid, parsePhoneJid, parseSignalAddressFromJid, splitJid, signalAddressKey, toUserJid } from './jid';
@@ -1,19 +1,36 @@
1
1
  import type { SignalAddress } from '../signal/types';
2
- export interface ParsedJid {
2
+ export declare function splitJid(jid: string): {
3
3
  readonly user: string;
4
4
  readonly server: string;
5
- }
6
- export declare function splitJid(jid: string): ParsedJid;
5
+ };
7
6
  export declare function normalizeRecipientJid(to: string): string;
8
- export declare function isJidType(jid: string, type: string): boolean;
9
7
  export declare function isGroupJid(jid: string): boolean;
10
8
  export declare function isBroadcastJid(jid: string): boolean;
11
9
  export declare function isGroupOrBroadcastJid(jid: string): boolean;
10
+ export interface ParsedJid {
11
+ readonly address: SignalAddress;
12
+ readonly userJid: string;
13
+ readonly normalizedJid: string;
14
+ }
12
15
  export declare function parseSignalAddressFromJid(jid: string): SignalAddress;
13
- export declare function toUserJid(jid: string): string;
16
+ export declare function parseJidFull(jid: string): ParsedJid;
17
+ export declare function canonicalizeSignalServer(server: string, hostDomain?: string): string;
18
+ export declare function canonicalizeSignalJid(jid: string, hostDomain?: string): string;
19
+ export declare function toUserJid(jid: string, options?: {
20
+ readonly canonicalizeSignalServer?: boolean;
21
+ readonly hostDomain?: string;
22
+ }): string;
14
23
  export declare function normalizeDeviceJid(jid: string): string;
24
+ export declare function isHostedDeviceId(deviceId: number): boolean;
25
+ export declare function isHostedServer(server: string): boolean;
26
+ export declare function isHostedDeviceJid(jid: string): boolean;
27
+ export declare function buildDeviceJid(user: string, normalizedServer: string, deviceId: number, options?: {
28
+ readonly rawServer?: string;
29
+ readonly isHosted?: boolean;
30
+ }): string;
15
31
  export declare function getLoginIdentity(meJid: string): {
16
32
  readonly username: number;
17
33
  readonly device: number;
18
34
  };
19
35
  export declare function parsePhoneJid(input: string): string;
36
+ export declare function signalAddressKey(address: SignalAddress): string;