zapo-js 0.3.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 (774) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +97 -177
  3. package/dist/appstate/{WaAppStateCrypto.js → crypto/WaAppStateCrypto.js} +58 -49
  4. package/dist/appstate/index.js +7 -6
  5. package/dist/appstate/{encoding.js → parsers/encoding.js} +11 -4
  6. package/dist/appstate/{response-parser.js → parsers/response-parser.js} +20 -8
  7. package/dist/appstate/{WaAppStateSyncClient.js → sync/WaAppStateSyncClient.js} +174 -53
  8. package/dist/appstate/utils.js +16 -0
  9. package/dist/appstate-spec.js +89 -0
  10. package/dist/auth/WaAuthClient.js +100 -5
  11. package/dist/auth/credentials-flow.js +19 -7
  12. package/dist/auth/pairing/WaPairingFlow.js +33 -24
  13. package/dist/auth/pairing/pairing-code-crypto.js +16 -18
  14. package/dist/client/WaClient.js +342 -473
  15. package/dist/client/WaClientFactory.js +279 -78
  16. package/dist/client/connection/WaConnectionManager.js +28 -11
  17. package/dist/client/coordinators/WaAbPropsCoordinator.js +1 -2
  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 -171
  22. package/dist/client/coordinators/WaEmailCoordinator.js +1 -0
  23. package/dist/client/coordinators/WaGroupCoordinator.js +529 -52
  24. package/dist/client/coordinators/WaIncomingNodeCoordinator.js +97 -12
  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 +682 -204
  28. package/dist/client/coordinators/WaNewsletterCoordinator.js +18 -0
  29. package/dist/client/coordinators/WaPassiveTasksCoordinator.js +17 -4
  30. package/dist/client/coordinators/WaPresenceCoordinator.js +21 -0
  31. package/dist/client/coordinators/WaPrivacyCoordinator.js +7 -5
  32. package/dist/client/coordinators/WaProfileCoordinator.js +220 -49
  33. package/dist/client/coordinators/WaRetryCoordinator.js +256 -125
  34. package/dist/client/coordinators/WaStatusCoordinator.js +49 -0
  35. package/dist/client/coordinators/WaStreamControlCoordinator.js +6 -6
  36. package/dist/client/coordinators/WaTrustedContactTokenCoordinator.js +7 -6
  37. package/dist/client/events/appstate-mutation.js +133 -0
  38. package/dist/client/events/business.js +375 -0
  39. package/dist/client/events/call.js +58 -0
  40. package/dist/client/events/chatstate.js +23 -0
  41. package/dist/client/events/devices.js +15 -16
  42. package/dist/client/{dirty.js → events/dirty.js} +33 -19
  43. package/dist/client/events/group.js +13 -24
  44. package/dist/client/events/identity.js +2 -1
  45. package/dist/client/events/incoming.js +502 -0
  46. package/dist/client/events/mex-notification.js +181 -0
  47. package/dist/client/events/picture.js +33 -0
  48. package/dist/client/events/presence.js +44 -0
  49. package/dist/client/events/receipt.js +26 -0
  50. package/dist/client/media.js +161 -4
  51. package/dist/client/messaging/fanout.js +9 -10
  52. package/dist/client/messaging/{participants.js → group-metadata.js} +73 -35
  53. package/dist/client/messaging/ignore-key.js +132 -0
  54. package/dist/client/messaging/key-protocol.js +3 -17
  55. package/dist/client/messaging/link-preview.js +159 -0
  56. package/dist/client/messaging/messages.js +671 -0
  57. package/dist/client/newsletter/admin.js +165 -0
  58. package/dist/client/newsletter/content.js +253 -0
  59. package/dist/client/newsletter/discovery.js +115 -0
  60. package/dist/client/newsletter/messaging.js +197 -0
  61. package/dist/client/newsletter/mex.js +41 -0
  62. package/dist/client/newsletter/parse.js +217 -0
  63. package/dist/client/persistence/WriteBehindPersistence.js +31 -4
  64. package/dist/client/{history-sync.js → persistence/history-sync.js} +125 -18
  65. package/dist/client/persistence/mailbox.js +104 -0
  66. package/dist/client/tokens/cs-token.js +11 -17
  67. package/dist/crypto/core/hkdf.js +12 -12
  68. package/dist/crypto/core/index.js +6 -8
  69. package/dist/crypto/core/keys.js +1 -8
  70. package/dist/crypto/core/nonce.js +12 -12
  71. package/dist/crypto/core/primitives.js +123 -93
  72. package/dist/crypto/core/random.js +6 -0
  73. package/dist/crypto/core/xeddsa.js +11 -9
  74. package/dist/crypto/curves/Ed25519.js +32 -21
  75. package/dist/crypto/curves/X25519.js +70 -34
  76. package/dist/crypto/curves/constants.js +2 -1
  77. package/dist/crypto/math/constants.js +1 -2
  78. package/dist/crypto/math/mod.js +0 -33
  79. package/dist/esm/appstate/{WaAppStateCrypto.js → crypto/WaAppStateCrypto.js} +58 -49
  80. package/dist/esm/appstate/index.js +5 -5
  81. package/dist/esm/appstate/{encoding.js → parsers/encoding.js} +11 -4
  82. package/dist/esm/appstate/{response-parser.js → parsers/response-parser.js} +20 -8
  83. package/dist/esm/appstate/{WaAppStateSyncClient.js → sync/WaAppStateSyncClient.js} +174 -52
  84. package/dist/esm/appstate/utils.js +16 -0
  85. package/dist/esm/appstate-spec.js +79 -0
  86. package/dist/esm/auth/WaAuthClient.js +100 -5
  87. package/dist/esm/auth/credentials-flow.js +18 -6
  88. package/dist/esm/auth/pairing/WaPairingFlow.js +34 -25
  89. package/dist/esm/auth/pairing/pairing-code-crypto.js +12 -14
  90. package/dist/esm/client/WaClient.js +345 -476
  91. package/dist/esm/client/WaClientFactory.js +280 -79
  92. package/dist/esm/client/connection/WaConnectionManager.js +28 -11
  93. package/dist/esm/client/coordinators/WaAbPropsCoordinator.js +2 -3
  94. package/dist/esm/client/coordinators/WaAppStateMutationCoordinator.js +665 -145
  95. package/dist/esm/client/coordinators/WaBotCoordinator.js +342 -0
  96. package/dist/esm/client/coordinators/WaBroadcastListCoordinator.js +17 -0
  97. package/dist/esm/client/coordinators/WaBusinessCoordinator.js +79 -169
  98. package/dist/esm/client/coordinators/WaEmailCoordinator.js +1 -0
  99. package/dist/esm/client/coordinators/WaGroupCoordinator.js +532 -55
  100. package/dist/esm/client/coordinators/WaIncomingNodeCoordinator.js +98 -13
  101. package/dist/esm/client/coordinators/WaLowLevelCoordinator.js +38 -0
  102. package/dist/esm/client/coordinators/WaMessageCoordinator.js +361 -0
  103. package/dist/esm/client/coordinators/WaMessageDispatchCoordinator.js +686 -208
  104. package/dist/esm/client/coordinators/WaNewsletterCoordinator.js +13 -0
  105. package/dist/esm/client/coordinators/WaPassiveTasksCoordinator.js +18 -5
  106. package/dist/esm/client/coordinators/WaPresenceCoordinator.js +18 -0
  107. package/dist/esm/client/coordinators/WaPrivacyCoordinator.js +7 -5
  108. package/dist/esm/client/coordinators/WaProfileCoordinator.js +223 -52
  109. package/dist/esm/client/coordinators/WaRetryCoordinator.js +258 -127
  110. package/dist/esm/client/coordinators/WaStatusCoordinator.js +46 -0
  111. package/dist/esm/client/coordinators/WaStreamControlCoordinator.js +6 -6
  112. package/dist/esm/client/coordinators/WaTrustedContactTokenCoordinator.js +7 -6
  113. package/dist/esm/client/events/appstate-mutation.js +130 -0
  114. package/dist/esm/client/events/business.js +370 -0
  115. package/dist/esm/client/events/call.js +55 -0
  116. package/dist/esm/client/events/chatstate.js +20 -0
  117. package/dist/esm/client/events/devices.js +15 -16
  118. package/dist/esm/client/{dirty.js → events/dirty.js} +33 -19
  119. package/dist/esm/client/events/group.js +14 -25
  120. package/dist/esm/client/events/identity.js +2 -1
  121. package/dist/esm/client/events/incoming.js +487 -0
  122. package/dist/esm/client/events/mex-notification.js +178 -0
  123. package/dist/esm/client/events/picture.js +30 -0
  124. package/dist/esm/client/events/presence.js +41 -0
  125. package/dist/esm/client/events/receipt.js +23 -0
  126. package/dist/esm/client/media.js +156 -6
  127. package/dist/esm/client/messaging/fanout.js +10 -11
  128. package/dist/esm/client/messaging/{participants.js → group-metadata.js} +72 -34
  129. package/dist/esm/client/messaging/ignore-key.js +126 -0
  130. package/dist/esm/client/messaging/key-protocol.js +3 -17
  131. package/dist/esm/client/messaging/link-preview.js +156 -0
  132. package/dist/esm/client/messaging/messages.js +667 -0
  133. package/dist/esm/client/newsletter/admin.js +162 -0
  134. package/dist/esm/client/newsletter/content.js +249 -0
  135. package/dist/esm/client/newsletter/discovery.js +112 -0
  136. package/dist/esm/client/newsletter/messaging.js +194 -0
  137. package/dist/esm/client/newsletter/mex.js +37 -0
  138. package/dist/esm/client/newsletter/parse.js +200 -0
  139. package/dist/esm/client/persistence/WriteBehindPersistence.js +31 -4
  140. package/dist/esm/client/{history-sync.js → persistence/history-sync.js} +124 -18
  141. package/dist/esm/client/persistence/mailbox.js +101 -0
  142. package/dist/esm/client/tokens/cs-token.js +12 -18
  143. package/dist/esm/crypto/core/hkdf.js +14 -14
  144. package/dist/esm/crypto/core/index.js +2 -2
  145. package/dist/esm/crypto/core/keys.js +1 -7
  146. package/dist/esm/crypto/core/nonce.js +11 -11
  147. package/dist/esm/crypto/core/primitives.js +121 -88
  148. package/dist/esm/crypto/core/random.js +6 -0
  149. package/dist/esm/crypto/core/xeddsa.js +11 -9
  150. package/dist/esm/crypto/curves/Ed25519.js +35 -24
  151. package/dist/esm/crypto/curves/X25519.js +72 -36
  152. package/dist/esm/crypto/curves/constants.js +1 -0
  153. package/dist/esm/crypto/math/constants.js +1 -2
  154. package/dist/esm/crypto/math/mod.js +0 -32
  155. package/dist/esm/index.js +7 -2
  156. package/dist/esm/infra/log/ConsoleLogger.js +30 -6
  157. package/dist/esm/infra/log/PinoLogger.js +64 -0
  158. package/dist/esm/infra/log/types.js +4 -2
  159. package/dist/esm/infra/perf/BackgroundQueue.js +55 -13
  160. package/dist/esm/media/constants.js +33 -2
  161. package/dist/esm/media/crypto/WaMediaCrypto.js +374 -0
  162. package/dist/esm/media/index.js +4 -3
  163. package/dist/esm/media/sticker/sticker-pack.js +133 -0
  164. package/dist/esm/media/{WaMediaTransferClient.js → transfer/WaMediaTransferClient.js} +37 -6
  165. package/dist/esm/media/{conn.js → transfer/conn.js} +10 -5
  166. package/dist/esm/message/WaMessageClient.js +46 -15
  167. package/dist/esm/message/addons/link-preview/builder.js +36 -0
  168. package/dist/esm/message/addons/link-preview/detect.js +55 -0
  169. package/dist/esm/message/addons/link-preview/fetcher.js +391 -0
  170. package/dist/esm/message/addons/link-preview/types.js +1 -0
  171. package/dist/esm/message/context-info.js +123 -0
  172. package/dist/esm/message/{addon-crypto.js → crypto/addon-crypto.js} +68 -10
  173. package/dist/esm/message/{icdc.js → crypto/icdc.js} +5 -7
  174. package/dist/esm/message/crypto/phash.js +133 -0
  175. package/dist/esm/message/{reporting-token.js → crypto/reporting-token.js} +6 -6
  176. package/dist/esm/message/{use-case-secret.js → crypto/use-case-secret.js} +20 -3
  177. package/dist/esm/message/{content.js → encode/content.js} +176 -7
  178. package/dist/esm/message/encode/media-payload.js +42 -0
  179. package/dist/esm/message/{padding.js → encode/padding.js} +9 -3
  180. package/dist/esm/message/index.js +2 -2
  181. package/dist/esm/message/kinds/bot.js +111 -0
  182. package/dist/esm/message/kinds/newsletter.js +244 -0
  183. package/dist/esm/message/kinds/sticker-pack.js +29 -0
  184. package/dist/esm/message/{ack.js → primitives/ack.js} +8 -1
  185. package/dist/esm/message/{incoming.js → primitives/incoming.js} +215 -31
  186. package/dist/esm/message/primitives/peer-data-operation.js +93 -0
  187. package/dist/esm/mex.js +1 -0
  188. package/dist/esm/protocol/abprops.js +10 -0
  189. package/dist/esm/protocol/appstate.js +6 -30
  190. package/dist/esm/protocol/auth.js +3 -2
  191. package/dist/esm/protocol/bot.js +77 -0
  192. package/dist/esm/protocol/browser.js +8 -0
  193. package/dist/esm/protocol/business.js +19 -0
  194. package/dist/esm/protocol/call.js +48 -0
  195. package/dist/esm/protocol/constants.js +8 -2
  196. package/dist/esm/protocol/defaults.js +3 -0
  197. package/dist/esm/protocol/index.js +1 -1
  198. package/dist/esm/protocol/jid.js +102 -5
  199. package/dist/esm/protocol/media.js +25 -12
  200. package/dist/esm/protocol/message.js +4 -1
  201. package/dist/esm/protocol/newsletter.js +61 -0
  202. package/dist/esm/protocol/nodes.js +22 -2
  203. package/dist/esm/protocol/notification.js +18 -2
  204. package/dist/esm/protocol/presence.js +13 -0
  205. package/dist/esm/protocol/status.js +6 -0
  206. package/dist/esm/retry/codec.js +5 -0
  207. package/dist/esm/retry/parse.js +20 -38
  208. package/dist/esm/retry/reason.js +5 -0
  209. package/dist/esm/retry/replay.js +131 -37
  210. package/dist/esm/retry/tracker.js +4 -8
  211. package/dist/esm/signal/api/SignalDeviceSyncApi.js +66 -19
  212. package/dist/esm/signal/api/SignalDigestSyncApi.js +7 -2
  213. package/dist/esm/signal/api/SignalIdentitySyncApi.js +9 -0
  214. package/dist/esm/signal/api/SignalMissingPreKeysSyncApi.js +24 -63
  215. package/dist/esm/signal/api/SignalRotateKeyApi.js +10 -0
  216. package/dist/esm/signal/api/SignalSessionSyncApi.js +23 -51
  217. package/dist/esm/signal/api/codec.js +52 -1
  218. package/dist/esm/signal/api/prekeys.js +4 -0
  219. package/dist/esm/signal/{crypto → attestation}/WaAdvSignature.js +5 -6
  220. package/dist/esm/signal/constants.js +3 -0
  221. package/dist/esm/signal/encoding.js +6 -289
  222. package/dist/esm/signal/group/SenderKeyChain.js +18 -33
  223. package/dist/esm/signal/group/SenderKeyManager.js +25 -8
  224. package/dist/esm/signal/group/encoding.js +96 -0
  225. package/dist/esm/signal/index.js +4 -1
  226. package/dist/esm/signal/registration/encoding.js +34 -0
  227. package/dist/esm/signal/registration/keygen.js +10 -0
  228. package/dist/esm/signal/registration/utils.js +6 -0
  229. package/dist/esm/signal/session/SignalProtocol.js +113 -11
  230. package/dist/esm/signal/session/SignalRatchet.js +29 -58
  231. package/dist/esm/signal/session/SignalSession.js +7 -14
  232. package/dist/esm/signal/session/encoding.js +173 -0
  233. package/dist/esm/signal/session/resolver.js +139 -30
  234. package/dist/esm/store/cache/identity.cache.js +75 -0
  235. package/dist/esm/store/cache/privacy-token.cache.js +57 -0
  236. package/dist/esm/store/cache/sender-key.cache.js +101 -0
  237. package/dist/esm/store/cache/session.cache.js +92 -0
  238. package/dist/esm/store/contracts/group-metadata.store.js +1 -0
  239. package/dist/esm/store/createStore.js +91 -37
  240. package/dist/esm/store/index.js +15 -14
  241. package/dist/esm/store/locks/contact.lock.js +1 -0
  242. package/dist/esm/store/locks/device-list.lock.js +1 -0
  243. package/dist/esm/store/locks/group-metadata.lock.js +20 -0
  244. package/dist/esm/store/{providers/memory → memory}/appstate.store.js +5 -5
  245. package/dist/esm/store/memory/auth.store.js +24 -0
  246. package/dist/esm/store/memory/contact.store.js +79 -0
  247. package/dist/esm/store/memory/device-list.store.js +103 -0
  248. package/dist/esm/store/{providers/memory/participants.store.js → memory/group-metadata.store.js} +22 -13
  249. package/dist/esm/store/{providers/memory → memory}/identity.store.js +3 -3
  250. package/dist/esm/store/{providers/memory → memory}/message-secret.store.js +17 -8
  251. package/dist/esm/store/{providers/memory → memory}/message.store.js +2 -2
  252. package/dist/esm/store/{providers/memory → memory}/pre-key.store.js +2 -2
  253. package/dist/esm/store/{providers/memory → memory}/privacy-token.store.js +1 -1
  254. package/dist/esm/store/{providers/memory → memory}/retry.store.js +28 -7
  255. package/dist/esm/store/{providers/memory → memory}/sender-key.store.js +3 -3
  256. package/dist/esm/store/{providers/memory → memory}/session.store.js +3 -3
  257. package/dist/esm/store/{providers/memory → memory}/thread.store.js +2 -2
  258. package/dist/esm/store/noop.store.js +6 -4
  259. package/dist/esm/transport/WaComms.js +14 -5
  260. package/dist/esm/transport/WaWebSocket.js +32 -8
  261. package/dist/esm/transport/binary/constants.js +10 -4
  262. package/dist/esm/transport/binary/decoder.js +21 -15
  263. package/dist/esm/transport/binary/encoder.js +96 -21
  264. package/dist/esm/transport/binary/tokens.js +12 -12
  265. package/dist/esm/transport/index.js +1 -0
  266. package/dist/esm/transport/keepalive/WaKeepAlive.js +18 -4
  267. package/dist/esm/transport/node/WaMobileTcpSocket.js +6 -0
  268. package/dist/esm/transport/node/WaNodeOrchestrator.js +9 -5
  269. package/dist/esm/transport/node/WaNodeTransport.js +13 -0
  270. package/dist/esm/transport/node/builders/abprops.js +2 -2
  271. package/dist/esm/transport/node/builders/account-sync.js +7 -15
  272. package/dist/esm/transport/node/builders/bot.js +38 -0
  273. package/dist/esm/transport/node/builders/business.js +30 -30
  274. package/dist/esm/transport/node/builders/chatstate.js +28 -0
  275. package/dist/esm/transport/node/builders/community.js +53 -0
  276. package/dist/esm/transport/node/builders/device.js +2 -2
  277. package/dist/esm/transport/node/builders/email.js +6 -5
  278. package/dist/esm/transport/node/builders/global.js +1 -1
  279. package/dist/esm/transport/node/builders/group.js +114 -4
  280. package/dist/esm/transport/node/builders/media.js +2 -2
  281. package/dist/esm/transport/node/builders/message.js +83 -49
  282. package/dist/esm/transport/node/builders/newsletter.js +176 -0
  283. package/dist/esm/transport/node/builders/passive.js +7 -0
  284. package/dist/esm/transport/node/builders/prekeys.js +4 -4
  285. package/dist/esm/transport/node/builders/presence.js +27 -1
  286. package/dist/esm/transport/node/builders/privacy-token.js +2 -2
  287. package/dist/esm/transport/node/builders/privacy.js +6 -6
  288. package/dist/esm/transport/node/builders/profile.js +28 -8
  289. package/dist/esm/transport/node/builders/tos.js +58 -0
  290. package/dist/esm/transport/node/builders/usync.js +51 -2
  291. package/dist/esm/transport/node/helpers.js +3 -1
  292. package/dist/esm/transport/node/mex/argo-decoder.js +2 -2
  293. package/dist/esm/transport/node/mex/client.js +22 -0
  294. package/dist/esm/transport/node/query.js +17 -0
  295. package/dist/esm/transport/node/usync.js +12 -0
  296. package/dist/esm/transport/noise/WaClientPayload.js +8 -8
  297. package/dist/esm/transport/noise/WaMobileClientPayload.js +5 -0
  298. package/dist/esm/transport/noise/WaNoiseCert.js +5 -0
  299. package/dist/esm/transport/noise/WaNoiseHandshake.js +27 -25
  300. package/dist/esm/transport/noise/WaNoiseSession.js +39 -59
  301. package/dist/esm/transport/noise/WaNoiseSocket.js +19 -13
  302. package/dist/esm/transport/noise/constants.js +0 -1
  303. package/dist/esm/transport/proxy.js +5 -0
  304. package/dist/esm/transport/stream/parse.js +3 -7
  305. package/dist/esm/transport/wa-web-version-fetcher.js +91 -0
  306. package/dist/esm/util/async.js +4 -0
  307. package/dist/esm/util/bytes.js +37 -2
  308. package/dist/esm/util/clock.js +15 -0
  309. package/dist/esm/util/coercion.js +45 -3
  310. package/dist/esm/util/collections.js +11 -0
  311. package/dist/esm/util/index.js +2 -2
  312. package/dist/esm/util/primitives.js +19 -0
  313. package/dist/esm/util/runtime.js +5 -0
  314. package/dist/esm/version-spec.js +1 -0
  315. package/dist/index.js +31 -1
  316. package/dist/infra/log/ConsoleLogger.js +30 -6
  317. package/dist/infra/log/PinoLogger.js +64 -0
  318. package/dist/infra/log/types.js +4 -2
  319. package/dist/infra/perf/BackgroundQueue.js +55 -13
  320. package/dist/media/constants.js +34 -3
  321. package/dist/media/crypto/WaMediaCrypto.js +378 -0
  322. package/dist/media/index.js +9 -4
  323. package/dist/media/sticker/sticker-pack.js +136 -0
  324. package/dist/media/{WaMediaTransferClient.js → transfer/WaMediaTransferClient.js} +37 -6
  325. package/dist/media/{conn.js → transfer/conn.js} +10 -5
  326. package/dist/message/WaMessageClient.js +46 -15
  327. package/dist/message/addons/link-preview/builder.js +39 -0
  328. package/dist/message/addons/link-preview/detect.js +58 -0
  329. package/dist/message/addons/link-preview/fetcher.js +394 -0
  330. package/dist/message/addons/link-preview/types.js +2 -0
  331. package/dist/message/context-info.js +129 -0
  332. package/dist/message/{addon-crypto.js → crypto/addon-crypto.js} +68 -10
  333. package/dist/message/{icdc.js → crypto/icdc.js} +5 -7
  334. package/dist/message/crypto/phash.js +136 -0
  335. package/dist/message/{reporting-token.js → crypto/reporting-token.js} +6 -6
  336. package/dist/message/{use-case-secret.js → crypto/use-case-secret.js} +20 -3
  337. package/dist/message/{content.js → encode/content.js} +192 -7
  338. package/dist/message/encode/media-payload.js +45 -0
  339. package/dist/message/{padding.js → encode/padding.js} +9 -3
  340. package/dist/message/index.js +2 -2
  341. package/dist/message/kinds/bot.js +120 -0
  342. package/dist/message/kinds/newsletter.js +248 -0
  343. package/dist/message/kinds/sticker-pack.js +34 -0
  344. package/dist/message/{ack.js → primitives/ack.js} +8 -1
  345. package/dist/message/{incoming.js → primitives/incoming.js} +216 -31
  346. package/dist/message/primitives/peer-data-operation.js +96 -0
  347. package/dist/mex.js +6 -0
  348. package/dist/proto.js +1 -1
  349. package/dist/protocol/abprops.js +10 -0
  350. package/dist/protocol/appstate.js +7 -31
  351. package/dist/protocol/auth.js +3 -2
  352. package/dist/protocol/bot.js +81 -0
  353. package/dist/protocol/browser.js +8 -0
  354. package/dist/protocol/business.js +22 -0
  355. package/dist/protocol/call.js +51 -0
  356. package/dist/protocol/constants.js +39 -3
  357. package/dist/protocol/defaults.js +3 -0
  358. package/dist/protocol/index.js +12 -3
  359. package/dist/protocol/jid.js +107 -5
  360. package/dist/protocol/media.js +25 -12
  361. package/dist/protocol/message.js +4 -1
  362. package/dist/protocol/newsletter.js +64 -0
  363. package/dist/protocol/nodes.js +22 -2
  364. package/dist/protocol/notification.js +19 -3
  365. package/dist/protocol/presence.js +16 -0
  366. package/dist/protocol/status.js +9 -0
  367. package/dist/retry/codec.js +5 -0
  368. package/dist/retry/parse.js +16 -34
  369. package/dist/retry/reason.js +5 -0
  370. package/dist/retry/replay.js +129 -35
  371. package/dist/retry/tracker.js +3 -7
  372. package/dist/signal/api/SignalDeviceSyncApi.js +64 -17
  373. package/dist/signal/api/SignalDigestSyncApi.js +6 -1
  374. package/dist/signal/api/SignalIdentitySyncApi.js +9 -0
  375. package/dist/signal/api/SignalMissingPreKeysSyncApi.js +21 -60
  376. package/dist/signal/api/SignalRotateKeyApi.js +10 -0
  377. package/dist/signal/api/SignalSessionSyncApi.js +20 -48
  378. package/dist/signal/api/codec.js +52 -0
  379. package/dist/signal/api/prekeys.js +4 -0
  380. package/dist/signal/{crypto → attestation}/WaAdvSignature.js +5 -7
  381. package/dist/signal/constants.js +4 -1
  382. package/dist/signal/encoding.js +5 -303
  383. package/dist/signal/group/SenderKeyChain.js +17 -32
  384. package/dist/signal/group/SenderKeyManager.js +24 -7
  385. package/dist/signal/group/encoding.js +101 -0
  386. package/dist/signal/index.js +13 -10
  387. package/dist/signal/registration/encoding.js +39 -0
  388. package/dist/signal/registration/keygen.js +10 -0
  389. package/dist/signal/registration/utils.js +6 -0
  390. package/dist/signal/session/SignalProtocol.js +112 -10
  391. package/dist/signal/session/SignalRatchet.js +24 -54
  392. package/dist/signal/session/SignalSession.js +6 -14
  393. package/dist/signal/session/encoding.js +183 -0
  394. package/dist/signal/session/resolver.js +139 -30
  395. package/dist/store/cache/identity.cache.js +78 -0
  396. package/dist/store/cache/privacy-token.cache.js +60 -0
  397. package/dist/store/cache/sender-key.cache.js +104 -0
  398. package/dist/store/cache/session.cache.js +95 -0
  399. package/dist/store/contracts/group-metadata.store.js +2 -0
  400. package/dist/store/createStore.js +90 -36
  401. package/dist/store/index.js +18 -16
  402. package/dist/store/locks/contact.lock.js +1 -0
  403. package/dist/store/locks/device-list.lock.js +1 -0
  404. package/dist/store/locks/group-metadata.lock.js +23 -0
  405. package/dist/store/{providers/memory → memory}/appstate.store.js +5 -5
  406. package/dist/store/memory/auth.store.js +28 -0
  407. package/dist/store/memory/contact.store.js +83 -0
  408. package/dist/store/memory/device-list.store.js +107 -0
  409. package/dist/store/{providers/memory/participants.store.js → memory/group-metadata.store.js} +24 -15
  410. package/dist/store/{providers/memory → memory}/identity.store.js +3 -3
  411. package/dist/store/{providers/memory → memory}/message-secret.store.js +17 -8
  412. package/dist/store/{providers/memory → memory}/message.store.js +2 -2
  413. package/dist/store/{providers/memory → memory}/pre-key.store.js +2 -2
  414. package/dist/store/{providers/memory → memory}/privacy-token.store.js +1 -1
  415. package/dist/store/{providers/memory → memory}/retry.store.js +28 -7
  416. package/dist/store/{providers/memory → memory}/sender-key.store.js +3 -3
  417. package/dist/store/{providers/memory → memory}/session.store.js +3 -3
  418. package/dist/store/{providers/memory → memory}/thread.store.js +2 -2
  419. package/dist/store/noop.store.js +7 -5
  420. package/dist/transport/WaComms.js +14 -5
  421. package/dist/transport/WaWebSocket.js +32 -8
  422. package/dist/transport/binary/constants.js +11 -5
  423. package/dist/transport/binary/decoder.js +24 -18
  424. package/dist/transport/binary/encoder.js +109 -34
  425. package/dist/transport/binary/tokens.js +12 -12
  426. package/dist/transport/index.js +3 -1
  427. package/dist/transport/keepalive/WaKeepAlive.js +18 -4
  428. package/dist/transport/node/WaMobileTcpSocket.js +6 -0
  429. package/dist/transport/node/WaNodeOrchestrator.js +9 -5
  430. package/dist/transport/node/WaNodeTransport.js +13 -0
  431. package/dist/transport/node/builders/abprops.js +1 -1
  432. package/dist/transport/node/builders/account-sync.js +7 -16
  433. package/dist/transport/node/builders/bot.js +43 -0
  434. package/dist/transport/node/builders/business.js +31 -31
  435. package/dist/transport/node/builders/chatstate.js +31 -0
  436. package/dist/transport/node/builders/community.js +59 -0
  437. package/dist/transport/node/builders/device.js +1 -1
  438. package/dist/transport/node/builders/email.js +6 -5
  439. package/dist/transport/node/builders/global.js +1 -1
  440. package/dist/transport/node/builders/group.js +121 -3
  441. package/dist/transport/node/builders/media.js +1 -1
  442. package/dist/transport/node/builders/message.js +84 -49
  443. package/dist/transport/node/builders/newsletter.js +183 -0
  444. package/dist/transport/node/builders/passive.js +10 -0
  445. package/dist/transport/node/builders/prekeys.js +3 -3
  446. package/dist/transport/node/builders/presence.js +28 -1
  447. package/dist/transport/node/builders/privacy-token.js +1 -1
  448. package/dist/transport/node/builders/privacy.js +5 -5
  449. package/dist/transport/node/builders/profile.js +30 -7
  450. package/dist/transport/node/builders/tos.js +63 -0
  451. package/dist/transport/node/builders/usync.js +52 -1
  452. package/dist/transport/node/helpers.js +2 -1
  453. package/dist/transport/node/mex/argo-decoder.js +2 -2
  454. package/dist/transport/node/mex/client.js +23 -0
  455. package/dist/transport/node/query.js +17 -0
  456. package/dist/transport/node/usync.js +13 -0
  457. package/dist/transport/noise/WaClientPayload.js +8 -8
  458. package/dist/transport/noise/WaMobileClientPayload.js +5 -0
  459. package/dist/transport/noise/WaNoiseCert.js +5 -0
  460. package/dist/transport/noise/WaNoiseHandshake.js +25 -23
  461. package/dist/transport/noise/WaNoiseSession.js +39 -59
  462. package/dist/transport/noise/WaNoiseSocket.js +18 -12
  463. package/dist/transport/noise/constants.js +1 -2
  464. package/dist/transport/proxy.js +5 -0
  465. package/dist/transport/stream/parse.js +3 -7
  466. package/dist/transport/wa-web-version-fetcher.js +94 -0
  467. package/dist/types/appstate/constants.d.ts +1 -1
  468. package/dist/types/appstate/{WaAppStateCrypto.d.ts → crypto/WaAppStateCrypto.d.ts} +26 -9
  469. package/dist/types/appstate/index.d.ts +5 -5
  470. package/dist/types/appstate/{encoding.d.ts → parsers/encoding.d.ts} +8 -1
  471. package/dist/types/appstate/{response-parser.d.ts → parsers/response-parser.d.ts} +13 -3
  472. package/dist/types/appstate/sync/WaAppStateSyncClient.d.ts +105 -0
  473. package/dist/types/appstate/utils.d.ts +17 -1
  474. package/dist/types/appstate-spec.d.ts +24 -0
  475. package/dist/types/auth/WaAuthClient.d.ts +89 -3
  476. package/dist/types/auth/credentials-flow.d.ts +4 -3
  477. package/dist/types/auth/pairing/pairing-code-crypto.d.ts +0 -1
  478. package/dist/types/auth/types.d.ts +48 -1
  479. package/dist/types/client/WaClient.d.ts +178 -71
  480. package/dist/types/client/WaClientFactory.d.ts +30 -5
  481. package/dist/types/client/connection/WaConnectionManager.d.ts +4 -2
  482. package/dist/types/client/connection/WaReceiptQueue.d.ts +1 -1
  483. package/dist/types/client/coordinators/WaAppStateMutationCoordinator.d.ts +215 -5
  484. package/dist/types/client/coordinators/WaBotCoordinator.d.ts +117 -0
  485. package/dist/types/client/coordinators/WaBroadcastListCoordinator.d.ts +39 -0
  486. package/dist/types/client/coordinators/WaBusinessCoordinator.d.ts +44 -43
  487. package/dist/types/client/coordinators/WaEmailCoordinator.d.ts +16 -0
  488. package/dist/types/client/coordinators/WaGroupCoordinator.d.ts +311 -9
  489. package/dist/types/client/coordinators/WaIncomingNodeCoordinator.d.ts +11 -4
  490. package/dist/types/client/coordinators/WaLowLevelCoordinator.d.ts +47 -0
  491. package/dist/types/client/coordinators/WaMessageCoordinator.d.ts +232 -0
  492. package/dist/types/client/coordinators/WaMessageDispatchCoordinator.d.ts +54 -31
  493. package/dist/types/client/coordinators/WaNewsletterCoordinator.d.ts +13 -0
  494. package/dist/types/client/coordinators/WaPassiveTasksCoordinator.d.ts +4 -3
  495. package/dist/types/client/coordinators/WaPresenceCoordinator.d.ts +27 -0
  496. package/dist/types/client/coordinators/WaPrivacyCoordinator.d.ts +27 -0
  497. package/dist/types/client/coordinators/WaProfileCoordinator.d.ts +113 -0
  498. package/dist/types/client/coordinators/WaRetryCoordinator.d.ts +19 -17
  499. package/dist/types/client/coordinators/WaStatusCoordinator.d.ts +42 -0
  500. package/dist/types/client/coordinators/WaTrustedContactTokenCoordinator.d.ts +5 -1
  501. package/dist/types/client/events/abprops.d.ts +2 -1
  502. package/dist/types/client/events/appstate-mutation.d.ts +3 -0
  503. package/dist/types/client/events/business.d.ts +10 -0
  504. package/dist/types/client/events/call.d.ts +31 -0
  505. package/dist/types/client/events/chatstate.d.ts +9 -0
  506. package/dist/types/client/events/devices.d.ts +5 -4
  507. package/dist/types/client/{dirty.d.ts → events/dirty.d.ts} +4 -3
  508. package/dist/types/client/events/group.d.ts +2 -1
  509. package/dist/types/client/events/identity.d.ts +2 -1
  510. package/dist/types/client/{incoming.d.ts → events/incoming.d.ts} +27 -4
  511. package/dist/types/client/events/mex-notification.d.ts +6 -0
  512. package/dist/types/client/events/picture.d.ts +8 -0
  513. package/dist/types/client/events/presence.d.ts +28 -0
  514. package/dist/types/client/events/receipt.d.ts +14 -0
  515. package/dist/types/client/events/registration.d.ts +4 -3
  516. package/dist/types/client/index.d.ts +1 -1
  517. package/dist/types/client/media.d.ts +35 -1
  518. package/dist/types/client/messaging/fanout.d.ts +2 -2
  519. package/dist/types/client/messaging/group-metadata.d.ts +19 -0
  520. package/dist/types/client/messaging/ignore-key.d.ts +11 -0
  521. package/dist/types/client/messaging/key-protocol.d.ts +9 -7
  522. package/dist/types/client/messaging/link-preview.d.ts +19 -0
  523. package/dist/types/client/messaging/messages.d.ts +28 -0
  524. package/dist/types/client/newsletter/admin.d.ts +71 -0
  525. package/dist/types/client/newsletter/content.d.ts +42 -0
  526. package/dist/types/client/newsletter/discovery.d.ts +33 -0
  527. package/dist/types/client/newsletter/messaging.d.ts +66 -0
  528. package/dist/types/client/newsletter/mex.d.ts +14 -0
  529. package/dist/types/client/newsletter/parse.d.ts +19 -0
  530. package/dist/types/client/newsletter/types.d.ts +190 -0
  531. package/dist/types/client/persistence/WriteBehindPersistence.d.ts +12 -1
  532. package/dist/types/client/persistence/history-sync.d.ts +29 -0
  533. package/dist/types/client/{mailbox.d.ts → persistence/mailbox.d.ts} +4 -4
  534. package/dist/types/client/tokens/cs-token.d.ts +1 -3
  535. package/dist/types/client/types.d.ts +843 -71
  536. package/dist/types/crypto/core/hkdf.d.ts +10 -2
  537. package/dist/types/crypto/core/index.d.ts +2 -2
  538. package/dist/types/crypto/core/keys.d.ts +0 -4
  539. package/dist/types/crypto/core/nonce.d.ts +4 -5
  540. package/dist/types/crypto/core/primitives.d.ts +31 -20
  541. package/dist/types/crypto/core/random.d.ts +6 -0
  542. package/dist/types/crypto/core/xeddsa.d.ts +9 -0
  543. package/dist/types/crypto/curves/Ed25519.d.ts +7 -1
  544. package/dist/types/crypto/curves/X25519.d.ts +20 -1
  545. package/dist/types/crypto/curves/constants.d.ts +4 -3
  546. package/dist/types/crypto/curves/types.d.ts +0 -5
  547. package/dist/types/crypto/math/constants.d.ts +0 -1
  548. package/dist/types/crypto/math/mod.d.ts +0 -1
  549. package/dist/types/index.d.ts +32 -6
  550. package/dist/types/infra/log/ConsoleLogger.d.ts +18 -1
  551. package/dist/types/infra/log/PinoLogger.d.ts +55 -1
  552. package/dist/types/infra/log/types.d.ts +6 -0
  553. package/dist/types/infra/perf/BackgroundQueue.d.ts +19 -0
  554. package/dist/types/media/constants.d.ts +7 -2
  555. package/dist/types/media/crypto/WaMediaCrypto.d.ts +59 -0
  556. package/dist/types/media/index.d.ts +7 -5
  557. package/dist/types/media/processor.d.ts +27 -5
  558. package/dist/types/media/sticker/sticker-pack.d.ts +6 -0
  559. package/dist/types/media/{WaMediaTransferClient.d.ts → transfer/WaMediaTransferClient.d.ts} +30 -1
  560. package/dist/types/media/transfer/conn.d.ts +7 -0
  561. package/dist/types/media/types.d.ts +1 -2
  562. package/dist/types/message/WaMessageClient.d.ts +14 -0
  563. package/dist/types/message/addons/link-preview/builder.d.ts +13 -0
  564. package/dist/types/message/addons/link-preview/detect.d.ts +5 -0
  565. package/dist/types/message/addons/link-preview/fetcher.d.ts +13 -0
  566. package/dist/types/message/addons/link-preview/types.d.ts +51 -0
  567. package/dist/types/message/context-info.d.ts +66 -0
  568. package/dist/types/message/{addon-crypto.d.ts → crypto/addon-crypto.d.ts} +27 -5
  569. package/dist/types/message/{icdc.d.ts → crypto/icdc.d.ts} +4 -4
  570. package/dist/types/message/{phash.d.ts → crypto/phash.d.ts} +1 -1
  571. package/dist/types/message/{reporting-token.d.ts → crypto/reporting-token.d.ts} +2 -2
  572. package/dist/types/message/{use-case-secret.d.ts → crypto/use-case-secret.d.ts} +17 -1
  573. package/dist/types/message/encode/content.d.ts +43 -0
  574. package/dist/types/message/{device-sent.d.ts → encode/device-sent.d.ts} +1 -1
  575. package/dist/types/message/encode/media-payload.d.ts +12 -0
  576. package/dist/types/message/index.d.ts +2 -2
  577. package/dist/types/message/kinds/bot.d.ts +31 -0
  578. package/dist/types/message/kinds/newsletter.d.ts +12 -0
  579. package/dist/types/message/kinds/sticker-pack.d.ts +6 -0
  580. package/dist/types/message/{ack.d.ts → primitives/ack.d.ts} +1 -1
  581. package/dist/types/message/primitives/incoming.d.ts +21 -0
  582. package/dist/types/message/primitives/peer-data-operation.d.ts +23 -0
  583. package/dist/types/message/types.d.ts +208 -10
  584. package/dist/types/mex.d.ts +2 -0
  585. package/dist/types/proto.d.ts +2 -2
  586. package/dist/types/protocol/abprops.d.ts +9 -0
  587. package/dist/types/protocol/appstate.d.ts +4 -49
  588. package/dist/types/protocol/auth.d.ts +2 -2
  589. package/dist/types/protocol/bot.d.ts +45 -0
  590. package/dist/types/protocol/browser.d.ts +8 -0
  591. package/dist/types/protocol/business.d.ts +21 -0
  592. package/dist/types/protocol/call.d.ts +44 -0
  593. package/dist/types/protocol/constants.d.ts +16 -3
  594. package/dist/types/protocol/defaults.d.ts +3 -0
  595. package/dist/types/protocol/group.d.ts +1 -1
  596. package/dist/types/protocol/index.d.ts +2 -1
  597. package/dist/types/protocol/jid.d.ts +78 -0
  598. package/dist/types/protocol/media.d.ts +21 -13
  599. package/dist/types/protocol/message.d.ts +4 -0
  600. package/dist/types/protocol/newsletter.d.ts +65 -0
  601. package/dist/types/protocol/nodes.d.ts +20 -0
  602. package/dist/types/protocol/notification.d.ts +16 -0
  603. package/dist/types/protocol/presence.d.ts +16 -0
  604. package/dist/types/protocol/status.d.ts +7 -0
  605. package/dist/types/retry/codec.d.ts +5 -0
  606. package/dist/types/retry/index.d.ts +1 -1
  607. package/dist/types/retry/parse.d.ts +9 -0
  608. package/dist/types/retry/reason.d.ts +5 -0
  609. package/dist/types/retry/replay.d.ts +19 -5
  610. package/dist/types/retry/tracker.d.ts +10 -3
  611. package/dist/types/retry/types.d.ts +3 -8
  612. package/dist/types/signal/api/SignalDeviceSyncApi.d.ts +20 -0
  613. package/dist/types/signal/api/SignalDigestSyncApi.d.ts +10 -0
  614. package/dist/types/signal/api/SignalIdentitySyncApi.d.ts +9 -0
  615. package/dist/types/signal/api/SignalMissingPreKeysSyncApi.d.ts +8 -0
  616. package/dist/types/signal/api/SignalRotateKeyApi.d.ts +10 -0
  617. package/dist/types/signal/api/SignalSessionSyncApi.d.ts +13 -0
  618. package/dist/types/signal/api/codec.d.ts +20 -0
  619. package/dist/types/signal/api/constants.d.ts +1 -1
  620. package/dist/types/signal/api/prekeys.d.ts +4 -0
  621. package/dist/types/signal/{crypto → attestation}/WaAdvSignature.d.ts +2 -2
  622. package/dist/types/signal/attestation/constants.d.ts +4 -0
  623. package/dist/types/signal/constants.d.ts +7 -4
  624. package/dist/types/signal/encoding.d.ts +6 -68
  625. package/dist/types/signal/group/SenderKeyChain.d.ts +1 -1
  626. package/dist/types/signal/group/SenderKeyManager.d.ts +17 -0
  627. package/dist/types/signal/group/encoding.d.ts +25 -0
  628. package/dist/types/signal/index.d.ts +4 -1
  629. package/dist/types/signal/registration/encoding.d.ts +30 -0
  630. package/dist/types/signal/registration/keygen.d.ts +10 -0
  631. package/dist/types/signal/registration/utils.d.ts +5 -0
  632. package/dist/types/signal/session/SignalProtocol.d.ts +55 -0
  633. package/dist/types/signal/session/SignalRatchet.d.ts +2 -3
  634. package/dist/types/signal/session/SignalSession.d.ts +0 -1
  635. package/dist/types/signal/session/encoding.d.ts +28 -0
  636. package/dist/types/signal/session/resolver.d.ts +14 -0
  637. package/dist/types/store/cache/identity.cache.d.ts +15 -0
  638. package/dist/types/store/cache/privacy-token.cache.d.ts +15 -0
  639. package/dist/types/store/cache/sender-key.cache.d.ts +18 -0
  640. package/dist/types/store/cache/session.cache.d.ts +23 -0
  641. package/dist/types/store/contracts/contact.store.d.ts +14 -0
  642. package/dist/types/store/contracts/device-list.store.d.ts +13 -0
  643. package/dist/types/store/contracts/group-metadata.store.d.ts +14 -0
  644. package/dist/types/store/contracts/message.store.d.ts +0 -2
  645. package/dist/types/store/createStore.d.ts +54 -2
  646. package/dist/types/store/index.d.ts +17 -16
  647. package/dist/types/store/locks/group-metadata.lock.d.ts +2 -0
  648. package/dist/types/store/{providers/memory → memory}/appstate.store.d.ts +2 -2
  649. package/dist/types/store/memory/auth.store.d.ts +18 -0
  650. package/dist/types/store/{providers/memory → memory}/contact.store.d.ts +6 -1
  651. package/dist/types/store/{providers/memory → memory}/device-list.store.d.ts +15 -2
  652. package/dist/types/store/memory/group-metadata.store.d.ts +27 -0
  653. package/dist/types/store/{providers/memory → memory}/identity.store.d.ts +2 -2
  654. package/dist/types/store/{providers/memory → memory}/message-secret.store.d.ts +12 -2
  655. package/dist/types/store/{providers/memory → memory}/message.store.d.ts +1 -1
  656. package/dist/types/store/{providers/memory → memory}/pre-key.store.d.ts +2 -2
  657. package/dist/types/store/{providers/memory → memory}/privacy-token.store.d.ts +1 -1
  658. package/dist/types/store/{providers/memory → memory}/retry.store.d.ts +16 -3
  659. package/dist/types/store/{providers/memory → memory}/sender-key.store.d.ts +2 -2
  660. package/dist/types/store/{providers/memory → memory}/session.store.d.ts +2 -2
  661. package/dist/types/store/{providers/memory → memory}/signal.store.d.ts +2 -2
  662. package/dist/types/store/{providers/memory → memory}/thread.store.d.ts +1 -1
  663. package/dist/types/store/noop.store.d.ts +2 -2
  664. package/dist/types/store/types.d.ts +250 -6
  665. package/dist/types/transport/WaComms.d.ts +5 -0
  666. package/dist/types/transport/WaWebSocket.d.ts +5 -0
  667. package/dist/types/transport/binary/constants.d.ts +8 -2
  668. package/dist/types/transport/binary/decoder.d.ts +5 -0
  669. package/dist/types/transport/binary/encoder.d.ts +5 -0
  670. package/dist/types/transport/binary/tokens.d.ts +6 -6
  671. package/dist/types/transport/index.d.ts +3 -1
  672. package/dist/types/transport/keepalive/WaKeepAlive.d.ts +7 -0
  673. package/dist/types/transport/node/WaMobileTcpSocket.d.ts +6 -0
  674. package/dist/types/transport/node/WaNodeOrchestrator.d.ts +5 -0
  675. package/dist/types/transport/node/WaNodeTransport.d.ts +13 -0
  676. package/dist/types/transport/node/builders/account-sync.d.ts +1 -2
  677. package/dist/types/transport/node/builders/bot.d.ts +4 -0
  678. package/dist/types/transport/node/builders/business.d.ts +21 -4
  679. package/dist/types/transport/node/builders/chatstate.d.ts +11 -0
  680. package/dist/types/transport/node/builders/community.d.ts +17 -0
  681. package/dist/types/transport/node/builders/group.d.ts +44 -2
  682. package/dist/types/transport/node/builders/message.d.ts +11 -6
  683. package/dist/types/transport/node/builders/newsletter.d.ts +73 -0
  684. package/dist/types/transport/node/builders/passive.d.ts +3 -0
  685. package/dist/types/transport/node/builders/presence.d.ts +8 -1
  686. package/dist/types/transport/node/builders/profile.d.ts +3 -0
  687. package/dist/types/transport/node/builders/tos.d.ts +12 -0
  688. package/dist/types/transport/node/builders/usync.d.ts +16 -0
  689. package/dist/types/transport/node/helpers.d.ts +1 -2
  690. package/dist/types/transport/node/mex/client.d.ts +12 -1
  691. package/dist/types/transport/node/query.d.ts +19 -1
  692. package/dist/types/transport/node/usync.d.ts +3 -0
  693. package/dist/types/transport/noise/WaMobileClientPayload.d.ts +5 -0
  694. package/dist/types/transport/noise/WaNoiseCert.d.ts +5 -0
  695. package/dist/types/transport/noise/WaNoiseHandshake.d.ts +12 -6
  696. package/dist/types/transport/noise/WaNoiseSession.d.ts +0 -1
  697. package/dist/types/transport/noise/WaNoiseSocket.d.ts +12 -6
  698. package/dist/types/transport/noise/constants.d.ts +4 -5
  699. package/dist/types/transport/proxy.d.ts +5 -0
  700. package/dist/types/transport/types.d.ts +14 -7
  701. package/dist/types/transport/wa-web-version-fetcher.d.ts +44 -0
  702. package/dist/types/util/async.d.ts +4 -0
  703. package/dist/types/util/bytes.d.ts +36 -1
  704. package/dist/types/util/clock.d.ts +6 -0
  705. package/dist/types/util/coercion.d.ts +25 -0
  706. package/dist/types/util/collections.d.ts +8 -0
  707. package/dist/types/util/index.d.ts +2 -2
  708. package/dist/types/util/primitives.d.ts +11 -0
  709. package/dist/types/util/runtime.d.ts +5 -0
  710. package/dist/types/version-spec.d.ts +1 -0
  711. package/dist/util/async.js +4 -0
  712. package/dist/util/bytes.js +37 -2
  713. package/dist/util/clock.js +18 -0
  714. package/dist/util/coercion.js +48 -3
  715. package/dist/util/collections.js +12 -0
  716. package/dist/util/index.js +7 -1
  717. package/dist/util/primitives.js +20 -0
  718. package/dist/util/runtime.js +5 -0
  719. package/dist/version-spec.js +5 -0
  720. package/package.json +32 -8
  721. package/spec/appstate/index.d.ts +188 -0
  722. package/spec/appstate/index.js +850 -0
  723. package/spec/mex/index.d.ts +4172 -0
  724. package/spec/mex/index.js +261 -0
  725. package/spec/proto/index.d.ts +16305 -0
  726. package/spec/proto/index.js +1 -0
  727. package/spec/version/index.d.ts +4 -0
  728. package/spec/version/index.js +9 -0
  729. package/spec/version/version.json +3 -0
  730. package/dist/client/events/chat.js +0 -227
  731. package/dist/client/incoming.js +0 -306
  732. package/dist/client/mailbox.js +0 -66
  733. package/dist/client/messages.js +0 -305
  734. package/dist/esm/client/events/chat.js +0 -224
  735. package/dist/esm/client/incoming.js +0 -296
  736. package/dist/esm/client/mailbox.js +0 -63
  737. package/dist/esm/client/messages.js +0 -301
  738. package/dist/esm/media/WaMediaCrypto.js +0 -499
  739. package/dist/esm/message/phash.js +0 -47
  740. package/dist/esm/store/locks/participants.lock.js +0 -20
  741. package/dist/esm/store/providers/memory/contact.store.js +0 -28
  742. package/dist/esm/store/providers/memory/device-list.store.js +0 -67
  743. package/dist/esm/transport/node/mex/persist-ids.js +0 -10
  744. package/dist/media/WaMediaCrypto.js +0 -503
  745. package/dist/message/phash.js +0 -50
  746. package/dist/store/locks/participants.lock.js +0 -23
  747. package/dist/store/providers/memory/contact.store.js +0 -32
  748. package/dist/store/providers/memory/device-list.store.js +0 -71
  749. package/dist/transport/node/mex/persist-ids.js +0 -13
  750. package/dist/types/appstate/WaAppStateSyncClient.d.ts +0 -70
  751. package/dist/types/client/events/chat.d.ts +0 -3
  752. package/dist/types/client/history-sync.d.ts +0 -20
  753. package/dist/types/client/messages.d.ts +0 -18
  754. package/dist/types/client/messaging/participants.d.ts +0 -13
  755. package/dist/types/media/WaMediaCrypto.d.ts +0 -22
  756. package/dist/types/media/conn.d.ts +0 -3
  757. package/dist/types/message/content.d.ts +0 -14
  758. package/dist/types/message/incoming.d.ts +0 -18
  759. package/dist/types/signal/crypto/constants.d.ts +0 -4
  760. package/dist/types/store/contracts/participants.store.d.ts +0 -13
  761. package/dist/types/store/locks/participants.lock.d.ts +0 -2
  762. package/dist/types/store/providers/memory/participants.store.d.ts +0 -17
  763. package/dist/types/transport/node/mex/persist-ids.d.ts +0 -14
  764. package/proto/index.d.ts +0 -10903
  765. package/proto/index.js +0 -1
  766. /package/dist/{store/contracts/participants.store.js → client/newsletter/types.js} +0 -0
  767. /package/dist/esm/{store/contracts/participants.store.js → client/newsletter/types.js} +0 -0
  768. /package/dist/esm/message/{device-sent.js → encode/device-sent.js} +0 -0
  769. /package/dist/esm/signal/{crypto → attestation}/constants.js +0 -0
  770. /package/dist/esm/store/{providers/memory → memory}/signal.store.js +0 -0
  771. /package/dist/message/{device-sent.js → encode/device-sent.js} +0 -0
  772. /package/dist/signal/{crypto → attestation}/constants.js +0 -0
  773. /package/dist/store/{providers/memory → memory}/signal.store.js +0 -0
  774. /package/dist/types/message/{padding.d.ts → encode/padding.d.ts} +0 -0
@@ -1,37 +1,115 @@
1
1
  import type { SignalAddress } from '../signal/types';
2
+ /**
3
+ * Splits a JID into `user` and `server` parts at the `@` separator.
4
+ * Throws if the input does not contain a valid `user@server` shape.
5
+ */
2
6
  export declare function splitJid(jid: string): {
3
7
  readonly user: string;
4
8
  readonly server: string;
5
9
  };
10
+ /**
11
+ * Normalizes a user-supplied recipient (phone number, group id, or full JID)
12
+ * into a canonical JID. Strings already containing `@` are returned as-is;
13
+ * dashed inputs map to `<input>@g.us` (group); pure-digit inputs map to
14
+ * `<digits>@s.whatsapp.net`.
15
+ */
6
16
  export declare function normalizeRecipientJid(to: string): string;
17
+ /** Returns `true` for JIDs in the `@lid` server (linked-device identity). */
7
18
  export declare function isLidJid(jid: string): boolean;
19
+ /** Returns `true` for JIDs in the `@s.whatsapp.net` server (phone-number user JIDs). */
20
+ export declare function isUserJid(jid: string): boolean;
21
+ /** Returns `true` for JIDs in the `@bot` server. */
22
+ export declare function isBotJid(jid: string): boolean;
23
+ /** Returns `true` for JIDs in the `@g.us` server (groups). */
8
24
  export declare function isGroupJid(jid: string): boolean;
25
+ /** Returns `true` for JIDs in the `@broadcast` server (broadcast lists). */
9
26
  export declare function isBroadcastJid(jid: string): boolean;
27
+ /** Returns `true` for the special `status@broadcast` JID. */
28
+ export declare function isStatusBroadcastJid(jid: string): boolean;
29
+ /** Returns `true` for JIDs in the `@newsletter` server. */
30
+ export declare function isNewsletterJid(jid: string): boolean;
31
+ /** Returns `true` for any group or broadcast JID. */
10
32
  export declare function isGroupOrBroadcastJid(jid: string): boolean;
11
33
  export interface ParsedJid {
12
34
  readonly address: SignalAddress;
13
35
  readonly userJid: string;
14
36
  readonly normalizedJid: string;
15
37
  }
38
+ /**
39
+ * Parses a JID into a Signal-style `{ user, server, device }` address.
40
+ * `device` is `0` when the JID has no `:device` segment.
41
+ */
16
42
  export declare function parseSignalAddressFromJid(jid: string): SignalAddress;
43
+ /**
44
+ * Parses a JID and returns the Signal address plus the user-only and
45
+ * fully-normalized device JID forms in a single pass.
46
+ */
17
47
  export declare function parseJidFull(jid: string): ParsedJid;
48
+ /**
49
+ * Maps the hosted-account server variants (`hosted` / `hosted.lid`) back to
50
+ * their canonical Signal server (`hostDomain` / `lid`). Other servers are
51
+ * returned unchanged.
52
+ */
18
53
  export declare function canonicalizeSignalServer(server: string, hostDomain?: string): string;
54
+ /**
55
+ * Returns the JID rewritten with its server canonicalized via
56
+ * {@link canonicalizeSignalServer} – used to derive the address Signal
57
+ * sessions are keyed by.
58
+ */
19
59
  export declare function canonicalizeSignalJid(jid: string, hostDomain?: string): string;
60
+ /**
61
+ * Strips the `:device` segment from a JID, returning the bare `user@server`
62
+ * form. Set `options.canonicalizeSignalServer` to also rewrite hosted servers
63
+ * via {@link canonicalizeSignalServer}.
64
+ */
20
65
  export declare function toUserJid(jid: string, options?: {
21
66
  readonly canonicalizeSignalServer?: boolean;
22
67
  readonly hostDomain?: string;
23
68
  }): string;
69
+ /**
70
+ * Returns the JID in its full device form. JIDs with `device === 0` lose the
71
+ * device segment (`user@server`); all others keep `user:device@server`.
72
+ */
24
73
  export declare function normalizeDeviceJid(jid: string): string;
74
+ /**
75
+ * Appends `:device` to a bare user JID. A falsy `device` returns the input
76
+ * unchanged.
77
+ */
78
+ export declare function applyDeviceToJid(userJid: string, device: number | undefined): string;
79
+ /** Returns `true` when `deviceId` matches the WhatsApp hosted-device id. */
25
80
  export declare function isHostedDeviceId(deviceId: number): boolean;
81
+ /** Returns `true` for the hosted server variants (`hosted` and `hosted.lid`). */
26
82
  export declare function isHostedServer(server: string): boolean;
83
+ /**
84
+ * Returns `true` when the JID refers to a hosted device – either by server
85
+ * (`@hosted` / `@hosted.lid`) or by a `:HOSTED_DEVICE_ID@…` device segment.
86
+ */
27
87
  export declare function isHostedDeviceJid(jid: string): boolean;
88
+ /**
89
+ * Builds a device JID from its parts. When `options.isHosted` is set, the
90
+ * hosted-server variant is selected (preserving LID vs phone) and the canonical
91
+ * hosted device id is used.
92
+ */
28
93
  export declare function buildDeviceJid(user: string, normalizedServer: string, deviceId: number, options?: {
29
94
  readonly rawServer?: string;
30
95
  readonly isHosted?: boolean;
31
96
  }): string;
97
+ /**
98
+ * Extracts the numeric username and device id from the authenticated user's
99
+ * own JID. Throws when either segment is missing, non-numeric, or out of the
100
+ * safe-integer range.
101
+ */
32
102
  export declare function getLoginIdentity(meJid: string): {
33
103
  readonly username: number;
34
104
  readonly device: number;
35
105
  };
106
+ /**
107
+ * Builds a `<digits>@s.whatsapp.net` JID from a free-form phone number,
108
+ * stripping non-digit characters. Throws when no digits are found.
109
+ */
36
110
  export declare function parsePhoneJid(input: string): string;
111
+ /**
112
+ * Returns a stable `user|server|device` key for a Signal address, suitable
113
+ * as a Map/Set key.
114
+ */
37
115
  export declare function signalAddressKey(address: SignalAddress): string;
@@ -1,15 +1,23 @@
1
1
  export declare const WA_MEDIA_HKDF_INFO: Readonly<{
2
- readonly document: "WhatsApp Document Keys";
3
- readonly image: "WhatsApp Image Keys";
4
- readonly sticker: "WhatsApp Image Keys";
5
- readonly 'xma-image': "WhatsApp Image Keys";
6
- readonly video: "WhatsApp Video Keys";
7
- readonly gif: "WhatsApp Video Keys";
8
- readonly audio: "WhatsApp Audio Keys";
9
- readonly ptt: "WhatsApp Audio Keys";
10
- readonly 'md-app-state': "WhatsApp App State Keys";
11
- readonly 'md-msg-hist': "WhatsApp History Keys";
12
- readonly history: "WhatsApp History Keys";
2
+ readonly document: NodeJS.NonSharedUint8Array;
3
+ readonly image: NodeJS.NonSharedUint8Array;
4
+ readonly sticker: NodeJS.NonSharedUint8Array;
5
+ readonly 'xma-image': NodeJS.NonSharedUint8Array;
6
+ readonly video: NodeJS.NonSharedUint8Array;
7
+ readonly gif: NodeJS.NonSharedUint8Array;
8
+ readonly audio: NodeJS.NonSharedUint8Array;
9
+ readonly ptt: NodeJS.NonSharedUint8Array;
10
+ readonly 'md-app-state': NodeJS.NonSharedUint8Array;
11
+ readonly 'md-msg-hist': NodeJS.NonSharedUint8Array;
12
+ readonly history: NodeJS.NonSharedUint8Array;
13
+ readonly 'sticker-pack': NodeJS.NonSharedUint8Array;
14
+ readonly 'thumbnail-sticker-pack': NodeJS.NonSharedUint8Array;
15
+ readonly 'thumbnail-link': NodeJS.NonSharedUint8Array;
13
16
  }>;
14
- export declare const WA_PREVIEW_MEDIA_HKDF_INFO = "Messenger Preview Keys";
15
- export declare function getWaMediaHkdfInfo(mediaType: string): string;
17
+ export declare const WA_PREVIEW_MEDIA_HKDF_INFO: NodeJS.NonSharedUint8Array;
18
+ /**
19
+ * Returns the HKDF `info` bytes used to derive per-media keys for a given
20
+ * media type. Throws for unsupported types – see {@link WA_MEDIA_HKDF_INFO}
21
+ * for the supported set.
22
+ */
23
+ export declare function getWaMediaHkdfInfo(mediaType: string): Uint8Array;
@@ -11,6 +11,7 @@ export declare const WA_MESSAGE_TYPES: Readonly<{
11
11
  readonly ACK_TYPE_ERROR: "error";
12
12
  readonly ACK_CLASS_ERROR: "error";
13
13
  readonly ACK_CLASS_MESSAGE: "message";
14
+ readonly ACK_CLASS_CALL: "call";
14
15
  readonly RECEIPT_TYPE_DELIVERY: "delivery";
15
16
  readonly RECEIPT_TYPE_SENDER: "sender";
16
17
  readonly RECEIPT_TYPE_INACTIVE: "inactive";
@@ -22,7 +23,9 @@ export declare const WA_MESSAGE_TYPES: Readonly<{
22
23
  readonly RECEIPT_TYPE_PEER: "peer_msg";
23
24
  readonly RECEIPT_TYPE_SERVER_ERROR: "server-error";
24
25
  readonly RECEIPT_TYPE_RETRY: "retry";
26
+ readonly RECEIPT_TYPE_ENC_REKEY_RETRY: "enc_rekey_retry";
25
27
  }>;
28
+ export type WaOutboundReceiptType = typeof WA_MESSAGE_TYPES.RECEIPT_TYPE_READ | typeof WA_MESSAGE_TYPES.RECEIPT_TYPE_READ_SELF | typeof WA_MESSAGE_TYPES.RECEIPT_TYPE_PLAYED | typeof WA_MESSAGE_TYPES.RECEIPT_TYPE_PLAYED_SELF | typeof WA_MESSAGE_TYPES.RECEIPT_TYPE_INACTIVE | typeof WA_MESSAGE_TYPES.RECEIPT_TYPE_HISTORY_SYNC;
26
29
  export declare const WA_RETRYABLE_ACK_CODES: readonly ["408", "429", "500", "503"];
27
30
  export declare const WA_STANZA_MSG_TYPES: Readonly<{
28
31
  readonly TEXT: "text";
@@ -36,6 +39,7 @@ export declare const WA_STANZA_MSG_TYPES: Readonly<{
36
39
  export declare const WA_EDIT_ATTRS: Readonly<{
37
40
  readonly MESSAGE_EDIT: "1";
38
41
  readonly PIN_IN_CHAT: "2";
42
+ readonly NEWSLETTER_EDIT: "3";
39
43
  readonly SENDER_REVOKE: "7";
40
44
  readonly ADMIN_REVOKE: "8";
41
45
  }>;
@@ -0,0 +1,65 @@
1
+ export declare const WA_NEWSLETTER_ROLES: Readonly<{
2
+ readonly SUBSCRIBER: "SUBSCRIBER";
3
+ readonly GUEST: "GUEST";
4
+ readonly ADMIN: "ADMIN";
5
+ readonly OWNER: "OWNER";
6
+ }>;
7
+ export type WaNewsletterRole = (typeof WA_NEWSLETTER_ROLES)[keyof typeof WA_NEWSLETTER_ROLES];
8
+ export declare const WA_NEWSLETTER_STATE_TYPES: Readonly<{
9
+ readonly ACTIVE: "ACTIVE";
10
+ readonly SUSPENDED: "SUSPENDED";
11
+ readonly GEOSUSPENDED: "GEOSUSPENDED";
12
+ readonly DELETED: "DELETED";
13
+ readonly NON_EXISTING: "NON_EXISTING";
14
+ }>;
15
+ export type WaNewsletterStateType = (typeof WA_NEWSLETTER_STATE_TYPES)[keyof typeof WA_NEWSLETTER_STATE_TYPES];
16
+ export declare const WA_NEWSLETTER_PICTURE_TYPES: Readonly<{
17
+ readonly IMAGE: "IMAGE";
18
+ readonly PREVIEW: "PREVIEW";
19
+ }>;
20
+ export declare const WA_NEWSLETTER_FETCH_KEY_TYPES: Readonly<{
21
+ readonly JID: "JID";
22
+ readonly INVITE: "INVITE";
23
+ }>;
24
+ export declare const WA_NEWSLETTER_VIEW_ROLES: Readonly<{
25
+ readonly GUEST: "GUEST";
26
+ readonly SUBSCRIBER: "SUBSCRIBER";
27
+ readonly ADMIN: "ADMIN";
28
+ readonly OWNER: "OWNER";
29
+ }>;
30
+ export declare const WA_NEWSLETTER_MUTE_TYPES: Readonly<{
31
+ readonly ADMIN_ACTIVITY: "MUTE_ADMIN_ACTIVITY";
32
+ readonly FOLLOWER_ACTIVITY: "MUTE_FOLLOWER_ACTIVITY";
33
+ }>;
34
+ export declare const WA_NEWSLETTER_MUTE_VALUES: Readonly<{
35
+ readonly ON: "ON";
36
+ readonly OFF: "OFF";
37
+ }>;
38
+ export declare const WA_NEWSLETTER_SEND_TYPES: Readonly<{
39
+ readonly TEXT: "text";
40
+ readonly MEDIA: "media";
41
+ readonly REACTION: "reaction";
42
+ readonly REVOKE: "revoke";
43
+ }>;
44
+ export type WaNewsletterSendType = (typeof WA_NEWSLETTER_SEND_TYPES)[keyof typeof WA_NEWSLETTER_SEND_TYPES];
45
+ export declare const WA_NEWSLETTER_RECEIVE_TYPES: Readonly<{
46
+ readonly TEXT: "NewsletterText";
47
+ readonly MEDIA: "NewsletterMedia";
48
+ readonly REACTION: "NewsletterReaction";
49
+ readonly REACTION_REVOKE: "NewsletterReactionRevoke";
50
+ readonly REVOKE: "NewsletterRevoke";
51
+ readonly EDIT: "NewsletterEdit";
52
+ readonly POLL_CREATION: "NewsletterPollCreation";
53
+ readonly POLL_VOTE: "NewsletterPollVote";
54
+ readonly POLL_RESULT_SNAPSHOT: "NewsletterPollResultSnapshot";
55
+ readonly QUIZ_CREATION: "NewsletterQuizCreation";
56
+ readonly QUESTION: "NewsletterQuestion";
57
+ readonly QUESTION_REPLY: "NewsletterQuestionReply";
58
+ readonly QUESTION_RESPONSE: "NewsletterQuestionResponse";
59
+ readonly WAMO_EMPTY: "NewsletterWAMOEmpty";
60
+ }>;
61
+ export type WaNewsletterReceiveType = (typeof WA_NEWSLETTER_RECEIVE_TYPES)[keyof typeof WA_NEWSLETTER_RECEIVE_TYPES];
62
+ export declare const WA_NEWSLETTER_VERIFICATION_STATES: Readonly<{
63
+ readonly VERIFIED: "VERIFIED";
64
+ readonly UNVERIFIED: "UNVERIFIED";
65
+ }>;
@@ -63,6 +63,22 @@ export declare const WA_NODE_TAGS: Readonly<{
63
63
  readonly MEMBERSHIP_APPROVAL_MODE: "membership_approval_mode";
64
64
  readonly GROUP_JOIN: "group_join";
65
65
  readonly ABPROPS: "abprops";
66
+ readonly PLAINTEXT: "plaintext";
67
+ readonly PRESENCE: "presence";
68
+ readonly CHATSTATE: "chatstate";
69
+ readonly CALL: "call";
70
+ readonly COMPOSING: "composing";
71
+ readonly PAUSED: "paused";
72
+ readonly BIZ: "biz";
73
+ readonly INTERACTIVE: "interactive";
74
+ readonly NATIVE_FLOW: "native_flow";
75
+ readonly BOT: "bot";
76
+ readonly META: "meta";
77
+ readonly STATUS: "status";
78
+ readonly USERNAME: "username";
79
+ readonly TEXT_STATUS: "text_status";
80
+ readonly DISAPPEARING_MODE: "disappearing_mode";
81
+ readonly BUSINESS: "business";
66
82
  }>;
67
83
  export declare const WA_IQ_TYPES: Readonly<{
68
84
  readonly GET: "get";
@@ -84,8 +100,12 @@ export declare const WA_XMLNS: Readonly<{
84
100
  readonly STATUS: "status";
85
101
  readonly GROUPS: "w:g2";
86
102
  readonly NEWSLETTER: "newsletter";
103
+ readonly TOS: "tos";
87
104
  readonly XMPP_PING: "urn:xmpp:ping";
88
105
  readonly WHATSAPP_PING: "w:p";
89
106
  readonly ABPROPS: "abt";
90
107
  readonly MEX: "w:mex";
108
+ readonly BOT: "bot";
109
+ readonly DISAPPEARING_MODE: "disappearing_mode";
110
+ readonly PASSIVE: "passive";
91
111
  }>;
@@ -4,6 +4,20 @@ export declare const WA_NOTIFICATION_TYPES: Readonly<{
4
4
  readonly DEVICES: "devices";
5
5
  readonly SERVER: "server";
6
6
  readonly REGISTRATION: "registration";
7
+ readonly NEWSLETTER: "newsletter";
8
+ readonly BUSINESS: "business";
9
+ readonly PICTURE: "picture";
10
+ }>;
11
+ export declare const WA_BUSINESS_NOTIFICATION_TAGS: Readonly<{
12
+ readonly VERIFIED_NAME: "verified_name";
13
+ readonly REMOVE: "remove";
14
+ readonly PROFILE: "profile";
15
+ readonly PRODUCT_CATALOG: "product_catalog";
16
+ readonly SUBSCRIPTIONS: "subscriptions";
17
+ readonly FEATURE_FLAGS: "feature_flags";
18
+ }>;
19
+ export declare const WA_NEWSLETTER_NOTIFICATION_TAGS: Readonly<{
20
+ readonly LIVE_UPDATES: "live_updates";
7
21
  }>;
8
22
  export declare const WA_REGISTRATION_NOTIFICATION_TAGS: Readonly<{
9
23
  readonly WA_OLD_REGISTRATION: "wa_old_registration";
@@ -55,4 +69,6 @@ export declare const WA_GROUP_NOTIFICATION_TAGS: Readonly<{
55
69
  readonly GROUP_SAFETY_CHECK: "group_safety_check";
56
70
  readonly LIMIT_SHARING_ENABLED: "limit_sharing_enabled";
57
71
  readonly MISSING_PARTICIPANT_IDENTIFICATION: "missing_participant_identification";
72
+ readonly GROUP_HISTORY: "group_history";
73
+ readonly NO_GROUP_HISTORY: "no_group_history";
58
74
  }>;
@@ -0,0 +1,16 @@
1
+ export declare const WA_PRESENCE_TYPES: Readonly<{
2
+ readonly AVAILABLE: "available";
3
+ readonly UNAVAILABLE: "unavailable";
4
+ readonly SUBSCRIBE: "subscribe";
5
+ }>;
6
+ export declare const WA_PRESENCE_LAST_SENTINELS: Readonly<{
7
+ readonly DENY: "deny";
8
+ readonly NONE: "none";
9
+ readonly ERROR: "error";
10
+ }>;
11
+ export declare const WA_CHATSTATE_MEDIA: Readonly<{
12
+ readonly AUDIO: "audio";
13
+ }>;
14
+ export type WaPresenceType = (typeof WA_PRESENCE_TYPES)[keyof typeof WA_PRESENCE_TYPES];
15
+ export type WaPresenceLastSentinel = (typeof WA_PRESENCE_LAST_SENTINELS)[keyof typeof WA_PRESENCE_LAST_SENTINELS];
16
+ export type WaChatstateMedia = (typeof WA_CHATSTATE_MEDIA)[keyof typeof WA_CHATSTATE_MEDIA];
@@ -0,0 +1,7 @@
1
+ export declare const WA_STATUS_DISTRIBUTION_SETTINGS: Readonly<{
2
+ readonly CONTACTS: "contacts";
3
+ readonly ALLOWLIST: "allowlist";
4
+ readonly DENYLIST: "denylist";
5
+ readonly CLOSE_FRIENDS: "close_friends";
6
+ }>;
7
+ export type WaStatusDistributionSetting = (typeof WA_STATUS_DISTRIBUTION_SETTINGS)[keyof typeof WA_STATUS_DISTRIBUTION_SETTINGS];
@@ -1,3 +1,8 @@
1
1
  import type { WaRetryReplayPayload } from './types';
2
+ /**
3
+ * Encodes a {@link WaRetryReplayPayload} into the on-disk codec format used
4
+ * by the retry store. Supports the `plaintext`/`encrypted`/`opaque_node` modes.
5
+ */
2
6
  export declare function encodeRetryReplayPayload(payload: WaRetryReplayPayload): Uint8Array;
7
+ /** Inverse of {@link encodeRetryReplayPayload}. Throws on bad magic/version. */
3
8
  export declare function decodeRetryReplayPayload(raw: Uint8Array): WaRetryReplayPayload;
@@ -2,7 +2,7 @@ export { MAX_RETRY_ATTEMPTS, RETRY_KEYS_MIN_COUNT, RETRY_OUTBOUND_TTL_MS, RETRY_
2
2
  export type { WaRetryReasonCode } from './constants';
3
3
  export { mapRetryReasonFromError } from './reason';
4
4
  export { parseRetryReceiptRequest, pickRetryStateMax } from './parse';
5
- export type { WaParsedRetryRequest, WaRetryDecryptFailureContext, WaRetryEncryptedReplayPayload, WaRetryKey, WaRetryKeyBundle, WaRetryOpaqueNodeReplayPayload, WaRetryOutboundMessageRecord, WaRetryOutboundMode, WaRetryOutboundState, WaRetryPlaintextReplayPayload, WaRetryReceiptType, WaRetryReplayPayload, WaRetryStoredReplayPayload, WaRetrySignedKey } from './types';
5
+ export type { WaParsedRetryRequest, WaRetryDecryptFailureContext, WaRetryEncryptedReplayPayload, WaRetryKey, WaRetryKeyBundle, WaRetryOpaqueNodeReplayPayload, WaRetryOutboundMessageRecord, WaRetryOutboundMode, WaRetryOutboundState, WaRetryPlaintextReplayPayload, WaRetryReceiptType, WaRetryReplayPayload, WaRetryStoredReplayPayload } from './types';
6
6
  export { decodeRetryReplayPayload, encodeRetryReplayPayload } from './codec';
7
7
  export { WaRetryReplayService, type WaRetryReplayServiceOptions, type WaRetryResendResult } from './replay';
8
8
  export { createOutboundRetryTracker, type OutboundRetryTrackHint, type OutboundRetryTracker } from './tracker';
@@ -1,6 +1,15 @@
1
1
  import type { WaParsedRetryRequest, WaRetryOutboundState } from './types';
2
2
  import type { BinaryNode } from '../transport/types';
3
+ /**
4
+ * Parses an incoming `receipt` stanza into a {@link WaParsedRetryRequest}.
5
+ * Returns `null` when the stanza is not a retry/rekey-retry receipt; throws
6
+ * when required attrs/children are missing.
7
+ */
3
8
  export declare function parseRetryReceiptRequest(node: BinaryNode, options?: {
4
9
  readonly expectedToJids?: readonly string[];
5
10
  }): WaParsedRetryRequest | null;
11
+ /**
12
+ * Returns whichever of `left`/`right` represents the more advanced retry
13
+ * state (according to the internal precedence rank).
14
+ */
6
15
  export declare function pickRetryStateMax(left: WaRetryOutboundState, right: WaRetryOutboundState): WaRetryOutboundState;
@@ -1,2 +1,7 @@
1
1
  import { type WaRetryReasonCode } from './constants';
2
+ /**
3
+ * Maps a decryption/Signal error to the appropriate {@link WaRetryReasonCode}
4
+ * so an outbound retry receipt carries the correct `error` attribute.
5
+ * Returns `undefined` when no known reason matches.
6
+ */
2
7
  export declare function mapRetryReasonFromError(error: unknown): WaRetryReasonCode | undefined;
@@ -1,26 +1,40 @@
1
+ import type { WaAuthCredentials } from '../auth/types';
1
2
  import type { Logger } from '../infra/log/types';
3
+ import { type IcdcMeta } from '../message/crypto/icdc';
2
4
  import type { WaMessageClient } from '../message/WaMessageClient';
3
- import { type Proto } from '..';
4
5
  import type { WaRetryOutboundMessageRecord } from './types';
6
+ import type { SignalSessionResolver } from '../signal/session/resolver';
5
7
  import type { SignalProtocol } from '../signal/session/SignalProtocol';
6
8
  export interface WaRetryReplayServiceOptions {
7
9
  readonly logger: Logger;
8
10
  readonly messageClient: WaMessageClient;
9
11
  readonly signalProtocol: SignalProtocol;
10
- readonly getCurrentMeJid: () => string | null | undefined;
11
- readonly getCurrentMeLid: () => string | null | undefined;
12
- readonly getCurrentSignedIdentity: () => Proto.IADVSignedDeviceIdentity | null | undefined;
12
+ readonly sessionResolver: SignalSessionResolver;
13
+ readonly getCurrentCredentials: () => WaAuthCredentials | null;
14
+ readonly resolveUserIcdc?: (userJid: string) => Promise<IcdcMeta | null>;
13
15
  }
14
16
  export type WaRetryResendResult = 'resent' | 'ineligible';
17
+ /**
18
+ * Replays a previously-sent outbound message in response to an incoming
19
+ * retry receipt. Dispatches to plaintext/encrypted/opaque-node handlers
20
+ * based on the stored payload shape.
21
+ */
15
22
  export declare class WaRetryReplayService {
16
23
  private readonly options;
17
24
  constructor(options: WaRetryReplayServiceOptions);
25
+ /**
26
+ * Resends `outbound` to `requesterJid`. Returns `'resent'` on a fresh
27
+ * send or `'ineligible'` when the cached payload cannot satisfy the
28
+ * request (e.g. requester not in the original device list).
29
+ */
18
30
  resendOutboundMessage(outbound: WaRetryOutboundMessageRecord, requesterJid: string, retryCount: number): Promise<WaRetryResendResult>;
19
31
  private resendPlaintextPayload;
32
+ private resolveSignedDeviceIdentity;
33
+ private refreshRetryPlaintext;
34
+ private safeUserJid;
20
35
  private resendGroupPlaintextPayload;
21
36
  private resendEncryptedPayload;
22
37
  private resendOpaquePayload;
23
- private maybeWrapGroupRetryPlaintextForSelfDevice;
24
38
  private isRequesterCurrentAccount;
25
39
  private isOpaqueReplayCompatible;
26
40
  }
@@ -5,15 +5,22 @@ import type { WaRetryStore } from '../store/contracts/retry.store';
5
5
  export type OutboundRetryTrackHint = {
6
6
  readonly messageIdHint?: string;
7
7
  readonly toJid?: string;
8
- readonly type: string;
9
8
  readonly replayPayload: WaRetryReplayPayload;
10
- readonly participantJid?: string;
11
- readonly recipientJid?: string;
12
9
  readonly eligibleRequesterDeviceJids?: readonly string[];
13
10
  };
11
+ /**
12
+ * Wraps message publishes and persists a replay record so the
13
+ * {@link WaRetryReplayService} can re-send the message later if a retry
14
+ * receipt arrives.
15
+ */
14
16
  export type OutboundRetryTracker = {
17
+ /**
18
+ * Runs `publish`, then upserts a retry-outbound record built from the
19
+ * tracking `hint`. Returns the publish result unchanged.
20
+ */
15
21
  track(hint: OutboundRetryTrackHint, publish: () => Promise<WaMessagePublishResult>): Promise<WaMessagePublishResult>;
16
22
  };
23
+ /** Builds an {@link OutboundRetryTracker} backed by a {@link WaRetryStore}. */
17
24
  export declare function createOutboundRetryTracker(options: {
18
25
  readonly retryStore: WaRetryStore;
19
26
  readonly logger: Logger;
@@ -1,5 +1,6 @@
1
+ import type { WA_MESSAGE_TYPES } from '../protocol/message';
1
2
  import type { BinaryNode } from '../transport/types';
2
- export type WaRetryReceiptType = 'retry' | 'enc_rekey_retry';
3
+ export type WaRetryReceiptType = typeof WA_MESSAGE_TYPES.RECEIPT_TYPE_RETRY | typeof WA_MESSAGE_TYPES.RECEIPT_TYPE_ENC_REKEY_RETRY;
3
4
  export type WaRetryOutboundMode = 'plaintext' | 'encrypted' | 'opaque_node';
4
5
  export type WaRetryOutboundState = 'pending' | 'delivered' | 'read' | 'played' | 'ineligible';
5
6
  export interface WaRetryKey {
@@ -7,9 +8,6 @@ export interface WaRetryKey {
7
8
  readonly publicKey: Uint8Array;
8
9
  readonly signature?: Uint8Array;
9
10
  }
10
- export type WaRetrySignedKey = WaRetryKey & {
11
- readonly signature: Uint8Array;
12
- };
13
11
  export interface WaRetryKeyBundle {
14
12
  readonly identity: Uint8Array;
15
13
  readonly deviceIdentity?: Uint8Array;
@@ -44,6 +42,7 @@ export interface WaRetryPlaintextReplayPayload {
44
42
  readonly to: string;
45
43
  readonly type: string;
46
44
  readonly plaintext: Uint8Array;
45
+ readonly statusSetting?: string;
47
46
  }
48
47
  export interface WaRetryEncryptedReplayPayload {
49
48
  readonly mode: 'encrypted';
@@ -62,15 +61,11 @@ export type WaRetryStoredReplayPayload = Uint8Array | WaRetryReplayPayload;
62
61
  export interface WaRetryOutboundMessageRecord {
63
62
  readonly messageId: string;
64
63
  readonly toJid: string;
65
- readonly participantJid?: string;
66
- readonly recipientJid?: string;
67
64
  readonly eligibleRequesterDeviceJids?: readonly string[];
68
65
  readonly deliveredRequesterDeviceJids?: readonly string[];
69
- readonly messageType: string;
70
66
  readonly replayMode: WaRetryOutboundMode;
71
67
  readonly replayPayload: WaRetryStoredReplayPayload;
72
68
  readonly state: WaRetryOutboundState;
73
- readonly createdAtMs: number;
74
69
  readonly updatedAtMs: number;
75
70
  readonly expiresAtMs: number;
76
71
  }
@@ -15,6 +15,10 @@ export interface SignalLidSyncResult {
15
15
  readonly lidJid: string | null;
16
16
  readonly exists: boolean;
17
17
  }
18
+ /**
19
+ * Resolves the device list and LID mapping for a set of users via the `usync`
20
+ * protocol. Concurrent calls for the same JIDs are deduplicated.
21
+ */
18
22
  export declare class SignalDeviceSyncApi {
19
23
  private readonly logger;
20
24
  private readonly query;
@@ -24,12 +28,28 @@ export declare class SignalDeviceSyncApi {
24
28
  private readonly generateSid;
25
29
  private readonly syncDedup;
26
30
  constructor(options: SignalDeviceSyncApiOptions);
31
+ /**
32
+ * Refreshes the device list for every JID in `userJids`. Returns the
33
+ * resolved per-user device JIDs (matches the on-store snapshot).
34
+ */
27
35
  syncDeviceList(userJids: readonly string[], timeoutMs?: number): Promise<readonly {
28
36
  readonly jid: string;
29
37
  readonly deviceJids: readonly string[];
30
38
  }[]>;
31
39
  private syncDeviceListInternal;
40
+ /**
41
+ * Looks up LIDs for a list of phone JIDs via a `lid` usync query. Returns
42
+ * one entry per input JID with `exists` indicating server-side presence.
43
+ */
32
44
  queryLidsByPhoneJids(phoneJids: readonly string[], timeoutMs?: number): Promise<readonly SignalLidSyncResult[]>;
45
+ /**
46
+ * Enriches existing device-list snapshots with the resolved LID equivalents
47
+ * so {@link WaDeviceListStore.findByAnyUserJid} can later match a retry
48
+ * receipt arriving in LID form against an eligible list stored in PN form
49
+ * (and vice versa). Skips users with no cached snapshot — the alt gets
50
+ * recorded on the next {@link syncDeviceList} sweep.
51
+ */
52
+ private propagateAltUserJids;
33
53
  private collectUsersToQuery;
34
54
  private makeDeviceSyncRequest;
35
55
  private makeLidSyncRequest;
@@ -21,6 +21,11 @@ export interface SignalDigestPrefetchedLocalKeyBundle {
21
21
  readonly registrationInfo: RegistrationInfo;
22
22
  readonly signedPreKey: SignedPreKeyRecord;
23
23
  }
24
+ /**
25
+ * Validates the local Signal key bundle (identity, signed prekey, one-time
26
+ * prekey ids) against the server-side digest. Used to detect drift after a
27
+ * crash or partial sync and decide whether to re-upload.
28
+ */
24
29
  export declare class SignalDigestSyncApi {
25
30
  private readonly logger;
26
31
  private readonly query;
@@ -29,6 +34,11 @@ export declare class SignalDigestSyncApi {
29
34
  private readonly defaultTimeoutMs;
30
35
  private readonly hostDomain;
31
36
  constructor(options: SignalDigestSyncApiOptions);
37
+ /**
38
+ * Compares the local Signal key bundle digest with the server's. Returns
39
+ * a structured result describing whether anything diverged and which
40
+ * field caused the mismatch.
41
+ */
32
42
  validateLocalKeyBundle(timeoutMs?: number): Promise<SignalDigestValidationResult>;
33
43
  validateLocalKeyBundle(prefetched?: SignalDigestPrefetchedLocalKeyBundle, timeoutMs?: number): Promise<SignalDigestValidationResult>;
34
44
  private parseDigestPayload;
@@ -13,6 +13,11 @@ interface SignalIdentitySyncApiOptions {
13
13
  readonly defaultTimeoutMs?: number;
14
14
  readonly hostDomain?: string;
15
15
  }
16
+ /**
17
+ * Fetches identity keys for a list of JIDs from the server and persists them
18
+ * into the identity store. Concurrent calls for the same JID set are
19
+ * deduplicated.
20
+ */
16
21
  export declare class SignalIdentitySyncApi {
17
22
  private readonly logger;
18
23
  private readonly query;
@@ -21,6 +26,10 @@ export declare class SignalIdentitySyncApi {
21
26
  private readonly hostDomain;
22
27
  private readonly syncDedup;
23
28
  constructor(options: SignalIdentitySyncApiOptions);
29
+ /**
30
+ * Fetches and persists identity keys for `targetJids`. Returns one entry
31
+ * per JID the server resolved; missing/erroring users are skipped.
32
+ */
24
33
  syncIdentityKeys(targetJids: readonly string[], timeoutMs?: number): Promise<readonly SignalIdentitySyncEntry[]>;
25
34
  private syncIdentityKeysInternal;
26
35
  private parseIdentitySyncResponse;
@@ -27,11 +27,19 @@ export type SignalMissingPreKeysUserResult = {
27
27
  readonly errorCode?: number;
28
28
  readonly errorText: string;
29
29
  };
30
+ /**
31
+ * Fetches missing prekey bundles for specific (user, device, registration id)
32
+ * triples – used during message encryption when a Signal session is missing.
33
+ */
30
34
  export declare class SignalMissingPreKeysSyncApi {
31
35
  private readonly logger;
32
36
  private readonly query;
33
37
  private readonly defaultTimeoutMs;
34
38
  constructor(options: SignalMissingPreKeysSyncApiOptions);
39
+ /**
40
+ * Fetches prekey bundles for the requested `targets` in a single IQ.
41
+ * Returns either a per-device bundle list or an error envelope per user.
42
+ */
35
43
  fetchMissingPreKeys(targets: readonly SignalMissingPreKeysTarget[], timeoutMs?: number): Promise<readonly SignalMissingPreKeysUserResult[]>;
36
44
  private parseFetchMissingPreKeysResponse;
37
45
  private parseUserDevices;
@@ -7,12 +7,22 @@ interface SignalRotateKeyApiOptions {
7
7
  readonly signalStore: WaSignalStore;
8
8
  readonly defaultTimeoutMs?: number;
9
9
  }
10
+ /**
11
+ * Generates a fresh signed prekey and uploads it to the server. Handles the
12
+ * `406`/`409`/`5xx` error codes by signaling whether a digest re-validation
13
+ * is required.
14
+ */
10
15
  export declare class SignalRotateKeyApi {
11
16
  private readonly logger;
12
17
  private readonly query;
13
18
  private readonly signalStore;
14
19
  private readonly defaultTimeoutMs;
15
20
  constructor(options: SignalRotateKeyApiOptions);
21
+ /**
22
+ * Rotates the signed prekey by generating a new one (next key id) and
23
+ * uploading it. Returns `shouldDigestKey: true` when the caller should
24
+ * re-run a digest validation after the rotation.
25
+ */
16
26
  rotateSignedPreKey(timeoutMs?: number): Promise<{
17
27
  shouldDigestKey: boolean;
18
28
  errorCode?: number;