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
@@ -0,0 +1,44 @@
1
+ export declare const WA_CALL_PAYLOAD_TAGS: Readonly<{
2
+ readonly OFFER: "offer";
3
+ readonly OFFER_NOTICE: "offer_notice";
4
+ readonly ACCEPT: "accept";
5
+ readonly PREACCEPT: "preaccept";
6
+ readonly REJECT: "reject";
7
+ readonly TERMINATE: "terminate";
8
+ readonly TRANSPORT: "transport";
9
+ readonly MUTE: "mute";
10
+ readonly VIDEO_STATE: "video_state";
11
+ readonly GROUP_INFO: "group_info";
12
+ readonly GROUP_UPDATE: "group_update";
13
+ readonly ENC_REKEY: "enc_rekey";
14
+ readonly PEER_STATE: "peer_state";
15
+ readonly FLOW_CONTROL: "flow_control";
16
+ readonly WEB_CLIENT: "web_client";
17
+ }>;
18
+ export type WaCallPayloadTag = (typeof WA_CALL_PAYLOAD_TAGS)[keyof typeof WA_CALL_PAYLOAD_TAGS];
19
+ /**
20
+ * Payload tags that wa-web responds to with a `<receipt>` carrying a typed
21
+ * child node (`<offer call-id call-creator/>`, etc.) instead of a plain
22
+ * `<ack class="call"/>`. Source: `WAWebHandleVoipCall.js`.
23
+ */
24
+ export declare const WA_CALL_RECEIPT_PAYLOAD_TAGS: ReadonlySet<WaCallPayloadTag>;
25
+ export declare const WA_CALL_NODE_ATTRS: Readonly<{
26
+ readonly CALL_ID: "call-id";
27
+ readonly CALL_CREATOR: "call-creator";
28
+ readonly GROUP_JID: "group-jid";
29
+ readonly CALLER_PN: "caller_pn";
30
+ readonly CALLER_COUNTRY_CODE: "caller_country_code";
31
+ readonly USERNAME: "username";
32
+ readonly NOTIFY: "notify";
33
+ readonly SENDER_LID: "sender_lid";
34
+ readonly PLATFORM: "platform";
35
+ readonly VERSION: "version";
36
+ readonly REASON: "reason";
37
+ readonly USER_PN: "user_pn";
38
+ readonly GUEST_NAME: "guest_name";
39
+ }>;
40
+ export declare const WA_CALL_CHILD_TAGS: Readonly<{
41
+ readonly VIDEO: "video";
42
+ readonly SILENCE: "silence";
43
+ readonly GROUP_INFO: "group_info";
44
+ }>;
@@ -1,16 +1,33 @@
1
1
  export { getWaCompanionPlatformId, WA_BROWSERS, WA_COMPANION_PLATFORM_IDS } from './browser';
2
2
  export { WA_SIGNALING, WA_PAIRING_KDF_INFO } from './auth';
3
3
  export { WA_CONNECTION_REASONS, WA_DISCONNECT_REASONS, WA_FAILURE_REASONS, WA_LOGOUT_REASONS, WA_READY_STATES, WA_STREAM_SIGNALING } from './stream';
4
- export type { WaConnectionCode, WaConnectionOpenReason, WaDisconnectReason, WaFailureReasonCode, WaStreamErrorCode } from './stream';
4
+ export type { WaConnectionCode, WaConnectionOpenReason, WaDisconnectReason, WaFailureReasonCode, WaLogoutReason, WaStreamErrorCode } from './stream';
5
5
  export { WA_IQ_TYPES, WA_NODE_TAGS, WA_XMLNS } from './nodes';
6
+ export { WA_CALL_CHILD_TAGS, WA_CALL_NODE_ATTRS, WA_CALL_PAYLOAD_TAGS, WA_CALL_RECEIPT_PAYLOAD_TAGS } from './call';
7
+ export type { WaCallPayloadTag } from './call';
6
8
  export { WA_EDIT_ATTRS, WA_ENC_MEDIA_TYPES, WA_EVENT_META_TYPES, WA_MESSAGE_TAGS, WA_MESSAGE_TYPES, WA_POLL_META_TYPES, WA_RETRYABLE_ACK_CODES, WA_STANZA_MSG_TYPES } from './message';
7
- export { WA_APP_STATE_COLLECTIONS, WA_APP_STATE_COLLECTION_STATES, WA_APP_STATE_CHAT_MUTATION_SPECS, WA_APP_STATE_ERROR_CODES, WA_APP_STATE_KDF_INFO, WA_APP_STATE_KEY_TYPES, WA_APP_STATE_SYNC_DATA_TYPE } from './appstate';
9
+ export type { WaOutboundReceiptType } from './message';
10
+ export { WA_APP_STATE_COLLECTIONS, WA_APP_STATE_COLLECTION_STATES, WA_APP_STATE_ERROR_CODES, WA_APP_STATE_KDF_INFO, WA_APP_STATE_KEY_TYPES, WA_APP_STATE_SYNC_DATA_TYPE } from './appstate';
8
11
  export { getWaMediaHkdfInfo, WA_MEDIA_HKDF_INFO, WA_PREVIEW_MEDIA_HKDF_INFO } from './media';
9
12
  export { WA_ACCOUNT_SYNC_PROTOCOLS, WA_DIRTY_PROTOCOLS, WA_DIRTY_TYPES, WA_SUPPORTED_DIRTY_TYPES } from './dirty';
10
- export { WA_GROUP_NOTIFICATION_TAGS, WA_NOTIFICATION_TYPES } from './notification';
13
+ export { WA_BUSINESS_NOTIFICATION_TAGS, WA_GROUP_NOTIFICATION_TAGS, WA_NEWSLETTER_NOTIFICATION_TAGS, WA_NOTIFICATION_TYPES, WA_REGISTRATION_NOTIFICATION_TAGS } from './notification';
14
+ export { WA_BUSINESS_HOURS_DAYS, WA_BUSINESS_HOURS_MODES } from './business';
15
+ export type { WaBusinessHoursDay, WaBusinessHoursMode } from './business';
16
+ export { WA_CHATSTATE_MEDIA, WA_PRESENCE_LAST_SENTINELS, WA_PRESENCE_TYPES } from './presence';
17
+ export type { WaChatstateMedia, WaPresenceLastSentinel, WaPresenceType } from './presence';
11
18
  export { WA_PRIVACY_TOKEN_NOTIFICATION_TYPE, WA_PRIVACY_TOKEN_TAGS, WA_PRIVACY_TOKEN_TYPES, WA_TC_TOKEN_DEFAULTS } from './privacy-token';
12
19
  export { WA_PRIVACY_CATEGORIES, WA_PRIVACY_CATEGORY_TO_SETTING, WA_PRIVACY_DISALLOWED_LIST_CATEGORIES, WA_PRIVACY_SETTING_TO_CATEGORY, WA_PRIVACY_TAGS, WA_PRIVACY_VALUES } from './privacy';
13
20
  export type { WaPrivacyCategory, WaPrivacySettingName, WaPrivacyValue } from './privacy';
14
21
  export { WA_DEFAULTS } from './defaults';
22
+ export { WA_BIZ_BOT_TYPES, WA_BOT_DEFAULT_CAPABILITIES, WA_BOT_HKDF_INFO, WA_BOT_KNOWN_JIDS, WA_BOT_MSG_BODY_TYPES, WA_BOT_MSG_EDIT_TYPES, WA_BOT_MSG_SECRET_BYTES, WA_BOT_NODE_ATTRS, WA_META_NODE_ATTRS_BOT } from './bot';
23
+ export type { WaBizBotType, WaBotMsgBodyType, WaBotMsgEditType } from './bot';
24
+ export { WA_STATUS_DISTRIBUTION_SETTINGS } from './status';
25
+ export type { WaStatusDistributionSetting } from './status';
26
+ export { WA_EMAIL_CONTEXTS, WA_EMAIL_ERROR_CODES, WA_EMAIL_LIMITS, WA_EMAIL_TAGS, WA_EMAIL_XMLNS } from './email';
27
+ export type { WaEmailContext, WaEmailErrorCode } from './email';
28
+ export { AB_PROP_CONFIGS, resolveAbPropNameByCode, WA_ABPROPS_PROTOCOL_VERSION, WA_ABPROPS_REFRESH_BOUNDS } from './abprops';
29
+ export type { AbPropConfigEntry, AbPropName, AbPropType, AbPropValue } from './abprops';
15
30
  export { WA_GROUP_PARTICIPANT_TYPES, type WaGroupSetting } from './group';
16
31
  export { WA_USYNC_CONTEXTS, WA_USYNC_DEFAULTS, WA_USYNC_MODES } from './usync';
32
+ export { WA_NEWSLETTER_FETCH_KEY_TYPES, WA_NEWSLETTER_MUTE_TYPES, WA_NEWSLETTER_MUTE_VALUES, WA_NEWSLETTER_PICTURE_TYPES, WA_NEWSLETTER_RECEIVE_TYPES, WA_NEWSLETTER_ROLES, WA_NEWSLETTER_SEND_TYPES, WA_NEWSLETTER_STATE_TYPES, WA_NEWSLETTER_VERIFICATION_STATES, WA_NEWSLETTER_VIEW_ROLES } from './newsletter';
33
+ export type { WaNewsletterReceiveType, WaNewsletterRole, WaNewsletterSendType, WaNewsletterStateType } from './newsletter';
@@ -8,6 +8,9 @@ export declare const WA_DEFAULTS: Readonly<{
8
8
  readonly HOSTED_DEVICE_ID: 99;
9
9
  readonly MSGR_SERVER: "msgr";
10
10
  readonly INTEROP_SERVER: "interop";
11
+ readonly NEWSLETTER_SERVER: "newsletter";
12
+ readonly BOT_SERVER: "bot";
13
+ readonly STATUS_BROADCAST_JID: "status@broadcast";
11
14
  readonly DEVICE_BROWSER: "firefox";
12
15
  readonly DEVICE_PLATFORM: string;
13
16
  readonly CHAT_SOCKET_URLS: readonly ["wss://web.whatsapp.com/ws/chat", "wss://web.whatsapp.com:5222/ws/chat"];
@@ -0,0 +1,32 @@
1
+ export declare const WA_EMAIL_XMLNS = "urn:xmpp:whatsapp:account";
2
+ export declare const WA_EMAIL_TAGS: Readonly<{
3
+ readonly EMAIL: "email";
4
+ readonly EMAIL_ADDRESS: "email_address";
5
+ readonly VERIFY_EMAIL: "verify_email";
6
+ readonly CONFIRM_EMAIL: "confirm_email";
7
+ readonly CONTEXT: "context";
8
+ readonly CODE: "code";
9
+ readonly LG: "lg";
10
+ readonly LC: "lc";
11
+ readonly AUTO_VERIFY: "auto_verify";
12
+ readonly CONFIRMED: "confirmed";
13
+ }>;
14
+ export declare const WA_EMAIL_CONTEXTS: Readonly<{
15
+ readonly ONBOARDING: "onboarding";
16
+ readonly SETTINGS: "settings";
17
+ }>;
18
+ export type WaEmailContext = (typeof WA_EMAIL_CONTEXTS)[keyof typeof WA_EMAIL_CONTEXTS];
19
+ export declare const WA_EMAIL_LIMITS: Readonly<{
20
+ readonly EMAIL_MAX_LENGTH: 320;
21
+ readonly CODE_LENGTH: 6;
22
+ readonly LOCALE_MIN_LENGTH: 2;
23
+ readonly LOCALE_MAX_LENGTH: 3;
24
+ }>;
25
+ export declare const WA_EMAIL_ERROR_CODES: Readonly<{
26
+ readonly FORBIDDEN: 403;
27
+ readonly LOCKOUT: 534;
28
+ readonly CODE_EXPIRED: 535;
29
+ readonly CODE_INCORRECT: 536;
30
+ readonly TOO_MANY_RETRIES: 537;
31
+ }>;
32
+ export type WaEmailErrorCode = (typeof WA_EMAIL_ERROR_CODES)[keyof typeof WA_EMAIL_ERROR_CODES];
@@ -3,4 +3,4 @@ export declare const WA_GROUP_PARTICIPANT_TYPES: Readonly<{
3
3
  readonly ADMIN: "admin";
4
4
  readonly REGULAR: "participant";
5
5
  }>;
6
- export type WaGroupSetting = 'announcement' | 'restrict' | 'ephemeral' | 'membership_approval_mode';
6
+ export type WaGroupSetting = 'announcement' | 'restrict' | 'ephemeral' | 'membership_approval_mode' | 'allow_non_admin_sub_group_creation' | 'group_history' | 'allow_admin_reports' | 'no_frequently_forwarded';
@@ -1,2 +1,3 @@
1
1
  export * from './constants';
2
- export { buildDeviceJid, canonicalizeSignalJid, canonicalizeSignalServer, getLoginIdentity, isHostedDeviceId, isHostedDeviceJid, isHostedServer, isGroupJid, normalizeDeviceJid, normalizeRecipientJid, parsePhoneJid, parseSignalAddressFromJid, splitJid, signalAddressKey, toUserJid } from './jid';
2
+ export { applyDeviceToJid, buildDeviceJid, canonicalizeSignalJid, canonicalizeSignalServer, getLoginIdentity, isBotJid, isBroadcastJid, isGroupJid, isGroupOrBroadcastJid, isHostedDeviceId, isHostedDeviceJid, isHostedServer, isLidJid, isNewsletterJid, isStatusBroadcastJid, isUserJid, normalizeDeviceJid, normalizeRecipientJid, parseJidFull, parsePhoneJid, parseSignalAddressFromJid, signalAddressKey, splitJid, toUserJid } from './jid';
3
+ export type { ParsedJid } from './jid';
@@ -1,36 +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). */
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). */
7
24
  export declare function isGroupJid(jid: string): boolean;
25
+ /** Returns `true` for JIDs in the `@broadcast` server (broadcast lists). */
8
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. */
9
32
  export declare function isGroupOrBroadcastJid(jid: string): boolean;
10
33
  export interface ParsedJid {
11
34
  readonly address: SignalAddress;
12
35
  readonly userJid: string;
13
36
  readonly normalizedJid: string;
14
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
+ */
15
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
+ */
16
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
+ */
17
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
+ */
18
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
+ */
19
65
  export declare function toUserJid(jid: string, options?: {
20
66
  readonly canonicalizeSignalServer?: boolean;
21
67
  readonly hostDomain?: string;
22
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
+ */
23
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. */
24
80
  export declare function isHostedDeviceId(deviceId: number): boolean;
81
+ /** Returns `true` for the hosted server variants (`hosted` and `hosted.lid`). */
25
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
+ */
26
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
+ */
27
93
  export declare function buildDeviceJid(user: string, normalizedServer: string, deviceId: number, options?: {
28
94
  readonly rawServer?: string;
29
95
  readonly isHosted?: boolean;
30
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
+ */
31
102
  export declare function getLoginIdentity(meJid: string): {
32
103
  readonly username: number;
33
104
  readonly device: number;
34
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
+ */
35
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
+ */
36
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
+ }>;
@@ -32,6 +32,7 @@ export declare const WA_NODE_TAGS: Readonly<{
32
32
  readonly DESCRIPTION: "description";
33
33
  readonly MY_ADDONS: "my_addons";
34
34
  readonly KEY: "key";
35
+ readonly OP: "op";
35
36
  readonly REGISTRATION: "registration";
36
37
  readonly TYPE: "type";
37
38
  readonly IDENTITY: "identity";
@@ -61,6 +62,23 @@ export declare const WA_NODE_TAGS: Readonly<{
61
62
  readonly EPHEMERAL: "ephemeral";
62
63
  readonly MEMBERSHIP_APPROVAL_MODE: "membership_approval_mode";
63
64
  readonly GROUP_JOIN: "group_join";
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";
64
82
  }>;
65
83
  export declare const WA_IQ_TYPES: Readonly<{
66
84
  readonly GET: "get";
@@ -82,6 +100,12 @@ export declare const WA_XMLNS: Readonly<{
82
100
  readonly STATUS: "status";
83
101
  readonly GROUPS: "w:g2";
84
102
  readonly NEWSLETTER: "newsletter";
103
+ readonly TOS: "tos";
85
104
  readonly XMPP_PING: "urn:xmpp:ping";
86
105
  readonly WHATSAPP_PING: "w:p";
106
+ readonly ABPROPS: "abt";
107
+ readonly MEX: "w:mex";
108
+ readonly BOT: "bot";
109
+ readonly DISAPPEARING_MODE: "disappearing_mode";
110
+ readonly PASSIVE: "passive";
87
111
  }>;
@@ -2,6 +2,26 @@ export declare const WA_NOTIFICATION_TYPES: Readonly<{
2
2
  readonly GROUP: "w:gp2";
3
3
  readonly ENCRYPT: "encrypt";
4
4
  readonly DEVICES: "devices";
5
+ readonly SERVER: "server";
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";
21
+ }>;
22
+ export declare const WA_REGISTRATION_NOTIFICATION_TAGS: Readonly<{
23
+ readonly WA_OLD_REGISTRATION: "wa_old_registration";
24
+ readonly DEVICE_LOGOUT: "device_logout";
5
25
  }>;
6
26
  export declare const WA_GROUP_NOTIFICATION_TAGS: Readonly<{
7
27
  readonly REMOVE: "remove";
@@ -49,4 +69,6 @@ export declare const WA_GROUP_NOTIFICATION_TAGS: Readonly<{
49
69
  readonly GROUP_SAFETY_CHECK: "group_safety_check";
50
70
  readonly LIMIT_SHARING_ENABLED: "limit_sharing_enabled";
51
71
  readonly MISSING_PARTICIPANT_IDENTIFICATION: "missing_participant_identification";
72
+ readonly GROUP_HISTORY: "group_history";
73
+ readonly NO_GROUP_HISTORY: "no_group_history";
52
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];
@@ -39,6 +39,7 @@ export declare const WA_LOGOUT_REASONS: Readonly<{
39
39
  readonly WEB_FAIL_ENC_SALT: "web_fail_enc_salt";
40
40
  readonly CACHE_STORAGE_OPEN_FAILED: "cache_storage_open_failed";
41
41
  }>;
42
+ export type WaLogoutReason = (typeof WA_LOGOUT_REASONS)[keyof typeof WA_LOGOUT_REASONS];
42
43
  export declare const WA_STREAM_SIGNALING: Readonly<{
43
44
  readonly STREAM_ERROR_TAG: "stream:error";
44
45
  readonly XML_STREAM_END_TAG: "xmlstreamend";
@@ -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
- export declare function mapRetryReasonFromError(error: unknown): WaRetryReasonCode;
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
+ */
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;