zapo-js 0.2.0 → 1.0.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 (863) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +103 -179
  3. package/dist/appstate/{WaAppStateCrypto.js → crypto/WaAppStateCrypto.js} +79 -62
  4. package/dist/appstate/index.js +8 -7
  5. package/dist/appstate/{encoding.js → parsers/encoding.js} +11 -4
  6. package/dist/appstate/{WaAppStateSyncResponseParser.js → parsers/response-parser.js} +20 -8
  7. package/dist/appstate/{WaAppStateSyncClient.js → sync/WaAppStateSyncClient.js} +246 -88
  8. package/dist/appstate/utils.js +16 -0
  9. package/dist/appstate-spec.js +89 -0
  10. package/dist/auth/WaAuthClient.js +117 -13
  11. package/dist/auth/credentials-flow.js +207 -0
  12. package/dist/auth/pairing/WaPairingFlow.js +53 -47
  13. package/dist/auth/pairing/pairing-code-crypto.js +91 -0
  14. package/dist/client/WaClient.js +369 -460
  15. package/dist/client/WaClientFactory.js +377 -93
  16. package/dist/client/connection/WaConnectionManager.js +31 -11
  17. package/dist/client/coordinators/WaAbPropsCoordinator.js +140 -0
  18. package/dist/client/coordinators/WaAppStateMutationCoordinator.js +663 -143
  19. package/dist/client/coordinators/WaBotCoordinator.js +345 -0
  20. package/dist/client/coordinators/WaBroadcastListCoordinator.js +20 -0
  21. package/dist/client/coordinators/WaBusinessCoordinator.js +81 -180
  22. package/dist/client/coordinators/WaEmailCoordinator.js +64 -0
  23. package/dist/client/coordinators/WaGroupCoordinator.js +529 -52
  24. package/dist/client/coordinators/WaIncomingNodeCoordinator.js +130 -20
  25. package/dist/client/coordinators/WaLowLevelCoordinator.js +41 -0
  26. package/dist/client/coordinators/WaMessageCoordinator.js +365 -0
  27. package/dist/client/coordinators/WaMessageDispatchCoordinator.js +724 -216
  28. package/dist/client/coordinators/WaNewsletterCoordinator.js +18 -0
  29. package/dist/client/coordinators/WaOfflineResumeCoordinator.js +114 -0
  30. package/dist/client/coordinators/WaPassiveTasksCoordinator.js +53 -22
  31. package/dist/client/coordinators/WaPresenceCoordinator.js +21 -0
  32. package/dist/client/coordinators/WaPrivacyCoordinator.js +7 -5
  33. package/dist/client/coordinators/WaProfileCoordinator.js +223 -50
  34. package/dist/client/coordinators/WaRetryCoordinator.js +256 -123
  35. package/dist/client/coordinators/WaStatusCoordinator.js +49 -0
  36. package/dist/client/coordinators/WaStreamControlCoordinator.js +6 -6
  37. package/dist/client/coordinators/WaTrustedContactTokenCoordinator.js +29 -10
  38. package/dist/client/events/abprops.js +43 -0
  39. package/dist/client/events/appstate-mutation.js +133 -0
  40. package/dist/client/events/business.js +375 -0
  41. package/dist/client/events/call.js +58 -0
  42. package/dist/client/events/chatstate.js +23 -0
  43. package/dist/client/events/devices.js +15 -16
  44. package/dist/client/{dirty.js → events/dirty.js} +34 -20
  45. package/dist/client/events/group.js +13 -24
  46. package/dist/client/events/identity.js +2 -1
  47. package/dist/client/events/incoming.js +502 -0
  48. package/dist/client/events/mex-notification.js +181 -0
  49. package/dist/client/events/picture.js +33 -0
  50. package/dist/client/events/presence.js +44 -0
  51. package/dist/client/events/privacy-token.js +1 -2
  52. package/dist/client/events/receipt.js +26 -0
  53. package/dist/client/events/registration.js +42 -0
  54. package/dist/client/media.js +400 -0
  55. package/dist/client/messaging/fanout.js +9 -10
  56. package/dist/client/messaging/{participants.js → group-metadata.js} +73 -35
  57. package/dist/client/messaging/ignore-key.js +132 -0
  58. package/dist/client/messaging/key-protocol.js +3 -17
  59. package/dist/client/messaging/link-preview.js +159 -0
  60. package/dist/client/messaging/messages.js +671 -0
  61. package/dist/client/newsletter/admin.js +165 -0
  62. package/dist/client/newsletter/content.js +253 -0
  63. package/dist/client/newsletter/discovery.js +115 -0
  64. package/dist/client/newsletter/messaging.js +197 -0
  65. package/dist/client/newsletter/mex.js +41 -0
  66. package/dist/client/newsletter/parse.js +217 -0
  67. package/dist/client/persistence/WriteBehindPersistence.js +31 -4
  68. package/dist/client/{history-sync.js → persistence/history-sync.js} +125 -18
  69. package/dist/client/persistence/mailbox.js +104 -0
  70. package/dist/client/tokens/cs-token.js +11 -17
  71. package/dist/crypto/core/hkdf.js +12 -12
  72. package/dist/crypto/core/index.js +9 -8
  73. package/dist/crypto/core/keys.js +1 -8
  74. package/dist/crypto/core/nonce.js +12 -12
  75. package/dist/crypto/core/primitives.js +123 -93
  76. package/dist/crypto/core/random.js +9 -9
  77. package/dist/crypto/core/xeddsa.js +59 -0
  78. package/dist/crypto/curves/Ed25519.js +32 -21
  79. package/dist/crypto/curves/X25519.js +71 -17
  80. package/dist/crypto/curves/constants.js +3 -1
  81. package/dist/crypto/math/constants.js +1 -2
  82. package/dist/crypto/math/mod.js +0 -33
  83. package/dist/esm/appstate/{WaAppStateCrypto.js → crypto/WaAppStateCrypto.js} +72 -55
  84. package/dist/esm/appstate/index.js +5 -5
  85. package/dist/esm/appstate/{encoding.js → parsers/encoding.js} +11 -4
  86. package/dist/esm/appstate/{WaAppStateSyncResponseParser.js → parsers/response-parser.js} +20 -8
  87. package/dist/esm/appstate/{WaAppStateSyncClient.js → sync/WaAppStateSyncClient.js} +235 -76
  88. package/dist/esm/appstate/utils.js +16 -0
  89. package/dist/esm/appstate-spec.js +79 -0
  90. package/dist/esm/auth/WaAuthClient.js +114 -10
  91. package/dist/esm/auth/credentials-flow.js +202 -0
  92. package/dist/esm/auth/pairing/WaPairingFlow.js +52 -46
  93. package/dist/esm/auth/pairing/pairing-code-crypto.js +85 -0
  94. package/dist/esm/client/WaClient.js +372 -463
  95. package/dist/esm/client/WaClientFactory.js +380 -96
  96. package/dist/esm/client/connection/WaConnectionManager.js +31 -11
  97. package/dist/esm/client/coordinators/WaAbPropsCoordinator.js +136 -0
  98. package/dist/esm/client/coordinators/WaAppStateMutationCoordinator.js +665 -145
  99. package/dist/esm/client/coordinators/WaBotCoordinator.js +342 -0
  100. package/dist/esm/client/coordinators/WaBroadcastListCoordinator.js +17 -0
  101. package/dist/esm/client/coordinators/WaBusinessCoordinator.js +78 -177
  102. package/dist/esm/client/coordinators/WaEmailCoordinator.js +61 -0
  103. package/dist/esm/client/coordinators/WaGroupCoordinator.js +532 -55
  104. package/dist/esm/client/coordinators/WaIncomingNodeCoordinator.js +132 -22
  105. package/dist/esm/client/coordinators/WaLowLevelCoordinator.js +38 -0
  106. package/dist/esm/client/coordinators/WaMessageCoordinator.js +361 -0
  107. package/dist/esm/client/coordinators/WaMessageDispatchCoordinator.js +719 -211
  108. package/dist/esm/client/coordinators/WaNewsletterCoordinator.js +13 -0
  109. package/dist/esm/client/coordinators/WaOfflineResumeCoordinator.js +110 -0
  110. package/dist/esm/client/coordinators/WaPassiveTasksCoordinator.js +54 -23
  111. package/dist/esm/client/coordinators/WaPresenceCoordinator.js +18 -0
  112. package/dist/esm/client/coordinators/WaPrivacyCoordinator.js +7 -5
  113. package/dist/esm/client/coordinators/WaProfileCoordinator.js +226 -53
  114. package/dist/esm/client/coordinators/WaRetryCoordinator.js +258 -125
  115. package/dist/esm/client/coordinators/WaStatusCoordinator.js +46 -0
  116. package/dist/esm/client/coordinators/WaStreamControlCoordinator.js +6 -6
  117. package/dist/esm/client/coordinators/WaTrustedContactTokenCoordinator.js +31 -12
  118. package/dist/esm/client/events/abprops.js +40 -0
  119. package/dist/esm/client/events/appstate-mutation.js +130 -0
  120. package/dist/esm/client/events/business.js +370 -0
  121. package/dist/esm/client/events/call.js +55 -0
  122. package/dist/esm/client/events/chatstate.js +20 -0
  123. package/dist/esm/client/events/devices.js +15 -16
  124. package/dist/esm/client/{dirty.js → events/dirty.js} +34 -20
  125. package/dist/esm/client/events/group.js +14 -25
  126. package/dist/esm/client/events/identity.js +2 -1
  127. package/dist/esm/client/events/incoming.js +487 -0
  128. package/dist/esm/client/events/mex-notification.js +178 -0
  129. package/dist/esm/client/events/picture.js +30 -0
  130. package/dist/esm/client/events/presence.js +41 -0
  131. package/dist/esm/client/events/privacy-token.js +1 -2
  132. package/dist/esm/client/events/receipt.js +23 -0
  133. package/dist/esm/client/events/registration.js +39 -0
  134. package/dist/esm/client/media.js +384 -0
  135. package/dist/esm/client/messaging/fanout.js +10 -11
  136. package/dist/esm/client/messaging/{participants.js → group-metadata.js} +72 -34
  137. package/dist/esm/client/messaging/ignore-key.js +126 -0
  138. package/dist/esm/client/messaging/key-protocol.js +3 -17
  139. package/dist/esm/client/messaging/link-preview.js +156 -0
  140. package/dist/esm/client/messaging/messages.js +667 -0
  141. package/dist/esm/client/newsletter/admin.js +162 -0
  142. package/dist/esm/client/newsletter/content.js +249 -0
  143. package/dist/esm/client/newsletter/discovery.js +112 -0
  144. package/dist/esm/client/newsletter/messaging.js +194 -0
  145. package/dist/esm/client/newsletter/mex.js +37 -0
  146. package/dist/esm/client/newsletter/parse.js +200 -0
  147. package/dist/esm/client/persistence/WriteBehindPersistence.js +31 -4
  148. package/dist/esm/client/{history-sync.js → persistence/history-sync.js} +124 -18
  149. package/dist/esm/client/persistence/mailbox.js +101 -0
  150. package/dist/esm/client/tokens/cs-token.js +12 -18
  151. package/dist/esm/crypto/core/hkdf.js +14 -14
  152. package/dist/esm/crypto/core/index.js +3 -2
  153. package/dist/esm/crypto/core/keys.js +1 -7
  154. package/dist/esm/crypto/core/nonce.js +11 -11
  155. package/dist/esm/crypto/core/primitives.js +121 -88
  156. package/dist/esm/crypto/core/random.js +8 -7
  157. package/dist/esm/crypto/core/xeddsa.js +55 -0
  158. package/dist/esm/crypto/curves/Ed25519.js +35 -24
  159. package/dist/esm/crypto/curves/X25519.js +74 -20
  160. package/dist/esm/crypto/curves/constants.js +2 -0
  161. package/dist/esm/crypto/math/constants.js +1 -2
  162. package/dist/esm/crypto/math/mod.js +0 -32
  163. package/dist/esm/index.js +7 -2
  164. package/dist/esm/infra/log/ConsoleLogger.js +30 -6
  165. package/dist/esm/infra/log/PinoLogger.js +64 -0
  166. package/dist/esm/infra/log/types.js +4 -2
  167. package/dist/esm/infra/perf/BackgroundQueue.js +55 -13
  168. package/dist/esm/infra/perf/StoreLock.js +7 -4
  169. package/dist/esm/media/constants.js +35 -2
  170. package/dist/esm/media/crypto/WaMediaCrypto.js +374 -0
  171. package/dist/esm/media/index.js +4 -3
  172. package/dist/esm/media/processor.js +1 -0
  173. package/dist/esm/media/sticker/sticker-pack.js +133 -0
  174. package/dist/esm/media/{WaMediaTransferClient.js → transfer/WaMediaTransferClient.js} +84 -196
  175. package/dist/esm/media/{conn.js → transfer/conn.js} +10 -5
  176. package/dist/esm/message/WaMessageClient.js +46 -15
  177. package/dist/esm/message/addons/link-preview/builder.js +36 -0
  178. package/dist/esm/message/addons/link-preview/detect.js +55 -0
  179. package/dist/esm/message/addons/link-preview/fetcher.js +391 -0
  180. package/dist/esm/message/addons/link-preview/types.js +1 -0
  181. package/dist/esm/message/context-info.js +123 -0
  182. package/dist/esm/message/crypto/addon-crypto.js +244 -0
  183. package/dist/esm/message/{icdc.js → crypto/icdc.js} +11 -13
  184. package/dist/esm/message/crypto/phash.js +133 -0
  185. package/dist/esm/message/{reporting-token.js → crypto/reporting-token.js} +7 -7
  186. package/dist/esm/message/{use-case-secret.js → crypto/use-case-secret.js} +21 -4
  187. package/dist/esm/message/{content.js → encode/content.js} +183 -8
  188. package/dist/esm/message/encode/media-payload.js +42 -0
  189. package/dist/esm/message/{padding.js → encode/padding.js} +9 -3
  190. package/dist/esm/message/index.js +2 -2
  191. package/dist/esm/message/kinds/bot.js +111 -0
  192. package/dist/esm/message/kinds/newsletter.js +244 -0
  193. package/dist/esm/message/kinds/sticker-pack.js +29 -0
  194. package/dist/esm/message/{ack.js → primitives/ack.js} +8 -1
  195. package/dist/esm/message/primitives/incoming.js +511 -0
  196. package/dist/esm/message/primitives/peer-data-operation.js +93 -0
  197. package/dist/esm/mex.js +1 -0
  198. package/dist/esm/protocol/abprops.js +169 -0
  199. package/dist/esm/protocol/appstate.js +6 -30
  200. package/dist/esm/protocol/auth.js +3 -2
  201. package/dist/esm/protocol/bot.js +77 -0
  202. package/dist/esm/protocol/browser.js +22 -0
  203. package/dist/esm/protocol/business.js +19 -0
  204. package/dist/esm/protocol/call.js +48 -0
  205. package/dist/esm/protocol/constants.js +10 -2
  206. package/dist/esm/protocol/defaults.js +3 -0
  207. package/dist/esm/protocol/email.js +30 -0
  208. package/dist/esm/protocol/index.js +1 -1
  209. package/dist/esm/protocol/jid.js +142 -11
  210. package/dist/esm/protocol/media.js +25 -12
  211. package/dist/esm/protocol/message.js +4 -1
  212. package/dist/esm/protocol/newsletter.js +61 -0
  213. package/dist/esm/protocol/nodes.js +26 -2
  214. package/dist/esm/protocol/notification.js +24 -2
  215. package/dist/esm/protocol/presence.js +13 -0
  216. package/dist/esm/protocol/status.js +6 -0
  217. package/dist/esm/retry/codec.js +5 -0
  218. package/dist/esm/retry/parse.js +20 -38
  219. package/dist/esm/retry/reason.js +6 -1
  220. package/dist/esm/retry/replay.js +131 -37
  221. package/dist/esm/retry/tracker.js +4 -8
  222. package/dist/esm/signal/api/SignalDeviceSyncApi.js +71 -21
  223. package/dist/esm/signal/api/SignalDigestSyncApi.js +15 -8
  224. package/dist/esm/signal/api/SignalIdentitySyncApi.js +13 -4
  225. package/dist/esm/signal/api/SignalMissingPreKeysSyncApi.js +24 -63
  226. package/dist/esm/signal/api/SignalRotateKeyApi.js +10 -0
  227. package/dist/esm/signal/api/SignalSessionSyncApi.js +23 -51
  228. package/dist/esm/signal/api/codec.js +52 -1
  229. package/dist/esm/signal/api/prekeys.js +4 -0
  230. package/dist/esm/signal/attestation/WaAdvSignature.js +17 -0
  231. package/dist/esm/signal/{crypto → attestation}/constants.js +0 -4
  232. package/dist/esm/signal/constants.js +3 -0
  233. package/dist/esm/signal/encoding.js +6 -332
  234. package/dist/esm/signal/group/SenderKeyChain.js +20 -35
  235. package/dist/esm/signal/group/SenderKeyCodec.js +5 -6
  236. package/dist/esm/signal/group/SenderKeyManager.js +37 -17
  237. package/dist/esm/signal/group/encoding.js +96 -0
  238. package/dist/esm/signal/index.js +4 -1
  239. package/dist/esm/signal/registration/encoding.js +34 -0
  240. package/dist/esm/signal/registration/keygen.js +12 -3
  241. package/dist/esm/signal/registration/utils.js +8 -2
  242. package/dist/esm/signal/session/SignalProtocol.js +129 -26
  243. package/dist/esm/signal/session/SignalRatchet.js +46 -64
  244. package/dist/esm/signal/session/SignalSerializer.js +5 -6
  245. package/dist/esm/signal/session/SignalSession.js +14 -19
  246. package/dist/esm/signal/session/encoding.js +173 -0
  247. package/dist/esm/signal/session/resolver.js +144 -35
  248. package/dist/esm/store/cache/identity.cache.js +75 -0
  249. package/dist/esm/store/cache/privacy-token.cache.js +57 -0
  250. package/dist/esm/store/cache/sender-key.cache.js +101 -0
  251. package/dist/esm/store/cache/session.cache.js +92 -0
  252. package/dist/esm/store/contracts/group-metadata.store.js +1 -0
  253. package/dist/esm/store/contracts/identity.store.js +1 -0
  254. package/dist/esm/store/contracts/message-secret.store.js +1 -0
  255. package/dist/esm/store/contracts/pre-key.store.js +1 -0
  256. package/dist/esm/store/contracts/session.store.js +1 -0
  257. package/dist/esm/store/createStore.js +129 -39
  258. package/dist/esm/store/index.js +15 -10
  259. package/dist/esm/store/locks/contact.lock.js +1 -0
  260. package/dist/esm/store/locks/device-list.lock.js +1 -0
  261. package/dist/esm/store/locks/group-metadata.lock.js +20 -0
  262. package/dist/esm/store/locks/identity.lock.js +16 -0
  263. package/dist/esm/store/locks/message-secret.lock.js +17 -0
  264. package/dist/esm/store/locks/pre-key.lock.js +27 -0
  265. package/dist/esm/store/locks/session.lock.js +19 -0
  266. package/dist/esm/store/locks/signal.lock.js +0 -24
  267. package/dist/esm/store/{providers/memory → memory}/appstate.store.js +5 -5
  268. package/dist/esm/store/memory/auth.store.js +24 -0
  269. package/dist/esm/store/memory/contact.store.js +79 -0
  270. package/dist/esm/store/memory/device-list.store.js +103 -0
  271. package/dist/esm/store/{providers/memory/participants.store.js → memory/group-metadata.store.js} +24 -12
  272. package/dist/esm/store/memory/identity.store.js +31 -0
  273. package/dist/esm/store/memory/message-secret.store.js +90 -0
  274. package/dist/esm/store/{providers/memory → memory}/message.store.js +2 -2
  275. package/dist/esm/store/memory/pre-key.store.js +97 -0
  276. package/dist/esm/store/{providers/memory → memory}/privacy-token.store.js +1 -1
  277. package/dist/esm/store/{providers/memory → memory}/retry.store.js +49 -14
  278. package/dist/esm/store/{providers/memory → memory}/sender-key.store.js +3 -3
  279. package/dist/esm/store/memory/session.store.js +45 -0
  280. package/dist/esm/store/memory/signal.store.js +36 -0
  281. package/dist/esm/store/{providers/memory → memory}/thread.store.js +2 -2
  282. package/dist/esm/store/noop.store.js +26 -4
  283. package/dist/esm/transport/WaComms.js +18 -8
  284. package/dist/esm/transport/WaWebSocket.js +41 -9
  285. package/dist/esm/transport/binary/constants.js +10 -4
  286. package/dist/esm/transport/binary/decoder.js +21 -15
  287. package/dist/esm/transport/binary/encoder.js +96 -21
  288. package/dist/esm/transport/binary/tokens.js +12 -12
  289. package/dist/esm/transport/index.js +7 -0
  290. package/dist/esm/transport/keepalive/WaKeepAlive.js +35 -12
  291. package/dist/esm/transport/node/WaMobileTcpSocket.js +120 -0
  292. package/dist/esm/transport/node/WaNodeOrchestrator.js +26 -13
  293. package/dist/esm/transport/node/WaNodeTransport.js +13 -0
  294. package/dist/esm/transport/node/builders/abprops.js +20 -0
  295. package/dist/esm/transport/node/builders/account-sync.js +7 -15
  296. package/dist/esm/transport/node/builders/bot.js +38 -0
  297. package/dist/esm/transport/node/builders/business.js +30 -30
  298. package/dist/esm/transport/node/builders/chatstate.js +28 -0
  299. package/dist/esm/transport/node/builders/community.js +53 -0
  300. package/dist/esm/transport/node/builders/device.js +11 -0
  301. package/dist/esm/transport/node/builders/email.js +66 -0
  302. package/dist/esm/transport/node/builders/global.js +1 -1
  303. package/dist/esm/transport/node/builders/group.js +114 -4
  304. package/dist/esm/transport/node/builders/media.js +2 -2
  305. package/dist/esm/transport/node/builders/message.js +83 -49
  306. package/dist/esm/transport/node/builders/newsletter.js +176 -0
  307. package/dist/esm/transport/node/builders/offline.js +14 -0
  308. package/dist/esm/transport/node/builders/passive.js +7 -0
  309. package/dist/esm/transport/node/builders/prekeys.js +40 -43
  310. package/dist/esm/transport/node/builders/presence.js +39 -0
  311. package/dist/esm/transport/node/builders/privacy-token.js +19 -23
  312. package/dist/esm/transport/node/builders/privacy.js +6 -6
  313. package/dist/esm/transport/node/builders/profile.js +28 -8
  314. package/dist/esm/transport/node/builders/retry.js +1 -1
  315. package/dist/esm/transport/node/builders/tos.js +58 -0
  316. package/dist/esm/transport/node/builders/usync.js +51 -2
  317. package/dist/esm/transport/node/helpers.js +27 -1
  318. package/dist/esm/transport/node/mex/argo-decoder.js +152 -0
  319. package/dist/esm/transport/node/mex/client.js +105 -0
  320. package/dist/esm/transport/node/query.js +17 -0
  321. package/dist/esm/transport/node/usync.js +12 -0
  322. package/dist/esm/transport/noise/WaClientPayload.js +23 -18
  323. package/dist/esm/transport/noise/WaFrameCodec.js +2 -2
  324. package/dist/esm/transport/noise/WaMobileClientPayload.js +58 -0
  325. package/dist/esm/transport/noise/WaNoiseCert.js +14 -27
  326. package/dist/esm/transport/noise/WaNoiseHandshake.js +27 -25
  327. package/dist/esm/transport/noise/WaNoiseSession.js +48 -67
  328. package/dist/esm/transport/noise/WaNoiseSocket.js +19 -13
  329. package/dist/esm/transport/noise/constants.js +0 -1
  330. package/dist/esm/transport/proxy.js +5 -0
  331. package/dist/esm/transport/stream/parse.js +3 -7
  332. package/dist/esm/transport/wa-web-version-fetcher.js +91 -0
  333. package/dist/esm/util/async.js +4 -0
  334. package/dist/esm/util/bytes.js +37 -2
  335. package/dist/esm/util/clock.js +15 -0
  336. package/dist/esm/util/coercion.js +45 -3
  337. package/dist/esm/util/collections.js +11 -0
  338. package/dist/esm/util/index.js +2 -2
  339. package/dist/esm/util/primitives.js +19 -0
  340. package/dist/esm/util/runtime.js +5 -0
  341. package/dist/esm/version-spec.js +1 -0
  342. package/dist/index.js +31 -1
  343. package/dist/infra/log/ConsoleLogger.js +30 -6
  344. package/dist/infra/log/PinoLogger.js +64 -0
  345. package/dist/infra/log/types.js +4 -2
  346. package/dist/infra/perf/BackgroundQueue.js +55 -13
  347. package/dist/infra/perf/StoreLock.js +7 -4
  348. package/dist/media/constants.js +36 -3
  349. package/dist/media/crypto/WaMediaCrypto.js +378 -0
  350. package/dist/media/index.js +9 -4
  351. package/dist/media/processor.js +2 -0
  352. package/dist/media/sticker/sticker-pack.js +136 -0
  353. package/dist/media/{WaMediaTransferClient.js → transfer/WaMediaTransferClient.js} +87 -229
  354. package/dist/media/{conn.js → transfer/conn.js} +10 -5
  355. package/dist/message/WaMessageClient.js +46 -15
  356. package/dist/message/addons/link-preview/builder.js +39 -0
  357. package/dist/message/addons/link-preview/detect.js +58 -0
  358. package/dist/message/addons/link-preview/fetcher.js +394 -0
  359. package/dist/message/addons/link-preview/types.js +2 -0
  360. package/dist/message/context-info.js +129 -0
  361. package/dist/message/crypto/addon-crypto.js +254 -0
  362. package/dist/message/{icdc.js → crypto/icdc.js} +11 -13
  363. package/dist/message/crypto/phash.js +136 -0
  364. package/dist/message/{reporting-token.js → crypto/reporting-token.js} +7 -7
  365. package/dist/message/{use-case-secret.js → crypto/use-case-secret.js} +21 -4
  366. package/dist/message/{content.js → encode/content.js} +200 -7
  367. package/dist/message/encode/media-payload.js +45 -0
  368. package/dist/message/{padding.js → encode/padding.js} +9 -3
  369. package/dist/message/index.js +2 -2
  370. package/dist/message/kinds/bot.js +120 -0
  371. package/dist/message/kinds/newsletter.js +248 -0
  372. package/dist/message/kinds/sticker-pack.js +34 -0
  373. package/dist/message/{ack.js → primitives/ack.js} +8 -1
  374. package/dist/message/{incoming.js → primitives/incoming.js} +225 -38
  375. package/dist/message/primitives/peer-data-operation.js +96 -0
  376. package/dist/mex.js +6 -0
  377. package/dist/proto.js +1 -1
  378. package/dist/protocol/abprops.js +173 -0
  379. package/dist/protocol/appstate.js +7 -31
  380. package/dist/protocol/auth.js +3 -2
  381. package/dist/protocol/bot.js +81 -0
  382. package/dist/protocol/browser.js +23 -0
  383. package/dist/protocol/business.js +22 -0
  384. package/dist/protocol/call.js +51 -0
  385. package/dist/protocol/constants.js +51 -3
  386. package/dist/protocol/defaults.js +3 -0
  387. package/dist/protocol/email.js +33 -0
  388. package/dist/protocol/index.js +12 -3
  389. package/dist/protocol/jid.js +148 -11
  390. package/dist/protocol/media.js +25 -12
  391. package/dist/protocol/message.js +4 -1
  392. package/dist/protocol/newsletter.js +64 -0
  393. package/dist/protocol/nodes.js +26 -2
  394. package/dist/protocol/notification.js +25 -3
  395. package/dist/protocol/presence.js +16 -0
  396. package/dist/protocol/status.js +9 -0
  397. package/dist/retry/codec.js +5 -0
  398. package/dist/retry/parse.js +16 -34
  399. package/dist/retry/reason.js +6 -1
  400. package/dist/retry/replay.js +129 -35
  401. package/dist/retry/tracker.js +3 -7
  402. package/dist/signal/api/SignalDeviceSyncApi.js +69 -19
  403. package/dist/signal/api/SignalDigestSyncApi.js +14 -7
  404. package/dist/signal/api/SignalIdentitySyncApi.js +13 -4
  405. package/dist/signal/api/SignalMissingPreKeysSyncApi.js +21 -60
  406. package/dist/signal/api/SignalRotateKeyApi.js +10 -0
  407. package/dist/signal/api/SignalSessionSyncApi.js +20 -48
  408. package/dist/signal/api/codec.js +52 -0
  409. package/dist/signal/api/prekeys.js +4 -0
  410. package/dist/signal/attestation/WaAdvSignature.js +26 -0
  411. package/dist/signal/{crypto → attestation}/constants.js +1 -5
  412. package/dist/signal/constants.js +4 -1
  413. package/dist/signal/encoding.js +5 -341
  414. package/dist/signal/group/SenderKeyChain.js +19 -34
  415. package/dist/signal/group/SenderKeyCodec.js +4 -5
  416. package/dist/signal/group/SenderKeyManager.js +36 -16
  417. package/dist/signal/group/encoding.js +101 -0
  418. package/dist/signal/index.js +13 -10
  419. package/dist/signal/registration/encoding.js +39 -0
  420. package/dist/signal/registration/keygen.js +11 -2
  421. package/dist/signal/registration/utils.js +8 -2
  422. package/dist/signal/session/SignalProtocol.js +128 -25
  423. package/dist/signal/session/SignalRatchet.js +41 -60
  424. package/dist/signal/session/SignalSerializer.js +5 -6
  425. package/dist/signal/session/SignalSession.js +13 -19
  426. package/dist/signal/session/encoding.js +183 -0
  427. package/dist/signal/session/resolver.js +144 -35
  428. package/dist/store/cache/identity.cache.js +78 -0
  429. package/dist/store/cache/privacy-token.cache.js +60 -0
  430. package/dist/store/cache/sender-key.cache.js +104 -0
  431. package/dist/store/cache/session.cache.js +95 -0
  432. package/dist/store/contracts/group-metadata.store.js +2 -0
  433. package/dist/store/contracts/identity.store.js +2 -0
  434. package/dist/store/contracts/message-secret.store.js +2 -0
  435. package/dist/store/contracts/pre-key.store.js +2 -0
  436. package/dist/store/contracts/session.store.js +2 -0
  437. package/dist/store/createStore.js +128 -38
  438. package/dist/store/index.js +22 -12
  439. package/dist/store/locks/contact.lock.js +1 -0
  440. package/dist/store/locks/device-list.lock.js +1 -0
  441. package/dist/store/locks/group-metadata.lock.js +23 -0
  442. package/dist/store/locks/identity.lock.js +19 -0
  443. package/dist/store/locks/message-secret.lock.js +20 -0
  444. package/dist/store/locks/pre-key.lock.js +30 -0
  445. package/dist/store/locks/session.lock.js +22 -0
  446. package/dist/store/locks/signal.lock.js +0 -24
  447. package/dist/store/{providers/memory → memory}/appstate.store.js +5 -5
  448. package/dist/store/memory/auth.store.js +28 -0
  449. package/dist/store/memory/contact.store.js +83 -0
  450. package/dist/store/memory/device-list.store.js +107 -0
  451. package/dist/store/{providers/memory/participants.store.js → memory/group-metadata.store.js} +26 -14
  452. package/dist/store/memory/identity.store.js +35 -0
  453. package/dist/store/memory/message-secret.store.js +94 -0
  454. package/dist/store/{providers/memory → memory}/message.store.js +2 -2
  455. package/dist/store/memory/pre-key.store.js +101 -0
  456. package/dist/store/{providers/memory → memory}/privacy-token.store.js +1 -1
  457. package/dist/store/{providers/memory → memory}/retry.store.js +49 -14
  458. package/dist/store/{providers/memory → memory}/sender-key.store.js +3 -3
  459. package/dist/store/memory/session.store.js +49 -0
  460. package/dist/store/memory/signal.store.js +40 -0
  461. package/dist/store/{providers/memory → memory}/thread.store.js +2 -2
  462. package/dist/store/noop.store.js +27 -5
  463. package/dist/transport/WaComms.js +18 -8
  464. package/dist/transport/WaWebSocket.js +41 -9
  465. package/dist/transport/binary/constants.js +11 -5
  466. package/dist/transport/binary/decoder.js +24 -18
  467. package/dist/transport/binary/encoder.js +109 -34
  468. package/dist/transport/binary/tokens.js +12 -12
  469. package/dist/transport/index.js +19 -1
  470. package/dist/transport/keepalive/WaKeepAlive.js +35 -12
  471. package/dist/transport/node/WaMobileTcpSocket.js +124 -0
  472. package/dist/transport/node/WaNodeOrchestrator.js +25 -12
  473. package/dist/transport/node/WaNodeTransport.js +13 -0
  474. package/dist/transport/node/builders/abprops.js +23 -0
  475. package/dist/transport/node/builders/account-sync.js +7 -16
  476. package/dist/transport/node/builders/bot.js +43 -0
  477. package/dist/transport/node/builders/business.js +31 -31
  478. package/dist/transport/node/builders/chatstate.js +31 -0
  479. package/dist/transport/node/builders/community.js +59 -0
  480. package/dist/transport/node/builders/device.js +14 -0
  481. package/dist/transport/node/builders/email.js +73 -0
  482. package/dist/transport/node/builders/global.js +1 -1
  483. package/dist/transport/node/builders/group.js +121 -3
  484. package/dist/transport/node/builders/media.js +1 -1
  485. package/dist/transport/node/builders/message.js +84 -49
  486. package/dist/transport/node/builders/newsletter.js +183 -0
  487. package/dist/transport/node/builders/offline.js +17 -0
  488. package/dist/transport/node/builders/passive.js +10 -0
  489. package/dist/transport/node/builders/prekeys.js +38 -41
  490. package/dist/transport/node/builders/presence.js +43 -0
  491. package/dist/transport/node/builders/privacy-token.js +18 -22
  492. package/dist/transport/node/builders/privacy.js +5 -5
  493. package/dist/transport/node/builders/profile.js +30 -7
  494. package/dist/transport/node/builders/retry.js +1 -1
  495. package/dist/transport/node/builders/tos.js +63 -0
  496. package/dist/transport/node/builders/usync.js +52 -1
  497. package/dist/transport/node/helpers.js +28 -1
  498. package/dist/transport/node/mex/argo-decoder.js +189 -0
  499. package/dist/transport/node/mex/client.js +109 -0
  500. package/dist/transport/node/query.js +17 -0
  501. package/dist/transport/node/usync.js +13 -0
  502. package/dist/transport/noise/WaClientPayload.js +22 -17
  503. package/dist/transport/noise/WaFrameCodec.js +1 -1
  504. package/dist/transport/noise/WaMobileClientPayload.js +61 -0
  505. package/dist/transport/noise/WaNoiseCert.js +13 -26
  506. package/dist/transport/noise/WaNoiseHandshake.js +25 -23
  507. package/dist/transport/noise/WaNoiseSession.js +47 -66
  508. package/dist/transport/noise/WaNoiseSocket.js +18 -12
  509. package/dist/transport/noise/constants.js +1 -2
  510. package/dist/transport/proxy.js +5 -0
  511. package/dist/transport/stream/parse.js +3 -7
  512. package/dist/transport/wa-web-version-fetcher.js +94 -0
  513. package/dist/types/appstate/constants.d.ts +1 -1
  514. package/dist/types/appstate/{WaAppStateCrypto.d.ts → crypto/WaAppStateCrypto.d.ts} +29 -9
  515. package/dist/types/appstate/index.d.ts +5 -5
  516. package/dist/types/appstate/{encoding.d.ts → parsers/encoding.d.ts} +8 -1
  517. package/dist/types/appstate/{WaAppStateSyncResponseParser.d.ts → parsers/response-parser.d.ts} +13 -3
  518. package/dist/types/appstate/sync/WaAppStateSyncClient.d.ts +105 -0
  519. package/dist/types/appstate/types.d.ts +1 -1
  520. package/dist/types/appstate/utils.d.ts +17 -1
  521. package/dist/types/appstate-spec.d.ts +24 -0
  522. package/dist/types/auth/WaAuthClient.d.ts +95 -3
  523. package/dist/types/auth/credentials-flow.d.ts +21 -0
  524. package/dist/types/auth/pairing/WaPairingFlow.d.ts +3 -2
  525. package/dist/types/auth/pairing/{WaPairingCodeCrypto.d.ts → pairing-code-crypto.d.ts} +5 -1
  526. package/dist/types/auth/types.d.ts +88 -1
  527. package/dist/types/client/WaClient.d.ts +183 -65
  528. package/dist/types/client/WaClientFactory.d.ts +40 -9
  529. package/dist/types/client/connection/WaConnectionManager.d.ts +4 -2
  530. package/dist/types/client/connection/WaReceiptQueue.d.ts +1 -1
  531. package/dist/types/client/coordinators/WaAbPropsCoordinator.d.ts +26 -0
  532. package/dist/types/client/coordinators/WaAppStateMutationCoordinator.d.ts +215 -5
  533. package/dist/types/client/coordinators/WaBotCoordinator.d.ts +117 -0
  534. package/dist/types/client/coordinators/WaBroadcastListCoordinator.d.ts +39 -0
  535. package/dist/types/client/coordinators/WaBusinessCoordinator.d.ts +45 -44
  536. package/dist/types/client/coordinators/WaEmailCoordinator.d.ts +40 -0
  537. package/dist/types/client/coordinators/WaGroupCoordinator.d.ts +311 -9
  538. package/dist/types/client/coordinators/WaIncomingNodeCoordinator.d.ts +16 -4
  539. package/dist/types/client/coordinators/WaLowLevelCoordinator.d.ts +47 -0
  540. package/dist/types/client/coordinators/WaMessageCoordinator.d.ts +232 -0
  541. package/dist/types/client/coordinators/WaMessageDispatchCoordinator.d.ts +65 -29
  542. package/dist/types/client/coordinators/WaNewsletterCoordinator.d.ts +13 -0
  543. package/dist/types/client/coordinators/WaOfflineResumeCoordinator.d.ts +31 -0
  544. package/dist/types/client/coordinators/WaPassiveTasksCoordinator.d.ts +15 -3
  545. package/dist/types/client/coordinators/WaPresenceCoordinator.d.ts +27 -0
  546. package/dist/types/client/coordinators/WaPrivacyCoordinator.d.ts +28 -1
  547. package/dist/types/client/coordinators/WaProfileCoordinator.d.ts +117 -2
  548. package/dist/types/client/coordinators/WaRetryCoordinator.d.ts +23 -15
  549. package/dist/types/client/coordinators/WaStatusCoordinator.d.ts +42 -0
  550. package/dist/types/client/coordinators/WaTrustedContactTokenCoordinator.d.ts +16 -2
  551. package/dist/types/client/events/abprops.d.ts +15 -0
  552. package/dist/types/client/events/appstate-mutation.d.ts +3 -0
  553. package/dist/types/client/events/business.d.ts +10 -0
  554. package/dist/types/client/events/call.d.ts +31 -0
  555. package/dist/types/client/events/chatstate.d.ts +9 -0
  556. package/dist/types/client/events/devices.d.ts +5 -4
  557. package/dist/types/client/{dirty.d.ts → events/dirty.d.ts} +7 -4
  558. package/dist/types/client/events/group.d.ts +2 -1
  559. package/dist/types/client/events/identity.d.ts +2 -1
  560. package/dist/types/client/events/incoming.d.ts +65 -0
  561. package/dist/types/client/events/mex-notification.d.ts +6 -0
  562. package/dist/types/client/events/picture.d.ts +8 -0
  563. package/dist/types/client/events/presence.d.ts +28 -0
  564. package/dist/types/client/events/receipt.d.ts +14 -0
  565. package/dist/types/client/events/registration.d.ts +18 -0
  566. package/dist/types/client/index.d.ts +1 -1
  567. package/dist/types/client/media.d.ts +65 -0
  568. package/dist/types/client/messaging/fanout.d.ts +2 -2
  569. package/dist/types/client/messaging/group-metadata.d.ts +19 -0
  570. package/dist/types/client/messaging/ignore-key.d.ts +11 -0
  571. package/dist/types/client/messaging/key-protocol.d.ts +9 -7
  572. package/dist/types/client/messaging/link-preview.d.ts +19 -0
  573. package/dist/types/client/messaging/messages.d.ts +28 -0
  574. package/dist/types/client/newsletter/admin.d.ts +71 -0
  575. package/dist/types/client/newsletter/content.d.ts +42 -0
  576. package/dist/types/client/newsletter/discovery.d.ts +33 -0
  577. package/dist/types/client/newsletter/messaging.d.ts +66 -0
  578. package/dist/types/client/newsletter/mex.d.ts +14 -0
  579. package/dist/types/client/newsletter/parse.d.ts +19 -0
  580. package/dist/types/client/newsletter/types.d.ts +190 -0
  581. package/dist/types/client/persistence/WriteBehindPersistence.d.ts +13 -2
  582. package/dist/types/client/persistence/history-sync.d.ts +29 -0
  583. package/dist/types/client/persistence/mailbox.d.ts +12 -0
  584. package/dist/types/client/tokens/cs-token.d.ts +1 -3
  585. package/dist/types/client/types.d.ts +926 -55
  586. package/dist/types/crypto/core/hkdf.d.ts +10 -2
  587. package/dist/types/crypto/core/index.d.ts +3 -2
  588. package/dist/types/crypto/core/keys.d.ts +0 -4
  589. package/dist/types/crypto/core/nonce.d.ts +4 -5
  590. package/dist/types/crypto/core/primitives.d.ts +31 -20
  591. package/dist/types/crypto/core/random.d.ts +7 -1
  592. package/dist/types/crypto/core/xeddsa.d.ts +11 -0
  593. package/dist/types/crypto/curves/Ed25519.d.ts +7 -1
  594. package/dist/types/crypto/curves/X25519.d.ts +20 -1
  595. package/dist/types/crypto/curves/constants.d.ts +4 -2
  596. package/dist/types/crypto/curves/types.d.ts +0 -5
  597. package/dist/types/crypto/index.d.ts +1 -0
  598. package/dist/types/crypto/math/constants.d.ts +0 -1
  599. package/dist/types/crypto/math/mod.d.ts +0 -1
  600. package/dist/types/index.d.ts +32 -5
  601. package/dist/types/infra/log/ConsoleLogger.d.ts +19 -2
  602. package/dist/types/infra/log/PinoLogger.d.ts +56 -2
  603. package/dist/types/infra/log/types.d.ts +6 -0
  604. package/dist/types/infra/perf/BackgroundQueue.d.ts +19 -0
  605. package/dist/types/infra/perf/StoreLock.d.ts +1 -0
  606. package/dist/types/media/constants.d.ts +9 -2
  607. package/dist/types/media/crypto/WaMediaCrypto.d.ts +59 -0
  608. package/dist/types/media/index.d.ts +7 -4
  609. package/dist/types/media/processor.d.ts +50 -0
  610. package/dist/types/media/sticker/sticker-pack.d.ts +6 -0
  611. package/dist/types/media/{WaMediaTransferClient.d.ts → transfer/WaMediaTransferClient.d.ts} +33 -12
  612. package/dist/types/media/transfer/conn.d.ts +7 -0
  613. package/dist/types/media/types.d.ts +10 -5
  614. package/dist/types/message/WaMessageClient.d.ts +14 -0
  615. package/dist/types/message/addons/link-preview/builder.d.ts +13 -0
  616. package/dist/types/message/addons/link-preview/detect.d.ts +5 -0
  617. package/dist/types/message/addons/link-preview/fetcher.d.ts +13 -0
  618. package/dist/types/message/addons/link-preview/types.d.ts +51 -0
  619. package/dist/types/message/context-info.d.ts +66 -0
  620. package/dist/types/message/crypto/addon-crypto.d.ts +78 -0
  621. package/dist/types/message/{icdc.d.ts → crypto/icdc.d.ts} +6 -6
  622. package/dist/types/message/{phash.d.ts → crypto/phash.d.ts} +1 -1
  623. package/dist/types/message/{reporting-token.d.ts → crypto/reporting-token.d.ts} +2 -2
  624. package/dist/types/message/{use-case-secret.d.ts → crypto/use-case-secret.d.ts} +17 -1
  625. package/dist/types/message/encode/content.d.ts +43 -0
  626. package/dist/types/message/{device-sent.d.ts → encode/device-sent.d.ts} +1 -1
  627. package/dist/types/message/encode/media-payload.d.ts +12 -0
  628. package/dist/types/message/index.d.ts +2 -2
  629. package/dist/types/message/kinds/bot.d.ts +31 -0
  630. package/dist/types/message/kinds/newsletter.d.ts +12 -0
  631. package/dist/types/message/kinds/sticker-pack.d.ts +6 -0
  632. package/dist/types/message/{ack.d.ts → primitives/ack.d.ts} +1 -1
  633. package/dist/types/message/primitives/incoming.d.ts +21 -0
  634. package/dist/types/message/primitives/peer-data-operation.d.ts +23 -0
  635. package/dist/types/message/types.d.ts +218 -28
  636. package/dist/types/mex.d.ts +2 -0
  637. package/dist/types/proto.d.ts +2 -2
  638. package/dist/types/protocol/abprops.d.ts +151 -0
  639. package/dist/types/protocol/appstate.d.ts +4 -49
  640. package/dist/types/protocol/auth.d.ts +2 -2
  641. package/dist/types/protocol/bot.d.ts +45 -0
  642. package/dist/types/protocol/browser.d.ts +9 -0
  643. package/dist/types/protocol/business.d.ts +21 -0
  644. package/dist/types/protocol/call.d.ts +44 -0
  645. package/dist/types/protocol/constants.d.ts +20 -3
  646. package/dist/types/protocol/defaults.d.ts +3 -0
  647. package/dist/types/protocol/email.d.ts +32 -0
  648. package/dist/types/protocol/group.d.ts +1 -1
  649. package/dist/types/protocol/index.d.ts +2 -1
  650. package/dist/types/protocol/jid.d.ts +79 -0
  651. package/dist/types/protocol/media.d.ts +21 -13
  652. package/dist/types/protocol/message.d.ts +4 -0
  653. package/dist/types/protocol/newsletter.d.ts +65 -0
  654. package/dist/types/protocol/nodes.d.ts +24 -0
  655. package/dist/types/protocol/notification.d.ts +22 -0
  656. package/dist/types/protocol/presence.d.ts +16 -0
  657. package/dist/types/protocol/status.d.ts +7 -0
  658. package/dist/types/protocol/stream.d.ts +1 -0
  659. package/dist/types/retry/codec.d.ts +5 -0
  660. package/dist/types/retry/index.d.ts +1 -1
  661. package/dist/types/retry/parse.d.ts +9 -0
  662. package/dist/types/retry/reason.d.ts +6 -1
  663. package/dist/types/retry/replay.d.ts +19 -5
  664. package/dist/types/retry/tracker.d.ts +10 -3
  665. package/dist/types/retry/types.d.ts +3 -8
  666. package/dist/types/signal/api/SignalDeviceSyncApi.d.ts +20 -0
  667. package/dist/types/signal/api/SignalDigestSyncApi.d.ts +13 -0
  668. package/dist/types/signal/api/SignalIdentitySyncApi.d.ts +12 -3
  669. package/dist/types/signal/api/SignalMissingPreKeysSyncApi.d.ts +8 -0
  670. package/dist/types/signal/api/SignalRotateKeyApi.d.ts +10 -0
  671. package/dist/types/signal/api/SignalSessionSyncApi.d.ts +13 -0
  672. package/dist/types/signal/api/codec.d.ts +20 -0
  673. package/dist/types/signal/api/constants.d.ts +1 -1
  674. package/dist/types/signal/api/prekeys.d.ts +4 -0
  675. package/dist/types/signal/{crypto → attestation}/WaAdvSignature.d.ts +2 -4
  676. package/dist/types/signal/attestation/constants.d.ts +4 -0
  677. package/dist/types/signal/constants.d.ts +7 -4
  678. package/dist/types/signal/encoding.d.ts +6 -62
  679. package/dist/types/signal/group/SenderKeyChain.d.ts +2 -2
  680. package/dist/types/signal/group/SenderKeyManager.d.ts +24 -2
  681. package/dist/types/signal/group/encoding.d.ts +25 -0
  682. package/dist/types/signal/index.d.ts +4 -1
  683. package/dist/types/signal/registration/encoding.d.ts +30 -0
  684. package/dist/types/signal/registration/keygen.d.ts +10 -0
  685. package/dist/types/signal/registration/utils.d.ts +7 -1
  686. package/dist/types/signal/session/SignalProtocol.d.ts +66 -2
  687. package/dist/types/signal/session/SignalRatchet.d.ts +2 -3
  688. package/dist/types/signal/session/SignalSerializer.d.ts +2 -1
  689. package/dist/types/signal/session/SignalSession.d.ts +0 -1
  690. package/dist/types/signal/session/encoding.d.ts +28 -0
  691. package/dist/types/signal/session/resolver.d.ts +18 -2
  692. package/dist/types/signal/types.d.ts +16 -4
  693. package/dist/types/store/cache/identity.cache.d.ts +15 -0
  694. package/dist/types/store/cache/privacy-token.cache.d.ts +15 -0
  695. package/dist/types/store/cache/sender-key.cache.d.ts +18 -0
  696. package/dist/types/store/cache/session.cache.d.ts +23 -0
  697. package/dist/types/store/contracts/contact.store.d.ts +14 -0
  698. package/dist/types/store/contracts/device-list.store.d.ts +13 -0
  699. package/dist/types/store/contracts/group-metadata.store.d.ts +14 -0
  700. package/dist/types/store/contracts/identity.store.d.ts +11 -0
  701. package/dist/types/store/contracts/message-secret.store.d.ts +16 -0
  702. package/dist/types/store/contracts/message.store.d.ts +0 -2
  703. package/dist/types/store/contracts/pre-key.store.d.ts +13 -0
  704. package/dist/types/store/contracts/session.store.d.ts +14 -0
  705. package/dist/types/store/contracts/signal.store.d.ts +1 -34
  706. package/dist/types/store/createStore.d.ts +54 -2
  707. package/dist/types/store/index.d.ts +22 -13
  708. package/dist/types/store/locks/group-metadata.lock.d.ts +2 -0
  709. package/dist/types/store/locks/identity.lock.d.ts +3 -0
  710. package/dist/types/store/locks/message-secret.lock.d.ts +3 -0
  711. package/dist/types/store/locks/pre-key.lock.d.ts +3 -0
  712. package/dist/types/store/locks/session.lock.d.ts +3 -0
  713. package/dist/types/store/{providers/memory → memory}/appstate.store.d.ts +2 -2
  714. package/dist/types/store/memory/auth.store.d.ts +18 -0
  715. package/dist/types/store/{providers/memory → memory}/contact.store.d.ts +6 -1
  716. package/dist/types/store/{providers/memory → memory}/device-list.store.d.ts +15 -2
  717. package/dist/types/store/memory/group-metadata.store.d.ts +27 -0
  718. package/dist/types/store/memory/identity.store.d.ts +18 -0
  719. package/dist/types/store/memory/message-secret.store.d.ts +31 -0
  720. package/dist/types/store/{providers/memory → memory}/message.store.d.ts +1 -1
  721. package/dist/types/store/memory/pre-key.store.d.ts +23 -0
  722. package/dist/types/store/{providers/memory → memory}/privacy-token.store.d.ts +1 -1
  723. package/dist/types/store/{providers/memory → memory}/retry.store.d.ts +23 -4
  724. package/dist/types/store/{providers/memory → memory}/sender-key.store.d.ts +2 -2
  725. package/dist/types/store/memory/session.store.d.ts +21 -0
  726. package/dist/types/store/memory/signal.store.d.ts +16 -0
  727. package/dist/types/store/{providers/memory → memory}/thread.store.d.ts +1 -1
  728. package/dist/types/store/noop.store.d.ts +6 -2
  729. package/dist/types/store/types.d.ts +271 -7
  730. package/dist/types/transport/WaComms.d.ts +5 -0
  731. package/dist/types/transport/WaWebSocket.d.ts +6 -0
  732. package/dist/types/transport/binary/constants.d.ts +8 -2
  733. package/dist/types/transport/binary/decoder.d.ts +5 -0
  734. package/dist/types/transport/binary/encoder.d.ts +5 -0
  735. package/dist/types/transport/binary/tokens.d.ts +6 -6
  736. package/dist/types/transport/index.d.ts +9 -0
  737. package/dist/types/transport/keepalive/WaKeepAlive.d.ts +11 -1
  738. package/dist/types/transport/node/WaMobileTcpSocket.d.ts +24 -0
  739. package/dist/types/transport/node/WaNodeOrchestrator.d.ts +11 -2
  740. package/dist/types/transport/node/WaNodeTransport.d.ts +13 -0
  741. package/dist/types/transport/node/builders/abprops.d.ts +5 -0
  742. package/dist/types/transport/node/builders/account-sync.d.ts +1 -2
  743. package/dist/types/transport/node/builders/bot.d.ts +4 -0
  744. package/dist/types/transport/node/builders/business.d.ts +21 -4
  745. package/dist/types/transport/node/builders/chatstate.d.ts +11 -0
  746. package/dist/types/transport/node/builders/community.d.ts +17 -0
  747. package/dist/types/transport/node/builders/device.d.ts +2 -0
  748. package/dist/types/transport/node/builders/email.d.ts +11 -0
  749. package/dist/types/transport/node/builders/group.d.ts +44 -2
  750. package/dist/types/transport/node/builders/message.d.ts +11 -6
  751. package/dist/types/transport/node/builders/newsletter.d.ts +73 -0
  752. package/dist/types/transport/node/builders/offline.d.ts +2 -0
  753. package/dist/types/transport/node/builders/passive.d.ts +3 -0
  754. package/dist/types/transport/node/builders/prekeys.d.ts +4 -3
  755. package/dist/types/transport/node/builders/presence.d.ts +13 -0
  756. package/dist/types/transport/node/builders/profile.d.ts +3 -0
  757. package/dist/types/transport/node/builders/tos.d.ts +12 -0
  758. package/dist/types/transport/node/builders/usync.d.ts +16 -0
  759. package/dist/types/transport/node/helpers.d.ts +3 -1
  760. package/dist/types/transport/node/mex/argo-decoder.d.ts +11 -0
  761. package/dist/types/transport/node/mex/client.d.ts +29 -0
  762. package/dist/types/transport/node/query.d.ts +19 -1
  763. package/dist/types/transport/node/usync.d.ts +3 -0
  764. package/dist/types/transport/noise/WaMobileClientPayload.d.ts +34 -0
  765. package/dist/types/transport/noise/WaNoiseCert.d.ts +12 -1
  766. package/dist/types/transport/noise/WaNoiseHandshake.d.ts +12 -6
  767. package/dist/types/transport/noise/WaNoiseSession.d.ts +1 -1
  768. package/dist/types/transport/noise/WaNoiseSocket.d.ts +12 -6
  769. package/dist/types/transport/noise/constants.d.ts +4 -5
  770. package/dist/types/transport/proxy.d.ts +5 -0
  771. package/dist/types/transport/types.d.ts +15 -0
  772. package/dist/types/transport/wa-web-version-fetcher.d.ts +44 -0
  773. package/dist/types/util/async.d.ts +4 -0
  774. package/dist/types/util/bytes.d.ts +36 -1
  775. package/dist/types/util/clock.d.ts +6 -0
  776. package/dist/types/util/coercion.d.ts +25 -0
  777. package/dist/types/util/collections.d.ts +8 -0
  778. package/dist/types/util/index.d.ts +2 -2
  779. package/dist/types/util/primitives.d.ts +11 -0
  780. package/dist/types/util/runtime.d.ts +5 -0
  781. package/dist/types/version-spec.d.ts +1 -0
  782. package/dist/util/async.js +4 -0
  783. package/dist/util/bytes.js +37 -2
  784. package/dist/util/clock.js +18 -0
  785. package/dist/util/coercion.js +48 -3
  786. package/dist/util/collections.js +12 -0
  787. package/dist/util/index.js +7 -1
  788. package/dist/util/primitives.js +20 -0
  789. package/dist/util/runtime.js +5 -0
  790. package/dist/version-spec.js +5 -0
  791. package/package.json +37 -11
  792. package/spec/appstate/index.d.ts +188 -0
  793. package/spec/appstate/index.js +850 -0
  794. package/spec/mex/index.d.ts +4172 -0
  795. package/spec/mex/index.js +261 -0
  796. package/spec/proto/index.d.ts +16305 -0
  797. package/spec/proto/index.js +1 -0
  798. package/spec/version/index.d.ts +4 -0
  799. package/spec/version/index.js +9 -0
  800. package/spec/version/version.json +3 -0
  801. package/dist/auth/flow/WaAuthCredentialsFlow.js +0 -130
  802. package/dist/auth/pairing/WaPairingCodeCrypto.js +0 -77
  803. package/dist/auth/pairing/constants.js +0 -5
  804. package/dist/client/connection/WaKeyShareCoordinator.js +0 -63
  805. package/dist/client/events/chat.js +0 -227
  806. package/dist/client/incoming.js +0 -269
  807. package/dist/client/mailbox.js +0 -50
  808. package/dist/client/messages.js +0 -228
  809. package/dist/esm/auth/flow/WaAuthCredentialsFlow.js +0 -125
  810. package/dist/esm/auth/pairing/WaPairingCodeCrypto.js +0 -73
  811. package/dist/esm/auth/pairing/constants.js +0 -2
  812. package/dist/esm/client/connection/WaKeyShareCoordinator.js +0 -59
  813. package/dist/esm/client/events/chat.js +0 -224
  814. package/dist/esm/client/incoming.js +0 -260
  815. package/dist/esm/client/mailbox.js +0 -47
  816. package/dist/esm/client/messages.js +0 -224
  817. package/dist/esm/media/WaMediaCrypto.js +0 -304
  818. package/dist/esm/message/addon-crypto.js +0 -59
  819. package/dist/esm/message/incoming.js +0 -325
  820. package/dist/esm/message/phash.js +0 -27
  821. package/dist/esm/signal/crypto/WaAdvSignature.js +0 -64
  822. package/dist/esm/store/locks/participants.lock.js +0 -20
  823. package/dist/esm/store/providers/memory/contact.store.js +0 -28
  824. package/dist/esm/store/providers/memory/device-list.store.js +0 -64
  825. package/dist/esm/store/providers/memory/signal.store.js +0 -199
  826. package/dist/esm/transport/node/builders/index.js +0 -11
  827. package/dist/media/WaMediaCrypto.js +0 -308
  828. package/dist/message/addon-crypto.js +0 -65
  829. package/dist/message/phash.js +0 -30
  830. package/dist/signal/crypto/WaAdvSignature.js +0 -76
  831. package/dist/store/locks/participants.lock.js +0 -23
  832. package/dist/store/providers/memory/contact.store.js +0 -32
  833. package/dist/store/providers/memory/device-list.store.js +0 -68
  834. package/dist/store/providers/memory/signal.store.js +0 -203
  835. package/dist/transport/node/builders/index.js +0 -51
  836. package/dist/types/appstate/WaAppStateSyncClient.d.ts +0 -66
  837. package/dist/types/auth/flow/WaAuthCredentialsFlow.d.ts +0 -14
  838. package/dist/types/auth/pairing/constants.d.ts +0 -2
  839. package/dist/types/client/connection/WaKeyShareCoordinator.d.ts +0 -14
  840. package/dist/types/client/events/chat.d.ts +0 -3
  841. package/dist/types/client/history-sync.d.ts +0 -20
  842. package/dist/types/client/incoming.d.ts +0 -37
  843. package/dist/types/client/mailbox.d.ts +0 -10
  844. package/dist/types/client/messages.d.ts +0 -16
  845. package/dist/types/client/messaging/participants.d.ts +0 -13
  846. package/dist/types/media/WaMediaCrypto.d.ts +0 -13
  847. package/dist/types/media/conn.d.ts +0 -3
  848. package/dist/types/message/addon-crypto.d.ts +0 -25
  849. package/dist/types/message/content.d.ts +0 -12
  850. package/dist/types/message/incoming.d.ts +0 -18
  851. package/dist/types/signal/crypto/constants.d.ts +0 -5
  852. package/dist/types/store/contracts/participants.store.d.ts +0 -13
  853. package/dist/types/store/locks/participants.lock.d.ts +0 -2
  854. package/dist/types/store/providers/memory/participants.store.d.ts +0 -17
  855. package/dist/types/store/providers/memory/signal.store.d.ts +0 -58
  856. package/dist/types/transport/node/builders/index.d.ts +0 -11
  857. package/proto/index.d.ts +0 -10903
  858. package/proto/index.js +0 -1
  859. /package/dist/{store/contracts/participants.store.js → client/newsletter/types.js} +0 -0
  860. /package/dist/esm/{store/contracts/participants.store.js → client/newsletter/types.js} +0 -0
  861. /package/dist/esm/message/{device-sent.js → encode/device-sent.js} +0 -0
  862. /package/dist/message/{device-sent.js → encode/device-sent.js} +0 -0
  863. /package/dist/types/message/{padding.d.ts → encode/padding.d.ts} +0 -0
@@ -1,37 +1,248 @@
1
+ import type { WaAppStateSyncClient } from '../../appstate/sync/WaAppStateSyncClient';
1
2
  import type { WaAppStateSyncOptions, WaAppStateSyncResult } from '../../appstate/types';
2
- import type { WaAppStateMessageKey, WaClearChatOptions, WaDeleteChatOptions, WaDeleteMessageForMeOptions } from '../types';
3
+ import { type DataForKey, type WaAppstateActionKey, type WaAppstateIndexArgs } from '../..';
4
+ import type { WaAppStateMessageKey, WaAppStateMutationEvent, WaClearChatOptions, WaDeleteChatOptions, WaDeleteMessageForMeOptions } from '../types';
3
5
  import type { Logger } from '../../infra/log/types';
6
+ import type { WaMediaTransferClient } from '../../media/transfer/WaMediaTransferClient';
7
+ import { proto, type Proto } from '../..';
8
+ import type { WaStoredContactRecord } from '../../store/contracts/contact.store';
4
9
  import type { WaMessageStore } from '../../store/contracts/message.store';
10
+ import type { ServerClock } from '../../util/clock';
11
+ type StatusDistributionMode = Proto.SyncActionValue.StatusPrivacyAction.StatusDistributionMode;
12
+ type StatusDistributionModeKey = keyof typeof proto.SyncActionValue.StatusPrivacyAction.StatusDistributionMode;
13
+ type SetMutationInputFor<K extends WaAppstateActionKey> = K extends K ? {
14
+ readonly schema: K;
15
+ } & WaAppstateIndexArgs<K> & Partial<DataForKey<K>> : never;
16
+ type RemoveMutationInputFor<K extends WaAppstateActionKey> = K extends K ? {
17
+ readonly schema: K;
18
+ } & WaAppstateIndexArgs<K> : never;
19
+ export interface WaSetMutationInputMap {
20
+ readonly _: SetMutationInputFor<WaAppstateActionKey>;
21
+ }
22
+ export interface WaRemoveMutationInputMap {
23
+ readonly _: RemoveMutationInputFor<WaAppstateActionKey>;
24
+ }
25
+ export type WaSetMutationInput = WaSetMutationInputMap['_'];
26
+ export type WaRemoveMutationInput = WaRemoveMutationInputMap['_'];
5
27
  interface WaAppStateMutationCoordinatorOptions {
6
28
  readonly logger: Logger;
7
29
  readonly messageStore: WaMessageStore;
8
- readonly syncAppState: (options?: WaAppStateSyncOptions) => Promise<WaAppStateSyncResult>;
30
+ readonly appStateSync: WaAppStateSyncClient;
31
+ readonly mediaTransfer: WaMediaTransferClient;
32
+ readonly isConnected: () => boolean;
33
+ readonly serverClock: ServerClock;
9
34
  readonly archiveRangeLimit?: number;
35
+ readonly emitMutation?: (event: WaAppStateMutationEvent) => void;
36
+ readonly emitSnapshotMutations?: boolean;
37
+ readonly nctSaltSink?: (salt: Uint8Array | null) => Promise<void>;
38
+ /**
39
+ * Persistence sink for `Contact` collection mutations (the locally-saved
40
+ * address-book name the primary device synced over app-state). Invoked on
41
+ * every winning mutation including snapshot ones, so the contact store is
42
+ * bootstrapped at pair-time regardless of `emitSnapshotMutations`.
43
+ */
44
+ readonly contactSink?: (record: WaStoredContactRecord) => void;
45
+ }
46
+ export interface WaSetStatusPrivacyInput {
47
+ readonly mode: StatusDistributionModeKey | StatusDistributionMode;
48
+ readonly userJids?: readonly string[];
49
+ readonly shareToFB?: boolean;
50
+ readonly shareToIG?: boolean;
51
+ }
52
+ export interface WaBroadcastListParticipant {
53
+ readonly lidJid: string;
54
+ readonly pnJid?: string;
55
+ }
56
+ export interface WaSetBroadcastListInput {
57
+ readonly id: string;
58
+ readonly listName: string;
59
+ readonly participants: readonly WaBroadcastListParticipant[];
60
+ readonly labelIds?: readonly string[];
10
61
  }
62
+ /**
63
+ * Coordinates app-state mutations (mute/star/read/pin/archive/clear/delete/
64
+ * lock chats, status privacy, broadcast lists) and emits parsed mutation
65
+ * events on sync. Accessed via {@link WaClient.chat}.
66
+ */
11
67
  export declare class WaAppStateMutationCoordinator {
12
68
  private readonly logger;
13
69
  private readonly messageStore;
14
- private readonly syncAppState;
70
+ private readonly appStateSync;
71
+ private readonly mediaTransfer;
72
+ private readonly isConnected;
73
+ private readonly serverClock;
15
74
  private readonly archiveRangeLimit;
75
+ private readonly emitMutation?;
76
+ private readonly emitSnapshotMutations;
77
+ private readonly nctSaltSink?;
78
+ private readonly contactSink?;
16
79
  private readonly pendingMutations;
17
80
  private flushPromise;
18
81
  constructor(options: WaAppStateMutationCoordinatorOptions);
82
+ /**
83
+ * Runs an app-state sync round, optionally applying pending mutations.
84
+ * Throws when the client is not connected. Returns the per-collection
85
+ * result; blocked collections are logged.
86
+ */
87
+ sync(options?: WaAppStateSyncOptions): Promise<WaAppStateSyncResult>;
88
+ /** Returns the names of collections reported as `BLOCKED` in `syncResult`. */
89
+ getBlockedCollections(syncResult: WaAppStateSyncResult): readonly string[];
90
+ /**
91
+ * Walks a sync result and emits one `app_state_mutation` event per
92
+ * distinct (collection, index) – only the last mutation per key wins.
93
+ * Snapshot-source mutations are skipped unless `emitSnapshotMutations`
94
+ * was enabled at construction.
95
+ */
96
+ emitEventsFromSyncResult(syncResult: WaAppStateSyncResult): void;
97
+ private handleNctSaltMutation;
98
+ private handleContactMutation;
99
+ /**
100
+ * Mutes or unmutes a chat. `muteEndTimestampMs` is required when
101
+ * `muted` is `true` and must be a non-negative safe-integer epoch.
102
+ *
103
+ * For a "mute forever" entry, pass a very large epoch value (the
104
+ * official client uses year-9999 epochs). The mute end is the absolute
105
+ * timestamp when WhatsApp will re-enable notifications - the client
106
+ * does **not** unmute automatically when the timer expires (you'll see
107
+ * the chat un-muted on the phone, but no `mutation` event re-fires).
108
+ */
19
109
  setChatMute(chatJid: string, muted: boolean, muteEndTimestampMs?: number): Promise<void>;
110
+ /** Stars or un-stars a specific message. */
20
111
  setMessageStar(message: WaAppStateMessageKey, starred: boolean): Promise<void>;
112
+ /** Marks the chat as read or unread. */
21
113
  setChatRead(chatJid: string, read: boolean): Promise<void>;
114
+ /**
115
+ * Pins or unpins the chat. Pinning also clears any active archive flag
116
+ * (the two states are mutually exclusive on the client). WhatsApp
117
+ * imposes a server-side cap on pinned chats - extra pins sync but the
118
+ * official UI will hide / reject them.
119
+ */
22
120
  setChatPin(chatJid: string, pinned: boolean): Promise<void>;
121
+ /** Archives or unarchives the chat. Archiving also clears any pin. */
23
122
  setChatArchive(chatJid: string, archived: boolean): Promise<void>;
123
+ /**
124
+ * Clears the chat history (without deleting the chat itself - it stays
125
+ * in the chat list, just empty). Defaults to **preserving** starred
126
+ * messages and media; set `options.deleteStarred`/`deleteMedia` to wipe
127
+ * those too. The clear is local-only - other participants keep their
128
+ * copies.
129
+ */
24
130
  clearChat(chatJid: string, options?: WaClearChatOptions): Promise<void>;
131
+ /**
132
+ * Deletes the chat entirely (removes from the chat list + drops every
133
+ * stored message). Local-only - the conversation continues to exist on
134
+ * the peer's device. For groups, this does **not** leave the group;
135
+ * use {@link WaGroupCoordinator.leaveGroup} for that.
136
+ */
25
137
  deleteChat(chatJid: string, options?: WaDeleteChatOptions): Promise<void>;
138
+ /**
139
+ * Deletes a single message **locally** - removes it from your own
140
+ * device(s) only. The recipient(s) still see it. Use a `revoke`
141
+ * outgoing message ({@link WaMessageCoordinator.send} with
142
+ * `{ type: 'revoke', ... }`) to delete-for-everyone instead.
143
+ * `messageTimestampMs` must be a non-negative safe-integer epoch when set.
144
+ */
26
145
  deleteMessageForMe(message: WaAppStateMessageKey, options?: WaDeleteMessageForMeOptions): Promise<void>;
146
+ /** Locks or unlocks the chat. Locking also clears archive and pin. */
27
147
  setChatLock(chatJid: string, locked: boolean): Promise<void>;
148
+ /**
149
+ * Drains any queued mutations through a sync round. Concurrent callers
150
+ * share the in-flight flush promise. Failed collections are re-queued
151
+ * before the error is rethrown.
152
+ */
28
153
  flushMutations(): Promise<void>;
29
154
  private enqueueAndFlush;
30
155
  private enqueueMutation;
31
156
  private takePendingMutationsBatch;
32
157
  private flushPendingMutationsLoop;
33
158
  private requeueMutations;
34
- private createSetMutation;
159
+ /**
160
+ * Sets the account-wide status-broadcast distribution policy. `mode`
161
+ * accepts either the proto enum number or its string name; allow/deny
162
+ * lists are provided via `userJids`.
163
+ */
164
+ setStatusPrivacy(input: WaSetStatusPrivacyInput): Promise<void>;
165
+ /** Mutes/unmutes a single user's status broadcasts. Rejects group/broadcast JIDs. */
166
+ setUserStatusMute(jid: string, muted: boolean): Promise<void>;
167
+ /** Creates or updates the broadcast list identified by `input.id`. */
168
+ setBroadcastList(input: WaSetBroadcastListInput): Promise<void>;
169
+ /** Deletes the broadcast list identified by `id`. */
170
+ removeBroadcastList(id: string): Promise<void>;
171
+ /**
172
+ * Applies a `set` mutation against any registered app-state schema. This
173
+ * is the way to reach schemas that don't have a typed helper on this
174
+ * coordinator (Contact, LabelEdit, LabelJid, QuickReply, AiThreadPin,
175
+ * Favorites, Nux, ...). For the common chat actions there's a dedicated
176
+ * method ({@link setChatMute}, {@link setChatRead}, {@link setMessageStar},
177
+ * {@link setChatPin}, {@link setChatArchive}, etc.) – use those instead.
178
+ *
179
+ * `input` is flat – pick a `schema` name from {@link WA_APPSTATE_SCHEMAS},
180
+ * fill the index fields (`id`, `chatJid`, `labelId`, ...) and the value
181
+ * fields side-by-side, and the coordinator routes them to the right
182
+ * SyncActionValue subfield.
183
+ *
184
+ * @example
185
+ * ```ts
186
+ * // Add a contact to the address book
187
+ * await client.chat.set({
188
+ * schema: 'Contact',
189
+ * id: '5511999999999@s.whatsapp.net',
190
+ * contactAction: { fullName: 'Maria Silva', firstName: 'Maria' }
191
+ * })
192
+ *
193
+ * // Create a chat label (color is a server-side palette index)
194
+ * await client.chat.set({
195
+ * schema: 'LabelEdit',
196
+ * id: 'label-1',
197
+ * labelEditAction: { name: 'Pendente', color: 0, isActive: true }
198
+ * })
199
+ *
200
+ * // Apply that label to a chat
201
+ * await client.chat.set({
202
+ * schema: 'LabelJid',
203
+ * labelId: 'label-1',
204
+ * chatJid: '5511999999999@s.whatsapp.net',
205
+ * labelAssociationAction: { labeled: true }
206
+ * })
207
+ *
208
+ * // Save a business quick reply
209
+ * await client.chat.set({
210
+ * schema: 'QuickReply',
211
+ * id: 'qr-greeting',
212
+ * quickReplyAction: { shortcut: '/oi', message: 'Olá! Tudo bem?' }
213
+ * })
214
+ * ```
215
+ */
216
+ set(input: WaSetMutationInput): Promise<void>;
217
+ /**
218
+ * Applies a `remove` mutation against any registered app-state schema -
219
+ * same shape as {@link set} but without the value fields (only the schema
220
+ * name + index args). Use this for schemas without a typed helper.
221
+ *
222
+ * @example
223
+ * ```ts
224
+ * // Drop a contact from the address book
225
+ * await client.chat.remove({
226
+ * schema: 'Contact',
227
+ * id: '5511999999999@s.whatsapp.net'
228
+ * })
229
+ *
230
+ * // Remove a label from a chat (the label itself stays – use LabelEdit
231
+ * // with `deleted: true` to delete the label definition entirely)
232
+ * await client.chat.remove({
233
+ * schema: 'LabelJid',
234
+ * labelId: 'label-1',
235
+ * chatJid: '5511999999999@s.whatsapp.net'
236
+ * })
237
+ *
238
+ * // Delete a quick reply
239
+ * await client.chat.remove({
240
+ * schema: 'QuickReply',
241
+ * id: 'qr-greeting'
242
+ * })
243
+ * ```
244
+ */
245
+ remove(input: WaRemoveMutationInput): Promise<void>;
35
246
  private createArchiveMutation;
36
247
  private buildChatMessageRange;
37
248
  private toChatMessageRangeMessage;
@@ -40,7 +251,6 @@ export declare class WaAppStateMutationCoordinator {
40
251
  private normalizeChatMutationJid;
41
252
  private buildMessageMutationIndex;
42
253
  private resolveMessageMutationParticipant;
43
- private buildMutationIndex;
44
254
  private describeMutationActions;
45
255
  }
46
256
  export {};
@@ -0,0 +1,117 @@
1
+ import type { WaAuthCredentials } from '../../auth/types';
2
+ import type { WaIncomingBotChunkEvent, WaIncomingMessageEvent, WaSendMessageOptions } from '../types';
3
+ import type { Logger } from '../../infra/log/types';
4
+ import type { WaMessageBuildResult, WaMessagePublishResult, WaSendMessageContent } from '../../message/types';
5
+ import { proto } from '../..';
6
+ import type { WaMessageSecretStore } from '../../store/contracts/message-secret.store';
7
+ import type { WaMessageStore } from '../../store/contracts/message.store';
8
+ import type { BinaryNode } from '../../transport/types';
9
+ export interface WaBotInfo {
10
+ readonly jid: string;
11
+ readonly fbidJid: string;
12
+ readonly personaId: string;
13
+ readonly isDefault: boolean;
14
+ readonly section?: string;
15
+ readonly count?: number;
16
+ }
17
+ export interface WaBotProfilePrompt {
18
+ readonly emoji: string;
19
+ readonly text: string;
20
+ }
21
+ export interface WaBotProfileCommand {
22
+ readonly name: string;
23
+ readonly description: string;
24
+ }
25
+ export type WaBotPosingAsProfessional = 'unknown' | 'yes' | 'no';
26
+ export interface WaBotProfileResult {
27
+ readonly name: string | null;
28
+ readonly attributes: string | null;
29
+ readonly description: string | null;
30
+ readonly category: string | null;
31
+ readonly isDefault: boolean;
32
+ readonly prompts: readonly WaBotProfilePrompt[];
33
+ readonly personaId: string | null;
34
+ readonly commands: readonly WaBotProfileCommand[];
35
+ readonly commandsDescription: string | null;
36
+ readonly isMetaCreated: boolean | null;
37
+ readonly creatorName: string | null;
38
+ readonly creatorProfileUrl: string | null;
39
+ readonly posingAsProfessional: WaBotPosingAsProfessional | null;
40
+ }
41
+ export interface WaGetBotProfileOptions {
42
+ readonly personaId?: string;
43
+ }
44
+ export interface WaBotPromptOptions extends WaSendMessageOptions {
45
+ readonly botJid?: string;
46
+ readonly personaId?: string;
47
+ readonly capabilities?: readonly proto.BotCapabilityMetadata.BotCapabilityType[];
48
+ readonly extraMentionedJids?: readonly string[];
49
+ readonly aiThreadId?: string;
50
+ readonly aiThreadType?: proto.AIThreadInfo.AIThreadClientInfo.AIThreadType;
51
+ }
52
+ /**
53
+ * Coordinates Meta-AI bot discovery, profile lookup, prompt send, and
54
+ * streaming chunk decryption. Accessed via {@link WaClient.bot}.
55
+ */
56
+ export interface WaBotCoordinator {
57
+ /** Lists the bots available to the current account, grouped by section. */
58
+ readonly listBots: () => Promise<readonly WaBotInfo[]>;
59
+ /** Fetches a single bot's profile (commands, prompts, creator metadata). */
60
+ readonly getBotProfile: (jid: string, options?: WaGetBotProfileOptions) => Promise<WaBotProfileResult | null>;
61
+ /**
62
+ * Sends a prompt to a bot. When `to` is a `@bot` JID this uses the
63
+ * direct path; for a group/chat JID, set `options.botJid` to invoke
64
+ * the bot via mention.
65
+ *
66
+ * **Where do I get a bot JID?**
67
+ * - Call {@link listBots} - returns one entry per available bot with
68
+ * both `jid` (the `@bot` JID for direct sends) and `fbidJid` (the
69
+ * form for `options.botJid` on the mention path).
70
+ * - Use the `WA_BOT_KNOWN_JIDS` constants from `zapo-js/protocol`
71
+ * when you know the target (`META_AI_PN`, `META_AI_FBID`,
72
+ * `MANUS_FBID`, `HATCH_FBID`, ...). No IQ required.
73
+ * - Read it off an incoming `message` event whose sender is a bot
74
+ * (reply scenario).
75
+ *
76
+ * **Direct path** (`to` is a `@bot` JID): generates a fresh
77
+ * `aiThreadId` unless one is reused via `options.aiThreadId`,
78
+ * attaches the bot metadata + thread proto, and sends to the bot's
79
+ * FBID JID. Subsequent prompts using the same `aiThreadId` keep the
80
+ * conversation context.
81
+ *
82
+ * **Mention path** (`to` is a group/chat JID): `options.botJid`
83
+ * **must** be set. The bot is invoked indirectly; the lib strips
84
+ * persona/invoker/capabilities/threadInfo from the inner message
85
+ * because Meta AI silently drops the request when those are present
86
+ * on the mention path. `options.aiThreadId` and `options.aiThreadType`
87
+ * are ignored here.
88
+ */
89
+ readonly sendPrompt: (to: string, content: WaSendMessageContent, options?: WaBotPromptOptions) => Promise<WaMessagePublishResult>;
90
+ /**
91
+ * Attempts to decrypt a streaming bot chunk attached to `event` and,
92
+ * on success, emits a typed `WaIncomingBotChunkEvent`. Silently
93
+ * returns when the chunk is not addressed to the current account or
94
+ * the parent prompt secret is not available.
95
+ *
96
+ * **Called automatically by {@link WaClient} on every incoming
97
+ * message** - you rarely need to invoke it directly. Multiple chunks
98
+ * arrive per response; concatenate them in arrival order using the
99
+ * `editType` field (`first` → `inner` → `last`, or a single `full`)
100
+ * to reconstruct the full reply.
101
+ */
102
+ readonly tryDecryptChunk: (event: WaIncomingMessageEvent) => Promise<void>;
103
+ }
104
+ interface WaBotCoordinatorOptions {
105
+ readonly logger: Logger;
106
+ readonly queryWithContext: (context: string, node: BinaryNode, timeoutMs?: number, contextData?: Readonly<Record<string, unknown>>) => Promise<BinaryNode>;
107
+ readonly buildMessageContent: (content: WaSendMessageContent) => Promise<WaMessageBuildResult>;
108
+ readonly sendMessage: (to: string, content: WaSendMessageContent, options?: WaSendMessageOptions) => Promise<WaMessagePublishResult>;
109
+ readonly messageStore: WaMessageStore;
110
+ readonly messageSecretStore: WaMessageSecretStore;
111
+ readonly getCurrentCredentials: () => WaAuthCredentials | null;
112
+ readonly emitBotChunk: (event: WaIncomingBotChunkEvent) => void;
113
+ readonly generateSid: () => Promise<string>;
114
+ }
115
+ /** Builds a {@link WaBotCoordinator} from its IQ/message/store dependencies. */
116
+ export declare function createBotCoordinator(options: WaBotCoordinatorOptions): WaBotCoordinator;
117
+ export {};
@@ -0,0 +1,39 @@
1
+ import type { WaAppStateMutationCoordinator, WaSetBroadcastListInput } from '../coordinators/WaAppStateMutationCoordinator';
2
+ import type { WaSendMessageOptions } from '../types';
3
+ import type { WaMessageBuildResult, WaMessagePublishResult, WaSendMessageContent } from '../../message/types';
4
+ import type { Proto } from '../..';
5
+ export interface WaBroadcastListCoordinatorOptions {
6
+ readonly appStateMutations: WaAppStateMutationCoordinator;
7
+ readonly buildMessageContent: (content: WaSendMessageContent) => Promise<WaMessageBuildResult>;
8
+ readonly publishBroadcastListMessage: (input: {
9
+ readonly listJid: string;
10
+ readonly message: Proto.IMessage;
11
+ readonly recipients: readonly string[];
12
+ readonly options?: WaSendMessageOptions;
13
+ }) => Promise<WaMessagePublishResult>;
14
+ }
15
+ export interface WaSendBroadcastListMessageInput {
16
+ readonly listJid: string;
17
+ readonly content: WaSendMessageContent;
18
+ readonly recipients: readonly string[];
19
+ readonly options?: WaSendMessageOptions;
20
+ }
21
+ /**
22
+ * Manages broadcast lists and dispatches messages to one. Accessed via
23
+ * {@link WaClient.broadcastList}.
24
+ *
25
+ * **Business-only.** Broadcast lists are backed by the
26
+ * `BusinessBroadcastList` app-state schema and are only available on
27
+ * WhatsApp Business accounts - regular accounts will see the underlying
28
+ * mutation IQs rejected by the server.
29
+ */
30
+ export interface WaBroadcastListCoordinator {
31
+ /** Creates or updates a broadcast list definition (name + recipients). */
32
+ readonly setList: (input: WaSetBroadcastListInput) => Promise<void>;
33
+ /** Deletes a broadcast list by id. */
34
+ readonly removeList: (id: string) => Promise<void>;
35
+ /** Sends a message to every member of a broadcast list. */
36
+ readonly send: (input: WaSendBroadcastListMessageInput) => Promise<WaMessagePublishResult>;
37
+ }
38
+ /** Builds a {@link WaBroadcastListCoordinator} from its dependencies. */
39
+ export declare function createBroadcastListCoordinator(options: WaBroadcastListCoordinatorOptions): WaBroadcastListCoordinator;
@@ -1,57 +1,58 @@
1
- import type { WaEditBusinessProfileInput } from '../../transport/node/builders/business';
1
+ import { type WaUploadMediaSource } from '../media';
2
+ import type { WaBusinessProfileResult, WaVerifiedNameResult } from '../types';
3
+ import type { Logger } from '../../infra/log/types';
4
+ import type { WaMediaTransferClient } from '../../media/transfer/WaMediaTransferClient';
5
+ import type { WaMediaConn } from '../../media/types';
6
+ import { type WaEditBusinessProfileInput } from '../../transport/node/builders/business';
2
7
  import type { BinaryNode } from '../../transport/types';
3
- export interface WaBusinessCategory {
4
- readonly id: string;
5
- readonly name: string;
6
- }
7
- export interface WaBusinessHoursEntry {
8
- readonly dayOfWeek: string;
9
- readonly mode: string;
10
- readonly openTime?: number;
11
- readonly closeTime?: number;
12
- }
13
- export interface WaBusinessHours {
14
- readonly timezone?: string;
15
- readonly config: readonly WaBusinessHoursEntry[];
16
- }
17
- export interface WaBusinessWebsite {
18
- readonly url: string;
19
- }
20
- export interface WaBusinessProfileResult {
8
+ export interface WaVerifiedNameBatchEntry {
21
9
  readonly jid: string;
22
- readonly tag?: string;
23
- readonly description?: string;
24
- readonly address?: string;
25
- readonly email?: string;
26
- readonly websites?: readonly WaBusinessWebsite[];
27
- readonly categories?: readonly WaBusinessCategory[];
28
- readonly businessHours?: WaBusinessHours;
29
- readonly latitude?: number;
30
- readonly longitude?: number;
31
- readonly profileOptions?: Readonly<Record<string, string>>;
32
- }
33
- export interface WaVerifiedNamePrivacyMode {
34
- readonly actualActors: number;
35
- readonly hostStorage: number;
36
- readonly privacyModeTs: number;
37
- }
38
- export interface WaVerifiedNameResult {
39
- readonly name?: string;
40
- readonly level?: string;
41
- readonly serial?: string;
42
- readonly isApi: boolean;
43
- readonly isSmb: boolean;
44
- readonly privacyMode?: WaVerifiedNamePrivacyMode;
45
- }
10
+ readonly verifiedName: WaVerifiedNameResult | null;
11
+ }
12
+ /**
13
+ * Coordinates WhatsApp Business profile reads/writes (profile body, verified
14
+ * name, cover photo). Accessed via {@link WaClient.business}.
15
+ *
16
+ * Read methods (`getBusinessProfile`, `getVerifiedName`, `getVerifiedNames`)
17
+ * work from any account. Write methods (`editBusinessProfile`,
18
+ * `updateCoverPhoto`, `deleteCoverPhoto`) are **business-only**: they target
19
+ * the current account's own business profile and the server rejects them
20
+ * when the account is not registered as a WhatsApp Business account.
21
+ */
46
22
  export interface WaBusinessCoordinator {
23
+ /** Batched fetch of business profile bodies (about, address, hours, ...). */
47
24
  readonly getBusinessProfile: (jids: readonly string[]) => Promise<readonly WaBusinessProfileResult[]>;
25
+ /**
26
+ * Edits the current account's business profile. **Business-only** - throws
27
+ * on regular WhatsApp accounts.
28
+ */
48
29
  readonly editBusinessProfile: (input: WaEditBusinessProfileInput) => Promise<void>;
30
+ /** Fetches a single business verified-name record (or `null`). */
49
31
  readonly getVerifiedName: (jid: string) => Promise<WaVerifiedNameResult | null>;
50
- readonly updateCoverPhoto: (id: string, timestamp: string, token: string) => Promise<void>;
32
+ /** Batched verified-name lookup over many JIDs (usync). */
33
+ readonly getVerifiedNames: (jids: readonly string[]) => Promise<readonly WaVerifiedNameBatchEntry[]>;
34
+ /**
35
+ * Uploads and binds a new business cover photo. Returns the server-side
36
+ * upload id – feed it back into {@link deleteCoverPhoto} to remove the
37
+ * cover later. **Business-only** - throws on regular WhatsApp accounts.
38
+ */
39
+ readonly updateCoverPhoto: (media: WaUploadMediaSource) => Promise<{
40
+ readonly id: string;
41
+ }>;
42
+ /**
43
+ * Deletes the business cover photo by upload id (returned from
44
+ * {@link updateCoverPhoto}). **Business-only** - throws on regular
45
+ * WhatsApp accounts.
46
+ */
51
47
  readonly deleteCoverPhoto: (id: string) => Promise<void>;
52
48
  }
53
49
  interface WaBusinessCoordinatorOptions {
54
50
  readonly queryWithContext: (context: string, node: BinaryNode, timeoutMs?: number, contextData?: Readonly<Record<string, unknown>>) => Promise<BinaryNode>;
51
+ readonly mediaTransfer: WaMediaTransferClient;
52
+ readonly getMediaConn: () => Promise<WaMediaConn>;
53
+ readonly logger: Logger;
54
+ readonly generateSid: () => Promise<string>;
55
55
  }
56
+ /** Builds a {@link WaBusinessCoordinator} from its IQ/media dependencies. */
56
57
  export declare function createBusinessCoordinator(options: WaBusinessCoordinatorOptions): WaBusinessCoordinator;
57
58
  export {};
@@ -0,0 +1,40 @@
1
+ import { type WaEmailContext } from '../../protocol/email';
2
+ import { type BuildRequestEmailVerificationCodeInput } from '../../transport/node/builders/email';
3
+ import type { BinaryNode } from '../../transport/types';
4
+ export interface WaEmailStatus {
5
+ readonly email: string | null;
6
+ readonly verified: boolean;
7
+ readonly confirmed: boolean;
8
+ }
9
+ export interface WaEmailVerifyCodeResult {
10
+ readonly verified: boolean;
11
+ readonly autoVerifyFailed: boolean;
12
+ readonly email: string | null;
13
+ }
14
+ /**
15
+ * Coordinates the email-on-account flow: read state, bind/unbind, request
16
+ * verification code, submit the code, and confirm. Accessed via
17
+ * {@link WaClient.email}.
18
+ *
19
+ * **Mobile-only.** Email binding is only available when the client is
20
+ * connected via the WhatsApp Mobile transport (`options.mobileTransport`).
21
+ * Every method throws against a regular Web/companion connection because
22
+ * the server rejects the underlying IQ.
23
+ */
24
+ export interface WaEmailCoordinator {
25
+ /** Returns the current email binding (address + verified/confirmed flags). */
26
+ readonly getStatus: () => Promise<WaEmailStatus>;
27
+ /** Binds (or rebinds) an email address to the account. */
28
+ readonly setEmail: (email: string, context?: WaEmailContext) => Promise<WaEmailStatus>;
29
+ /** Asks the server to send a verification code to the bound address. */
30
+ readonly requestVerificationCode: (input: BuildRequestEmailVerificationCodeInput) => Promise<void>;
31
+ /** Submits a verification code received via email. */
32
+ readonly verifyCode: (code: string) => Promise<WaEmailVerifyCodeResult>;
33
+ /** Confirms email ownership (post-verification handshake). */
34
+ readonly confirm: (context?: WaEmailContext) => Promise<void>;
35
+ }
36
+ export interface WaEmailCoordinatorOptions {
37
+ readonly queryWithContext: (context: string, node: BinaryNode, timeoutMs?: number, contextData?: Readonly<Record<string, unknown>>) => Promise<BinaryNode>;
38
+ }
39
+ /** Builds a {@link WaEmailCoordinator} backed by the given IQ query function. */
40
+ export declare function createEmailCoordinator(options: WaEmailCoordinatorOptions): WaEmailCoordinator;