zapo-js 0.1.2 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (630) hide show
  1. package/README.md +16 -4
  2. package/dist/appstate/WaAppStateCrypto.js +50 -42
  3. package/dist/appstate/WaAppStateSyncClient.js +215 -133
  4. package/dist/appstate/{store/sqlite.js → encoding.js} +13 -8
  5. package/dist/appstate/index.js +9 -7
  6. package/dist/appstate/utils.js +0 -5
  7. package/dist/auth/WaAuthClient.js +55 -57
  8. package/dist/auth/credentials-flow.js +195 -0
  9. package/dist/auth/index.js +1 -6
  10. package/dist/auth/pairing/WaPairingFlow.js +39 -32
  11. package/dist/auth/pairing/{WaPairingCodeCrypto.js → pairing-code-crypto.js} +35 -17
  12. package/dist/client/WaClient.js +338 -174
  13. package/dist/client/WaClientFactory.js +399 -66
  14. package/dist/client/connection/WaConnectionManager.js +23 -11
  15. package/dist/client/coordinators/WaAbPropsCoordinator.js +141 -0
  16. package/dist/client/coordinators/WaBusinessCoordinator.js +232 -0
  17. package/dist/client/coordinators/WaEmailCoordinator.js +63 -0
  18. package/dist/client/coordinators/WaGroupCoordinator.js +11 -7
  19. package/dist/client/coordinators/WaIncomingNodeCoordinator.js +34 -8
  20. package/dist/client/coordinators/WaMessageDispatchCoordinator.js +341 -118
  21. package/dist/client/coordinators/WaOfflineResumeCoordinator.js +114 -0
  22. package/dist/client/coordinators/WaPassiveTasksCoordinator.js +97 -36
  23. package/dist/client/coordinators/WaPrivacyCoordinator.js +134 -0
  24. package/dist/client/coordinators/WaProfileCoordinator.js +214 -0
  25. package/dist/client/coordinators/WaRetryCoordinator.js +184 -30
  26. package/dist/client/coordinators/WaStreamControlCoordinator.js +18 -11
  27. package/dist/client/coordinators/WaTrustedContactTokenCoordinator.js +184 -0
  28. package/dist/client/dirty.js +41 -21
  29. package/dist/client/events/abprops.js +43 -0
  30. package/dist/client/events/devices.js +72 -0
  31. package/dist/client/events/group.js +3 -11
  32. package/dist/client/events/identity.js +22 -0
  33. package/dist/client/events/privacy-token.js +38 -0
  34. package/dist/client/events/registration.js +42 -0
  35. package/dist/client/history-sync.js +50 -9
  36. package/dist/client/incoming.js +74 -7
  37. package/dist/client/mailbox.js +40 -23
  38. package/dist/client/media.js +243 -0
  39. package/dist/client/messages.js +245 -92
  40. package/dist/client/messaging/fanout.js +21 -11
  41. package/dist/client/messaging/participants.js +6 -4
  42. package/dist/client/persistence/WriteBehindPersistence.js +129 -0
  43. package/dist/client/tokens/cs-token.js +50 -0
  44. package/dist/client/tokens/tc-token.js +25 -0
  45. package/dist/crypto/core/index.js +5 -2
  46. package/dist/crypto/core/keys.js +4 -4
  47. package/dist/crypto/core/nonce.js +2 -0
  48. package/dist/crypto/core/primitives.js +0 -8
  49. package/dist/crypto/core/random.js +24 -8
  50. package/dist/crypto/core/xeddsa.js +57 -0
  51. package/dist/crypto/curves/X25519.js +43 -6
  52. package/dist/crypto/curves/constants.js +2 -1
  53. package/dist/crypto/index.js +3 -0
  54. package/dist/crypto/math/constants.js +13 -36
  55. package/dist/crypto/math/edwards.js +171 -44
  56. package/dist/crypto/math/fe.js +706 -0
  57. package/dist/crypto/math/mod.js +10 -3
  58. package/dist/esm/appstate/WaAppStateCrypto.js +40 -32
  59. package/dist/esm/appstate/WaAppStateSyncClient.js +206 -124
  60. package/dist/esm/appstate/{store/sqlite.js → encoding.js} +13 -8
  61. package/dist/esm/appstate/index.js +2 -2
  62. package/dist/esm/appstate/{WaAppStateSyncResponseParser.js → response-parser.js} +1 -1
  63. package/dist/esm/appstate/utils.js +2 -5
  64. package/dist/esm/auth/WaAuthClient.js +52 -54
  65. package/dist/esm/auth/credentials-flow.js +190 -0
  66. package/dist/esm/auth/index.js +0 -2
  67. package/dist/esm/auth/pairing/WaPairingFlow.js +39 -32
  68. package/dist/esm/auth/pairing/{WaPairingCodeCrypto.js → pairing-code-crypto.js} +26 -10
  69. package/dist/esm/client/WaClient.js +339 -175
  70. package/dist/esm/client/WaClientFactory.js +401 -68
  71. package/dist/esm/client/connection/WaConnectionManager.js +23 -11
  72. package/dist/esm/client/coordinators/WaAbPropsCoordinator.js +137 -0
  73. package/dist/esm/client/coordinators/WaBusinessCoordinator.js +229 -0
  74. package/dist/esm/client/coordinators/WaEmailCoordinator.js +60 -0
  75. package/dist/esm/client/coordinators/WaGroupCoordinator.js +11 -7
  76. package/dist/esm/client/coordinators/WaIncomingNodeCoordinator.js +36 -10
  77. package/dist/esm/client/coordinators/WaMessageDispatchCoordinator.js +337 -114
  78. package/dist/esm/client/coordinators/WaOfflineResumeCoordinator.js +110 -0
  79. package/dist/esm/client/coordinators/WaPassiveTasksCoordinator.js +97 -36
  80. package/dist/esm/client/coordinators/WaPrivacyCoordinator.js +131 -0
  81. package/dist/esm/client/coordinators/WaProfileCoordinator.js +211 -0
  82. package/dist/esm/client/coordinators/WaRetryCoordinator.js +186 -32
  83. package/dist/esm/client/coordinators/WaStreamControlCoordinator.js +19 -12
  84. package/dist/esm/client/coordinators/WaTrustedContactTokenCoordinator.js +180 -0
  85. package/dist/esm/client/dirty.js +41 -21
  86. package/dist/esm/client/events/abprops.js +40 -0
  87. package/dist/esm/client/events/devices.js +68 -0
  88. package/dist/esm/client/events/group.js +3 -11
  89. package/dist/esm/client/events/identity.js +19 -0
  90. package/dist/esm/client/events/privacy-token.js +35 -0
  91. package/dist/esm/client/events/registration.js +39 -0
  92. package/dist/esm/client/history-sync.js +50 -9
  93. package/dist/esm/client/incoming.js +74 -8
  94. package/dist/esm/client/mailbox.js +40 -23
  95. package/dist/esm/client/media.js +234 -0
  96. package/dist/esm/client/messages.js +244 -91
  97. package/dist/esm/client/messaging/fanout.js +22 -12
  98. package/dist/esm/client/messaging/participants.js +6 -4
  99. package/dist/esm/client/persistence/WriteBehindPersistence.js +125 -0
  100. package/dist/esm/client/tokens/cs-token.js +46 -0
  101. package/dist/esm/client/tokens/tc-token.js +18 -0
  102. package/dist/esm/crypto/core/index.js +3 -2
  103. package/dist/esm/crypto/core/keys.js +1 -1
  104. package/dist/esm/crypto/core/nonce.js +2 -0
  105. package/dist/esm/crypto/core/primitives.js +0 -7
  106. package/dist/esm/crypto/core/random.js +23 -7
  107. package/dist/esm/crypto/core/xeddsa.js +53 -0
  108. package/dist/esm/crypto/curves/X25519.js +45 -8
  109. package/dist/esm/crypto/curves/constants.js +1 -0
  110. package/dist/esm/crypto/index.js +1 -0
  111. package/dist/esm/crypto/math/constants.js +12 -35
  112. package/dist/esm/crypto/math/edwards.js +174 -47
  113. package/dist/esm/crypto/math/fe.js +691 -0
  114. package/dist/esm/crypto/math/mod.js +10 -1
  115. package/dist/esm/index.js +1 -1
  116. package/dist/esm/infra/perf/BackgroundQueue.js +478 -0
  117. package/dist/esm/infra/perf/BoundedTaskQueue.js +3 -1
  118. package/dist/esm/infra/perf/PromiseDedup.js +20 -0
  119. package/dist/esm/infra/perf/SharedExclusiveGate.js +109 -0
  120. package/dist/esm/infra/perf/StoreLock.js +80 -0
  121. package/dist/esm/media/WaMediaCrypto.js +332 -55
  122. package/dist/esm/media/WaMediaTransferClient.js +69 -220
  123. package/dist/esm/media/constants.js +4 -1
  124. package/dist/esm/media/processor.js +1 -0
  125. package/dist/esm/message/WaMessageClient.js +26 -19
  126. package/dist/esm/message/addon-crypto.js +130 -3
  127. package/dist/esm/message/content.js +206 -14
  128. package/dist/esm/message/icdc.js +76 -0
  129. package/dist/esm/message/incoming.js +38 -24
  130. package/dist/esm/message/phash.js +35 -13
  131. package/dist/esm/message/reporting-token.js +17 -30
  132. package/dist/esm/message/use-case-secret.js +1 -1
  133. package/dist/esm/protocol/abprops.js +159 -0
  134. package/dist/esm/protocol/appstate.js +9 -40
  135. package/dist/esm/protocol/browser.js +24 -18
  136. package/dist/esm/protocol/constants.js +8 -4
  137. package/dist/esm/protocol/defaults.js +6 -0
  138. package/dist/esm/protocol/email.js +30 -0
  139. package/dist/esm/protocol/index.js +1 -2
  140. package/dist/esm/protocol/jid.js +142 -39
  141. package/dist/esm/protocol/message.js +61 -1
  142. package/dist/esm/protocol/nodes.js +8 -2
  143. package/dist/esm/protocol/notification.js +9 -1
  144. package/dist/esm/protocol/privacy-token.js +17 -0
  145. package/dist/esm/protocol/privacy.js +55 -0
  146. package/dist/esm/protocol/stream.js +26 -1
  147. package/dist/esm/retry/codec.js +216 -0
  148. package/dist/esm/retry/constants.js +1 -1
  149. package/dist/esm/retry/index.js +2 -2
  150. package/dist/esm/retry/parse.js +50 -30
  151. package/dist/esm/retry/reason.js +1 -1
  152. package/dist/esm/retry/replay.js +11 -7
  153. package/dist/esm/retry/tracker.js +50 -12
  154. package/dist/esm/signal/api/SignalDeviceSyncApi.js +52 -32
  155. package/dist/esm/signal/api/SignalDigestSyncApi.js +21 -15
  156. package/dist/esm/signal/api/SignalIdentitySyncApi.js +30 -15
  157. package/dist/esm/signal/api/SignalMissingPreKeysSyncApi.js +19 -8
  158. package/dist/esm/signal/api/SignalRotateKeyApi.js +4 -2
  159. package/dist/esm/signal/api/SignalSessionSyncApi.js +17 -8
  160. package/dist/esm/signal/api/result-map.js +10 -0
  161. package/dist/esm/signal/constants.js +0 -4
  162. package/dist/esm/signal/crypto/WaAdvSignature.js +5 -45
  163. package/dist/esm/signal/crypto/constants.js +0 -4
  164. package/dist/esm/signal/{store/sqlite.js → encoding.js} +40 -29
  165. package/dist/esm/signal/group/SenderKeyChain.js +3 -3
  166. package/dist/esm/signal/group/SenderKeyCodec.js +8 -8
  167. package/dist/esm/signal/group/SenderKeyManager.js +131 -109
  168. package/dist/esm/signal/index.js +1 -0
  169. package/dist/esm/signal/registration/keygen.js +8 -5
  170. package/dist/esm/signal/registration/utils.js +3 -2
  171. package/dist/esm/signal/session/SignalProtocol.js +158 -81
  172. package/dist/esm/signal/session/SignalRatchet.js +21 -10
  173. package/dist/esm/signal/session/SignalSerializer.js +5 -6
  174. package/dist/esm/signal/session/SignalSession.js +11 -9
  175. package/dist/esm/signal/session/resolver.js +140 -105
  176. package/dist/esm/store/contracts/identity.store.js +1 -0
  177. package/dist/esm/store/contracts/message-secret.store.js +1 -0
  178. package/dist/esm/store/contracts/pre-key.store.js +1 -0
  179. package/dist/esm/store/contracts/privacy-token.store.js +1 -0
  180. package/dist/esm/store/contracts/session.store.js +1 -0
  181. package/dist/esm/store/createStore.js +143 -193
  182. package/dist/esm/store/index.js +5 -10
  183. package/dist/esm/store/locks/appstate.lock.js +26 -0
  184. package/dist/esm/store/locks/auth.lock.js +15 -0
  185. package/dist/esm/store/locks/contact.lock.js +20 -0
  186. package/dist/esm/store/locks/device-list.lock.js +20 -0
  187. package/dist/esm/store/locks/identity.lock.js +16 -0
  188. package/dist/esm/store/locks/message-secret.lock.js +17 -0
  189. package/dist/esm/store/locks/message.lock.js +21 -0
  190. package/dist/esm/store/locks/participants.lock.js +20 -0
  191. package/dist/esm/store/locks/pre-key.lock.js +27 -0
  192. package/dist/esm/store/locks/privacy-token.lock.js +18 -0
  193. package/dist/esm/store/locks/retry.lock.js +29 -0
  194. package/dist/esm/store/locks/sender-key.lock.js +52 -0
  195. package/dist/esm/store/locks/session.lock.js +19 -0
  196. package/dist/esm/store/locks/signal.lock.js +39 -0
  197. package/dist/esm/store/locks/thread.lock.js +21 -0
  198. package/dist/esm/store/noop.store.js +21 -1
  199. package/dist/esm/store/providers/memory/appstate.store.js +22 -24
  200. package/dist/esm/store/providers/memory/device-list.store.js +13 -5
  201. package/dist/esm/store/providers/memory/identity.store.js +31 -0
  202. package/dist/esm/store/providers/memory/message-secret.store.js +81 -0
  203. package/dist/esm/store/providers/memory/participants.store.js +3 -0
  204. package/dist/esm/store/providers/memory/pre-key.store.js +97 -0
  205. package/dist/esm/store/providers/memory/privacy-token.store.js +43 -0
  206. package/dist/esm/store/providers/memory/retry.store.js +99 -10
  207. package/dist/esm/store/providers/memory/sender-key.store.js +6 -1
  208. package/dist/esm/store/providers/memory/session.store.js +45 -0
  209. package/dist/esm/store/providers/memory/signal.store.js +1 -147
  210. package/dist/esm/transport/WaComms.js +7 -4
  211. package/dist/esm/transport/WaWebSocket.js +9 -7
  212. package/dist/esm/transport/binary/constants.js +0 -30
  213. package/dist/esm/transport/binary/decoder.js +4 -4
  214. package/dist/esm/transport/binary/encoder.js +8 -15
  215. package/dist/esm/transport/binary/index.js +0 -1
  216. package/dist/esm/transport/index.js +6 -0
  217. package/dist/esm/transport/keepalive/WaKeepAlive.js +17 -8
  218. package/dist/esm/transport/node/WaMobileTcpSocket.js +114 -0
  219. package/dist/esm/transport/node/WaNodeOrchestrator.js +37 -22
  220. package/dist/esm/transport/node/builders/abprops.js +20 -0
  221. package/dist/esm/transport/node/builders/business.js +129 -0
  222. package/dist/esm/transport/node/builders/device.js +11 -0
  223. package/dist/esm/transport/node/builders/email.js +65 -0
  224. package/dist/esm/transport/node/builders/global.js +370 -0
  225. package/dist/esm/transport/node/builders/message.js +63 -239
  226. package/dist/esm/transport/node/builders/offline.js +14 -0
  227. package/dist/esm/transport/node/builders/pairing.js +0 -24
  228. package/dist/esm/transport/node/builders/prekeys.js +37 -40
  229. package/dist/esm/transport/node/builders/presence.js +13 -0
  230. package/dist/esm/transport/node/builders/privacy-token.js +37 -0
  231. package/dist/esm/transport/node/builders/privacy.js +48 -0
  232. package/dist/esm/transport/node/builders/profile.js +70 -0
  233. package/dist/esm/transport/node/builders/retry.js +11 -23
  234. package/dist/esm/transport/node/builders/usync.js +6 -2
  235. package/dist/esm/transport/node/helpers.js +43 -1
  236. package/dist/esm/transport/node/mex/argo-decoder.js +152 -0
  237. package/dist/esm/transport/node/mex/client.js +83 -0
  238. package/dist/esm/transport/node/mex/persist-ids.js +10 -0
  239. package/dist/esm/transport/node/usync.js +3 -33
  240. package/dist/esm/transport/node/xml.js +35 -14
  241. package/dist/esm/transport/noise/WaClientPayload.js +24 -19
  242. package/dist/esm/transport/noise/WaFrameCodec.js +2 -2
  243. package/dist/esm/transport/noise/WaMobileClientPayload.js +53 -0
  244. package/dist/esm/transport/noise/WaNoiseCert.js +9 -27
  245. package/dist/esm/transport/noise/WaNoiseSession.js +76 -34
  246. package/dist/esm/transport/noise/WaNoiseSocket.js +8 -4
  247. package/dist/esm/transport/stream/parse.js +8 -4
  248. package/dist/esm/util/bytes.js +22 -18
  249. package/dist/esm/util/index.js +5 -0
  250. package/dist/esm/util/primitives.js +3 -2
  251. package/dist/index.js +7 -1
  252. package/dist/infra/perf/BackgroundQueue.js +482 -0
  253. package/dist/infra/perf/BoundedTaskQueue.js +3 -1
  254. package/dist/infra/perf/PromiseDedup.js +24 -0
  255. package/dist/infra/perf/SharedExclusiveGate.js +113 -0
  256. package/dist/infra/perf/StoreLock.js +84 -0
  257. package/dist/media/WaMediaCrypto.js +328 -51
  258. package/dist/media/WaMediaTransferClient.js +72 -253
  259. package/dist/media/constants.js +5 -2
  260. package/dist/media/processor.js +2 -0
  261. package/dist/message/WaMessageClient.js +26 -19
  262. package/dist/message/addon-crypto.js +131 -0
  263. package/dist/message/content.js +211 -14
  264. package/dist/message/icdc.js +81 -0
  265. package/dist/message/incoming.js +38 -24
  266. package/dist/message/phash.js +35 -13
  267. package/dist/message/reporting-token.js +16 -30
  268. package/dist/message/use-case-secret.js +1 -1
  269. package/dist/protocol/abprops.js +163 -0
  270. package/dist/protocol/appstate.js +10 -41
  271. package/dist/protocol/browser.js +25 -18
  272. package/dist/protocol/constants.js +33 -2
  273. package/dist/protocol/defaults.js +6 -0
  274. package/dist/protocol/email.js +33 -0
  275. package/dist/protocol/index.js +8 -5
  276. package/dist/protocol/jid.js +149 -39
  277. package/dist/protocol/message.js +62 -2
  278. package/dist/protocol/nodes.js +8 -2
  279. package/dist/protocol/notification.js +10 -2
  280. package/dist/protocol/privacy-token.js +20 -0
  281. package/dist/protocol/privacy.js +58 -0
  282. package/dist/protocol/stream.js +27 -2
  283. package/dist/retry/codec.js +220 -0
  284. package/dist/retry/constants.js +1 -1
  285. package/dist/retry/index.js +5 -5
  286. package/dist/retry/parse.js +51 -30
  287. package/dist/retry/reason.js +1 -1
  288. package/dist/retry/replay.js +10 -6
  289. package/dist/retry/tracker.js +50 -12
  290. package/dist/signal/api/SignalDeviceSyncApi.js +51 -31
  291. package/dist/signal/api/SignalDigestSyncApi.js +21 -15
  292. package/dist/signal/api/SignalIdentitySyncApi.js +29 -14
  293. package/dist/signal/api/SignalMissingPreKeysSyncApi.js +17 -6
  294. package/dist/signal/api/SignalRotateKeyApi.js +4 -2
  295. package/dist/signal/api/SignalSessionSyncApi.js +16 -7
  296. package/dist/signal/api/result-map.js +13 -0
  297. package/dist/signal/constants.js +1 -5
  298. package/dist/signal/crypto/WaAdvSignature.js +2 -44
  299. package/dist/signal/crypto/constants.js +1 -5
  300. package/dist/signal/{store/sqlite.js → encoding.js} +41 -25
  301. package/dist/signal/group/SenderKeyChain.js +2 -2
  302. package/dist/signal/group/SenderKeyCodec.js +8 -8
  303. package/dist/signal/group/SenderKeyManager.js +130 -108
  304. package/dist/signal/index.js +13 -1
  305. package/dist/signal/registration/keygen.js +7 -4
  306. package/dist/signal/registration/utils.js +3 -2
  307. package/dist/signal/session/SignalProtocol.js +158 -81
  308. package/dist/signal/session/SignalRatchet.js +19 -8
  309. package/dist/signal/session/SignalSerializer.js +5 -6
  310. package/dist/signal/session/SignalSession.js +11 -9
  311. package/dist/signal/session/resolver.js +138 -103
  312. package/dist/store/contracts/identity.store.js +2 -0
  313. package/dist/store/contracts/message-secret.store.js +2 -0
  314. package/dist/store/contracts/pre-key.store.js +2 -0
  315. package/dist/store/contracts/privacy-token.store.js +2 -0
  316. package/dist/store/contracts/session.store.js +2 -0
  317. package/dist/store/createStore.js +142 -192
  318. package/dist/store/index.js +23 -33
  319. package/dist/store/locks/appstate.lock.js +29 -0
  320. package/dist/store/locks/auth.lock.js +18 -0
  321. package/dist/store/locks/contact.lock.js +23 -0
  322. package/dist/store/locks/device-list.lock.js +23 -0
  323. package/dist/store/locks/identity.lock.js +19 -0
  324. package/dist/store/locks/message-secret.lock.js +20 -0
  325. package/dist/store/locks/message.lock.js +24 -0
  326. package/dist/store/locks/participants.lock.js +23 -0
  327. package/dist/store/locks/pre-key.lock.js +30 -0
  328. package/dist/store/locks/privacy-token.lock.js +21 -0
  329. package/dist/store/locks/retry.lock.js +32 -0
  330. package/dist/store/locks/sender-key.lock.js +55 -0
  331. package/dist/store/locks/session.lock.js +22 -0
  332. package/dist/store/locks/signal.lock.js +42 -0
  333. package/dist/store/locks/thread.lock.js +24 -0
  334. package/dist/store/noop.store.js +22 -2
  335. package/dist/store/providers/memory/appstate.store.js +22 -24
  336. package/dist/store/providers/memory/device-list.store.js +13 -5
  337. package/dist/store/providers/memory/identity.store.js +35 -0
  338. package/dist/store/providers/memory/message-secret.store.js +85 -0
  339. package/dist/store/providers/memory/participants.store.js +3 -0
  340. package/dist/store/providers/memory/pre-key.store.js +101 -0
  341. package/dist/store/providers/memory/privacy-token.store.js +47 -0
  342. package/dist/store/providers/memory/retry.store.js +98 -9
  343. package/dist/store/providers/memory/sender-key.store.js +6 -1
  344. package/dist/store/providers/memory/session.store.js +49 -0
  345. package/dist/store/providers/memory/signal.store.js +1 -147
  346. package/dist/transport/WaComms.js +7 -4
  347. package/dist/transport/WaWebSocket.js +9 -7
  348. package/dist/transport/binary/constants.js +1 -31
  349. package/dist/transport/binary/decoder.js +4 -4
  350. package/dist/transport/binary/encoder.js +8 -15
  351. package/dist/transport/binary/index.js +0 -4
  352. package/dist/transport/index.js +17 -1
  353. package/dist/transport/keepalive/WaKeepAlive.js +17 -8
  354. package/dist/transport/node/WaMobileTcpSocket.js +118 -0
  355. package/dist/transport/node/WaNodeOrchestrator.js +36 -21
  356. package/dist/transport/node/builders/abprops.js +23 -0
  357. package/dist/transport/node/builders/business.js +137 -0
  358. package/dist/transport/node/builders/device.js +14 -0
  359. package/dist/transport/node/builders/email.js +72 -0
  360. package/dist/transport/node/builders/global.js +375 -0
  361. package/dist/transport/node/builders/message.js +64 -245
  362. package/dist/transport/node/builders/offline.js +17 -0
  363. package/dist/transport/node/builders/pairing.js +0 -26
  364. package/dist/transport/node/builders/prekeys.js +36 -39
  365. package/dist/transport/node/builders/presence.js +16 -0
  366. package/dist/transport/node/builders/privacy-token.js +42 -0
  367. package/dist/transport/node/builders/privacy.js +55 -0
  368. package/dist/transport/node/builders/profile.js +78 -0
  369. package/dist/transport/node/builders/retry.js +10 -22
  370. package/dist/transport/node/builders/usync.js +6 -2
  371. package/dist/transport/node/helpers.js +46 -1
  372. package/dist/transport/node/mex/argo-decoder.js +189 -0
  373. package/dist/transport/node/mex/client.js +86 -0
  374. package/dist/transport/node/mex/persist-ids.js +13 -0
  375. package/dist/transport/node/usync.js +2 -32
  376. package/dist/transport/node/xml.js +35 -14
  377. package/dist/transport/noise/WaClientPayload.js +26 -21
  378. package/dist/transport/noise/WaFrameCodec.js +1 -1
  379. package/dist/transport/noise/WaMobileClientPayload.js +56 -0
  380. package/dist/transport/noise/WaNoiseCert.js +8 -26
  381. package/dist/transport/noise/WaNoiseSession.js +75 -33
  382. package/dist/transport/noise/WaNoiseSocket.js +8 -4
  383. package/dist/transport/stream/parse.js +7 -3
  384. package/dist/types/appstate/WaAppStateCrypto.d.ts +11 -8
  385. package/dist/types/appstate/WaAppStateSyncClient.d.ts +6 -2
  386. package/dist/types/appstate/encoding.d.ts +7 -0
  387. package/dist/types/appstate/index.d.ts +3 -3
  388. package/dist/types/appstate/{WaAppStateSyncResponseParser.d.ts → response-parser.d.ts} +1 -1
  389. package/dist/types/appstate/types.d.ts +1 -1
  390. package/dist/types/appstate/utils.d.ts +0 -2
  391. package/dist/types/auth/WaAuthClient.d.ts +9 -3
  392. package/dist/types/auth/credentials-flow.d.ts +20 -0
  393. package/dist/types/auth/index.d.ts +0 -2
  394. package/dist/types/auth/pairing/WaPairingFlow.d.ts +3 -2
  395. package/dist/types/auth/pairing/{WaPairingCodeCrypto.d.ts → pairing-code-crypto.d.ts} +6 -1
  396. package/dist/types/auth/types.d.ts +41 -0
  397. package/dist/types/client/WaClient.d.ts +44 -18
  398. package/dist/types/client/WaClientFactory.d.ts +22 -8
  399. package/dist/types/client/connection/WaConnectionManager.d.ts +2 -0
  400. package/dist/types/client/coordinators/WaAbPropsCoordinator.d.ts +26 -0
  401. package/dist/types/client/coordinators/WaBusinessCoordinator.d.ts +57 -0
  402. package/dist/types/client/coordinators/WaEmailCoordinator.d.ts +24 -0
  403. package/dist/types/client/coordinators/WaIncomingNodeCoordinator.d.ts +9 -2
  404. package/dist/types/client/coordinators/WaMessageDispatchCoordinator.d.ts +29 -2
  405. package/dist/types/client/coordinators/WaOfflineResumeCoordinator.d.ts +31 -0
  406. package/dist/types/client/coordinators/WaPassiveTasksCoordinator.d.ts +16 -1
  407. package/dist/types/client/coordinators/WaPrivacyCoordinator.d.ts +26 -0
  408. package/dist/types/client/coordinators/WaProfileCoordinator.d.ts +38 -0
  409. package/dist/types/client/coordinators/WaRetryCoordinator.d.ts +12 -0
  410. package/dist/types/client/coordinators/WaStreamControlCoordinator.d.ts +3 -2
  411. package/dist/types/client/coordinators/WaTrustedContactTokenCoordinator.d.ts +55 -0
  412. package/dist/types/client/dirty.d.ts +3 -1
  413. package/dist/types/client/events/abprops.d.ts +14 -0
  414. package/dist/types/client/events/devices.d.ts +20 -0
  415. package/dist/types/client/events/identity.d.ts +9 -0
  416. package/dist/types/client/events/privacy-token.d.ts +7 -0
  417. package/dist/types/client/events/registration.d.ts +17 -0
  418. package/dist/types/client/history-sync.d.ts +9 -6
  419. package/dist/types/client/incoming.d.ts +9 -2
  420. package/dist/types/client/index.d.ts +1 -1
  421. package/dist/types/client/mailbox.d.ts +5 -5
  422. package/dist/types/client/media.d.ts +31 -0
  423. package/dist/types/client/messages.d.ts +3 -2
  424. package/dist/types/client/persistence/WriteBehindPersistence.d.ts +34 -0
  425. package/dist/types/client/tokens/cs-token.d.ts +10 -0
  426. package/dist/types/client/tokens/tc-token.d.ts +5 -0
  427. package/dist/types/client/types.d.ts +151 -4
  428. package/dist/types/crypto/core/index.d.ts +3 -2
  429. package/dist/types/crypto/core/nonce.d.ts +2 -0
  430. package/dist/types/crypto/core/primitives.d.ts +1 -2
  431. package/dist/types/crypto/core/random.d.ts +2 -1
  432. package/dist/types/crypto/core/xeddsa.d.ts +2 -0
  433. package/dist/types/crypto/curves/constants.d.ts +1 -0
  434. package/dist/types/crypto/index.d.ts +2 -0
  435. package/dist/types/crypto/math/constants.d.ts +4 -2
  436. package/dist/types/crypto/math/fe.d.ts +30 -0
  437. package/dist/types/crypto/math/mod.d.ts +0 -2
  438. package/dist/types/crypto/math/types.d.ts +11 -4
  439. package/dist/types/index.d.ts +6 -3
  440. package/dist/types/infra/log/ConsoleLogger.d.ts +1 -1
  441. package/dist/types/infra/log/PinoLogger.d.ts +1 -1
  442. package/dist/types/infra/perf/BackgroundQueue.d.ts +58 -0
  443. package/dist/types/infra/perf/PromiseDedup.d.ts +4 -0
  444. package/dist/types/infra/perf/SharedExclusiveGate.d.ts +17 -0
  445. package/dist/types/infra/perf/StoreLock.d.ts +11 -0
  446. package/dist/types/media/WaMediaCrypto.d.ts +16 -6
  447. package/dist/types/media/WaMediaTransferClient.d.ts +6 -23
  448. package/dist/types/media/constants.d.ts +3 -1
  449. package/dist/types/media/index.d.ts +2 -1
  450. package/dist/types/media/processor.d.ts +28 -0
  451. package/dist/types/media/types.d.ts +19 -5
  452. package/dist/types/message/addon-crypto.d.ts +34 -3
  453. package/dist/types/message/content.d.ts +11 -1
  454. package/dist/types/message/icdc.d.ts +13 -0
  455. package/dist/types/message/reporting-token.d.ts +0 -1
  456. package/dist/types/message/types.d.ts +42 -11
  457. package/dist/types/protocol/abprops.d.ts +142 -0
  458. package/dist/types/protocol/appstate.d.ts +0 -11
  459. package/dist/types/protocol/browser.d.ts +1 -0
  460. package/dist/types/protocol/constants.d.ts +12 -4
  461. package/dist/types/protocol/defaults.d.ts +6 -0
  462. package/dist/types/protocol/email.d.ts +32 -0
  463. package/dist/types/protocol/index.d.ts +1 -2
  464. package/dist/types/protocol/jid.d.ts +20 -2
  465. package/dist/types/protocol/message.d.ts +60 -0
  466. package/dist/types/protocol/nodes.d.ts +6 -0
  467. package/dist/types/protocol/notification.d.ts +8 -0
  468. package/dist/types/protocol/privacy-token.d.ts +17 -0
  469. package/dist/types/protocol/privacy.d.ts +75 -0
  470. package/dist/types/protocol/stream.d.ts +31 -0
  471. package/dist/types/retry/codec.d.ts +3 -0
  472. package/dist/types/retry/index.d.ts +3 -3
  473. package/dist/types/retry/parse.d.ts +5 -2
  474. package/dist/types/retry/reason.d.ts +1 -1
  475. package/dist/types/retry/tracker.d.ts +1 -0
  476. package/dist/types/retry/types.d.ts +6 -1
  477. package/dist/types/signal/api/SignalDeviceSyncApi.d.ts +2 -1
  478. package/dist/types/signal/api/SignalDigestSyncApi.d.ts +9 -0
  479. package/dist/types/signal/api/SignalIdentitySyncApi.d.ts +5 -3
  480. package/dist/types/signal/api/SignalRotateKeyApi.d.ts +4 -5
  481. package/dist/types/signal/api/SignalSessionSyncApi.d.ts +8 -6
  482. package/dist/types/signal/api/result-map.d.ts +1 -0
  483. package/dist/types/signal/constants.d.ts +0 -3
  484. package/dist/types/signal/crypto/WaAdvSignature.d.ts +0 -2
  485. package/dist/types/signal/crypto/constants.d.ts +0 -1
  486. package/dist/types/signal/{store/sqlite.d.ts → encoding.d.ts} +9 -3
  487. package/dist/types/signal/group/SenderKeyChain.d.ts +1 -1
  488. package/dist/types/signal/group/SenderKeyManager.d.ts +17 -7
  489. package/dist/types/signal/index.d.ts +2 -0
  490. package/dist/types/signal/registration/utils.d.ts +2 -1
  491. package/dist/types/signal/session/SignalProtocol.d.ts +21 -6
  492. package/dist/types/signal/session/SignalSerializer.d.ts +2 -1
  493. package/dist/types/signal/session/resolver.d.ts +11 -4
  494. package/dist/types/signal/types.d.ts +16 -4
  495. package/dist/types/store/contracts/appstate.store.d.ts +1 -1
  496. package/dist/types/store/contracts/identity.store.d.ts +11 -0
  497. package/dist/types/store/contracts/message-secret.store.d.ts +16 -0
  498. package/dist/types/store/contracts/pre-key.store.d.ts +13 -0
  499. package/dist/types/store/contracts/privacy-token.store.d.ts +16 -0
  500. package/dist/types/store/contracts/retry.store.d.ts +7 -0
  501. package/dist/types/store/contracts/session.store.d.ts +14 -0
  502. package/dist/types/store/contracts/signal.store.d.ts +1 -27
  503. package/dist/types/store/createStore.d.ts +1 -1
  504. package/dist/types/store/index.d.ts +12 -12
  505. package/dist/types/store/locks/appstate.lock.d.ts +3 -0
  506. package/dist/types/store/locks/auth.lock.d.ts +3 -0
  507. package/dist/types/store/locks/contact.lock.d.ts +3 -0
  508. package/dist/types/store/locks/device-list.lock.d.ts +2 -0
  509. package/dist/types/store/locks/identity.lock.d.ts +3 -0
  510. package/dist/types/store/locks/message-secret.lock.d.ts +3 -0
  511. package/dist/types/store/locks/message.lock.d.ts +3 -0
  512. package/dist/types/store/locks/participants.lock.d.ts +2 -0
  513. package/dist/types/store/locks/pre-key.lock.d.ts +3 -0
  514. package/dist/types/store/locks/privacy-token.lock.d.ts +2 -0
  515. package/dist/types/store/locks/retry.lock.d.ts +2 -0
  516. package/dist/types/store/locks/sender-key.lock.d.ts +3 -0
  517. package/dist/types/store/locks/session.lock.d.ts +3 -0
  518. package/dist/types/store/locks/signal.lock.d.ts +3 -0
  519. package/dist/types/store/locks/thread.lock.d.ts +3 -0
  520. package/dist/types/store/noop.store.d.ts +4 -0
  521. package/dist/types/store/providers/memory/appstate.store.d.ts +1 -1
  522. package/dist/types/store/providers/memory/identity.store.d.ts +18 -0
  523. package/dist/types/store/providers/memory/message-secret.store.d.ts +21 -0
  524. package/dist/types/store/providers/memory/pre-key.store.d.ts +23 -0
  525. package/dist/types/store/providers/memory/privacy-token.store.d.ts +13 -0
  526. package/dist/types/store/providers/memory/retry.store.d.ts +15 -1
  527. package/dist/types/store/providers/memory/session.store.d.ts +21 -0
  528. package/dist/types/store/providers/memory/signal.store.d.ts +2 -43
  529. package/dist/types/store/providers/memory/thread.store.d.ts +1 -1
  530. package/dist/types/store/types.d.ts +69 -61
  531. package/dist/types/transport/WaWebSocket.d.ts +1 -1
  532. package/dist/types/transport/binary/constants.d.ts +0 -30
  533. package/dist/types/transport/binary/index.d.ts +0 -1
  534. package/dist/types/transport/index.d.ts +8 -1
  535. package/dist/types/transport/keepalive/WaKeepAlive.d.ts +4 -1
  536. package/dist/types/transport/node/WaMobileTcpSocket.d.ts +18 -0
  537. package/dist/types/transport/node/WaNodeOrchestrator.d.ts +9 -6
  538. package/dist/types/transport/node/builders/abprops.d.ts +5 -0
  539. package/dist/types/transport/node/builders/business.d.ts +29 -0
  540. package/dist/types/transport/node/builders/device.d.ts +2 -0
  541. package/dist/types/transport/node/builders/email.d.ts +11 -0
  542. package/dist/types/transport/node/builders/global.d.ts +102 -0
  543. package/dist/types/transport/node/builders/message.d.ts +8 -7
  544. package/dist/types/transport/node/builders/offline.d.ts +2 -0
  545. package/dist/types/transport/node/builders/pairing.d.ts +0 -2
  546. package/dist/types/transport/node/builders/prekeys.d.ts +4 -3
  547. package/dist/types/transport/node/builders/presence.d.ts +6 -0
  548. package/dist/types/transport/node/builders/privacy-token.d.ts +9 -0
  549. package/dist/types/transport/node/builders/privacy.d.ts +7 -0
  550. package/dist/types/transport/node/builders/profile.d.ts +8 -0
  551. package/dist/types/transport/node/builders/retry.d.ts +0 -1
  552. package/dist/types/transport/node/helpers.d.ts +8 -0
  553. package/dist/types/transport/node/mex/argo-decoder.d.ts +11 -0
  554. package/dist/types/transport/node/mex/client.d.ts +18 -0
  555. package/dist/types/transport/node/mex/persist-ids.d.ts +14 -0
  556. package/dist/types/transport/noise/WaMobileClientPayload.d.ts +29 -0
  557. package/dist/types/transport/noise/WaNoiseCert.d.ts +7 -1
  558. package/dist/types/transport/noise/WaNoiseSession.d.ts +4 -2
  559. package/dist/types/transport/noise/WaNoiseSocket.d.ts +4 -2
  560. package/dist/types/transport/types.d.ts +8 -0
  561. package/dist/types/util/bytes.d.ts +1 -1
  562. package/dist/types/util/index.d.ts +5 -0
  563. package/dist/types/util/primitives.d.ts +0 -1
  564. package/dist/util/bytes.js +22 -18
  565. package/dist/util/index.js +23 -0
  566. package/dist/util/primitives.js +2 -2
  567. package/package.json +34 -10
  568. package/proto/index.js +1 -1
  569. package/dist/auth/flow/WaAuthCredentialsFlow.js +0 -130
  570. package/dist/auth/pairing/constants.js +0 -5
  571. package/dist/client/connection/WaKeyShareCoordinator.js +0 -63
  572. package/dist/crypto/core/constants.js +0 -4
  573. package/dist/esm/auth/flow/WaAuthCredentialsFlow.js +0 -125
  574. package/dist/esm/auth/pairing/constants.js +0 -2
  575. package/dist/esm/client/connection/WaKeyShareCoordinator.js +0 -59
  576. package/dist/esm/crypto/core/constants.js +0 -1
  577. package/dist/esm/retry/outbound.js +0 -82
  578. package/dist/esm/store/providers/sqlite/BaseSqliteStore.js +0 -37
  579. package/dist/esm/store/providers/sqlite/appstate.store.js +0 -250
  580. package/dist/esm/store/providers/sqlite/auth.store.js +0 -176
  581. package/dist/esm/store/providers/sqlite/connection.js +0 -245
  582. package/dist/esm/store/providers/sqlite/contact.store.js +0 -74
  583. package/dist/esm/store/providers/sqlite/device-list.store.js +0 -127
  584. package/dist/esm/store/providers/sqlite/message.store.js +0 -132
  585. package/dist/esm/store/providers/sqlite/migrations.js +0 -347
  586. package/dist/esm/store/providers/sqlite/participants.store.js +0 -77
  587. package/dist/esm/store/providers/sqlite/retry.store.js +0 -141
  588. package/dist/esm/store/providers/sqlite/sender-key.store.js +0 -198
  589. package/dist/esm/store/providers/sqlite/signal.store.js +0 -435
  590. package/dist/esm/store/providers/sqlite/table-names.js +0 -107
  591. package/dist/esm/store/providers/sqlite/thread.store.js +0 -85
  592. package/dist/esm/transport/node/builders/index.js +0 -8
  593. package/dist/retry/outbound.js +0 -87
  594. package/dist/store/providers/sqlite/BaseSqliteStore.js +0 -41
  595. package/dist/store/providers/sqlite/appstate.store.js +0 -254
  596. package/dist/store/providers/sqlite/auth.store.js +0 -180
  597. package/dist/store/providers/sqlite/connection.js +0 -281
  598. package/dist/store/providers/sqlite/contact.store.js +0 -78
  599. package/dist/store/providers/sqlite/device-list.store.js +0 -131
  600. package/dist/store/providers/sqlite/message.store.js +0 -136
  601. package/dist/store/providers/sqlite/migrations.js +0 -350
  602. package/dist/store/providers/sqlite/participants.store.js +0 -81
  603. package/dist/store/providers/sqlite/retry.store.js +0 -145
  604. package/dist/store/providers/sqlite/sender-key.store.js +0 -202
  605. package/dist/store/providers/sqlite/signal.store.js +0 -439
  606. package/dist/store/providers/sqlite/table-names.js +0 -113
  607. package/dist/store/providers/sqlite/thread.store.js +0 -89
  608. package/dist/transport/node/builders/index.js +0 -42
  609. package/dist/types/appstate/store/sqlite.d.ts +0 -7
  610. package/dist/types/auth/flow/WaAuthCredentialsFlow.d.ts +0 -14
  611. package/dist/types/auth/pairing/constants.d.ts +0 -2
  612. package/dist/types/client/connection/WaKeyShareCoordinator.d.ts +0 -14
  613. package/dist/types/crypto/core/constants.d.ts +0 -1
  614. package/dist/types/retry/outbound.d.ts +0 -4
  615. package/dist/types/store/providers/sqlite/BaseSqliteStore.d.ts +0 -12
  616. package/dist/types/store/providers/sqlite/appstate.store.d.ts +0 -17
  617. package/dist/types/store/providers/sqlite/auth.store.d.ts +0 -10
  618. package/dist/types/store/providers/sqlite/connection.d.ts +0 -10
  619. package/dist/types/store/providers/sqlite/contact.store.d.ts +0 -12
  620. package/dist/types/store/providers/sqlite/device-list.store.d.ts +0 -15
  621. package/dist/types/store/providers/sqlite/message.store.d.ts +0 -13
  622. package/dist/types/store/providers/sqlite/migrations.d.ts +0 -3
  623. package/dist/types/store/providers/sqlite/participants.store.d.ts +0 -12
  624. package/dist/types/store/providers/sqlite/retry.store.d.ts +0 -15
  625. package/dist/types/store/providers/sqlite/sender-key.store.d.ts +0 -24
  626. package/dist/types/store/providers/sqlite/signal.store.d.ts +0 -53
  627. package/dist/types/store/providers/sqlite/table-names.d.ts +0 -5
  628. package/dist/types/store/providers/sqlite/thread.store.d.ts +0 -13
  629. package/dist/types/transport/node/builders/index.d.ts +0 -8
  630. /package/dist/appstate/{WaAppStateSyncResponseParser.js → response-parser.js} +0 -0
@@ -1,8 +1,8 @@
1
1
  import type { Readable } from 'node:stream';
2
2
  import type { Logger } from '../infra/log/types';
3
- import type { WaProxyAgent, WaProxyDispatcher } from '../transport/types';
4
- export type MediaKind = 'image' | 'video' | 'audio' | 'document' | 'sticker';
5
- export type MediaCryptoType = MediaKind | 'ptt' | 'gif' | 'ptv' | 'history' | 'md-app-state';
3
+ import type { WaProxyAgent } from '../transport/types';
4
+ export type MediaKind = 'image' | 'video' | 'audio' | 'document' | 'sticker' | 'ptv';
5
+ export type MediaCryptoType = MediaKind | 'ptt' | 'gif' | 'history' | 'md-app-state';
6
6
  export interface WaMediaConnHost {
7
7
  readonly hostname: string;
8
8
  readonly isFallback: boolean;
@@ -18,10 +18,9 @@ export interface WaMediaTransferClientOptions {
18
18
  readonly defaultTimeoutMs?: number;
19
19
  readonly defaultMaxReadBytes?: number;
20
20
  readonly defaultHeaders?: Readonly<Record<string, string>>;
21
- readonly defaultUploadDispatcher?: WaProxyDispatcher;
22
- readonly defaultDownloadDispatcher?: WaProxyDispatcher;
23
21
  readonly defaultUploadAgent?: WaProxyAgent;
24
22
  readonly defaultDownloadAgent?: WaProxyAgent;
23
+ readonly skipMacVerification?: boolean;
25
24
  }
26
25
  export interface WaMediaDerivedKeys {
27
26
  readonly iv: Uint8Array;
@@ -33,6 +32,8 @@ export interface WaMediaEncryptionResult {
33
32
  readonly ciphertextHmac: Uint8Array;
34
33
  readonly fileSha256: Uint8Array;
35
34
  readonly fileEncSha256: Uint8Array;
35
+ readonly streamingSidecar?: Uint8Array;
36
+ readonly firstFrameSidecar?: Uint8Array;
36
37
  }
37
38
  export interface WaMediaDecryptionResult {
38
39
  readonly plaintext: Uint8Array;
@@ -44,6 +45,9 @@ export interface WaMediaReadableEncryptionResult {
44
45
  readonly metadata: Promise<{
45
46
  readonly fileSha256: Uint8Array;
46
47
  readonly fileEncSha256: Uint8Array;
48
+ readonly plaintextLength: number;
49
+ readonly streamingSidecar?: Uint8Array;
50
+ readonly firstFrameSidecar?: Uint8Array;
47
51
  }>;
48
52
  }
49
53
  export interface WaMediaReadableDecryptionResult {
@@ -53,9 +57,19 @@ export interface WaMediaReadableDecryptionResult {
53
57
  readonly fileEncSha256: Uint8Array;
54
58
  }>;
55
59
  }
60
+ export interface WaMediaFileEncryptionResult {
61
+ readonly filePath: string;
62
+ readonly fileSize: number;
63
+ readonly fileSha256: Uint8Array;
64
+ readonly fileEncSha256: Uint8Array;
65
+ readonly plaintextLength: number;
66
+ readonly streamingSidecar?: Uint8Array;
67
+ readonly firstFrameSidecar?: Uint8Array;
68
+ }
56
69
  export interface WaMediaDecryptReadableOptions {
57
70
  readonly mediaType: MediaCryptoType;
58
71
  readonly mediaKey: Uint8Array;
59
72
  readonly expectedFileSha256?: Uint8Array;
60
73
  readonly expectedFileEncSha256?: Uint8Array;
74
+ readonly skipMacVerification?: boolean;
61
75
  }
@@ -1,13 +1,18 @@
1
+ import type { WaAddonKind } from '../client/types';
1
2
  import { WA_USE_CASE_SECRET_MODIFICATION_TYPES } from './use-case-secret';
3
+ import { type Proto } from '..';
4
+ import type { WaMessageSecretEntry, WaMessageSecretStore } from '../store/contracts/message-secret.store';
5
+ import type { WaMessageStore } from '../store/contracts/message.store';
2
6
  type WaAddonBytes = Uint8Array | ArrayBuffer | ArrayBufferView;
3
- export declare function shouldUseAddonAdditionalData(modificationType: (typeof WA_USE_CASE_SECRET_MODIFICATION_TYPES)[keyof typeof WA_USE_CASE_SECRET_MODIFICATION_TYPES]): boolean;
7
+ type ModificationType = (typeof WA_USE_CASE_SECRET_MODIFICATION_TYPES)[keyof typeof WA_USE_CASE_SECRET_MODIFICATION_TYPES];
8
+ export declare function shouldUseAddonAdditionalData(modificationType: ModificationType): boolean;
4
9
  export declare function buildAddonAdditionalData(stanzaId: string, addOnSenderJid: string): Uint8Array;
5
10
  export declare function encryptAddonPayload(input: {
6
11
  readonly messageSecret: WaAddonBytes;
7
12
  readonly stanzaId: string;
8
13
  readonly parentMsgOriginalSender: string;
9
14
  readonly modificationSender: string;
10
- readonly modificationType: (typeof WA_USE_CASE_SECRET_MODIFICATION_TYPES)[keyof typeof WA_USE_CASE_SECRET_MODIFICATION_TYPES];
15
+ readonly modificationType: ModificationType;
11
16
  readonly payload: WaAddonBytes;
12
17
  readonly iv: WaAddonBytes;
13
18
  readonly additionalData?: WaAddonBytes;
@@ -17,9 +22,35 @@ export declare function decryptAddonPayload(input: {
17
22
  readonly stanzaId: string;
18
23
  readonly parentMsgOriginalSender: string;
19
24
  readonly modificationSender: string;
20
- readonly modificationType: (typeof WA_USE_CASE_SECRET_MODIFICATION_TYPES)[keyof typeof WA_USE_CASE_SECRET_MODIFICATION_TYPES];
25
+ readonly modificationType: ModificationType;
21
26
  readonly ciphertext: WaAddonBytes;
22
27
  readonly iv: WaAddonBytes;
23
28
  readonly additionalData?: WaAddonBytes;
24
29
  }): Promise<Uint8Array>;
30
+ export interface WaIdentifiedEncAddon {
31
+ readonly kind: WaAddonKind;
32
+ readonly targetMessageKey: Proto.IMessageKey;
33
+ readonly encPayload: Uint8Array;
34
+ readonly encIv: Uint8Array;
35
+ readonly modificationType: ModificationType;
36
+ readonly raw: Proto.IMessage;
37
+ }
38
+ export declare function identifyEncryptedAddon(message: Proto.IMessage): WaIdentifiedEncAddon | null;
39
+ export type WaDecodedAddon = {
40
+ readonly kind: 'reaction';
41
+ readonly reaction: Proto.Message.IReactionMessage;
42
+ } | {
43
+ readonly kind: 'poll_vote';
44
+ readonly pollVote: Proto.Message.IPollVoteMessage;
45
+ readonly selectedOptionNames: readonly string[] | null;
46
+ } | {
47
+ readonly kind: 'event_response';
48
+ readonly eventResponse: Proto.Message.IEventResponseMessage;
49
+ } | {
50
+ readonly kind: 'comment';
51
+ readonly comment: Proto.Message.ICommentMessage;
52
+ };
53
+ export declare function decodeAddonPlaintext(kind: WaAddonKind, plaintext: Uint8Array): WaDecodedAddon;
54
+ export declare function resolveParentMessageSecret(targetMessageId: string, messageSecretStore: WaMessageSecretStore, messageStore: WaMessageStore): Promise<WaMessageSecretEntry | null>;
55
+ export declare function resolvePollOptionNames(selectedOptions: readonly Uint8Array[], pollCreationMessageId: string, messageStore: WaMessageStore): Promise<readonly string[] | null>;
25
56
  export {};
@@ -1,4 +1,14 @@
1
1
  import type { WaSendMediaMessage } from './types';
2
- import type { Proto } from '..';
2
+ import { type Proto } from '..';
3
3
  export declare function isSendMediaMessage(content: unknown): content is WaSendMediaMessage;
4
+ export declare function unwrapMessage(message: Proto.IMessage): Proto.IMessage;
4
5
  export declare function resolveMessageTypeAttr(message: Proto.IMessage): string;
6
+ export declare function needsSecretPersistence(message: Proto.IMessage): boolean;
7
+ export declare function resolveEditAttr(message: Proto.IMessage, subtype?: string): string | null;
8
+ export declare function resolveEncMediaType(message: Proto.IMessage): string | null;
9
+ export interface MessageMetaAttrs {
10
+ readonly polltype?: string;
11
+ readonly event_type?: string;
12
+ readonly view_once?: string;
13
+ }
14
+ export declare function resolveMetaAttrs(message: Proto.IMessage): MessageMetaAttrs | null;
@@ -0,0 +1,13 @@
1
+ import type { Proto } from '..';
2
+ import type { SignalAddress } from '../signal/types';
3
+ import type { WaIdentityStore } from '../store/contracts/identity.store';
4
+ export interface IcdcMeta {
5
+ readonly keyHash: Uint8Array;
6
+ readonly timestamp: number | undefined;
7
+ }
8
+ export declare function computeDeviceKeyHash(identityKeys: readonly Uint8Array[], hashLength?: number): Promise<Uint8Array>;
9
+ export declare function resolveIcdcMeta(deviceJids: readonly string[], identityStore: WaIdentityStore, updatedAtMs: number | undefined, localIdentity?: {
10
+ readonly address: SignalAddress;
11
+ readonly pubKey: Uint8Array;
12
+ }, hashLength?: number): Promise<IcdcMeta | null>;
13
+ export declare function injectDeviceListMetadata(message: Proto.IMessage, senderIcdc: IcdcMeta | null, recipientIcdc: IcdcMeta | null): Proto.IMessage;
@@ -15,5 +15,4 @@ export interface BuildReportingTokenArtifactsResult {
15
15
  readonly reportingTokenContent: Uint8Array;
16
16
  readonly reportingTokenKey: Uint8Array;
17
17
  }
18
- export declare function buildReportingTokenNode(input: BuildReportingTokenNodeInput): Promise<BinaryNode | null>;
19
18
  export declare function buildReportingTokenArtifacts(input: BuildReportingTokenNodeInput): Promise<BuildReportingTokenArtifactsResult | null>;
@@ -1,4 +1,4 @@
1
- import type { MediaKind } from '../media/types';
1
+ import type { Readable } from 'node:stream';
2
2
  import type { Proto } from '..';
3
3
  import type { BinaryNode } from '../transport/types';
4
4
  export interface WaMessagePublishOptions {
@@ -21,18 +21,40 @@ export interface WaMessagePublishResult {
21
21
  readonly ackNode: BinaryNode;
22
22
  readonly ack: WaMessageAckMetadata;
23
23
  }
24
- export interface WaSendMediaMessage {
25
- readonly type: MediaKind;
26
- readonly media: Uint8Array | ArrayBuffer;
24
+ type MediaInput = Uint8Array | ArrayBuffer | Readable | string;
25
+ type MediaFieldsFilledByBuilder = 'url' | 'mimetype' | 'fileSha256' | 'fileLength' | 'mediaKey' | 'fileEncSha256' | 'directPath' | 'mediaKeyTimestamp' | 'streamingSidecar' | 'metadataUrl';
26
+ type UserMediaFields<T> = {
27
+ readonly [K in keyof Omit<T, MediaFieldsFilledByBuilder>]?: T[K];
28
+ };
29
+ interface WaSendMediaBase {
30
+ readonly media: MediaInput;
27
31
  readonly mimetype: string;
28
- readonly caption?: string;
29
- readonly fileName?: string;
30
- readonly ptt?: boolean;
31
- readonly gifPlayback?: boolean;
32
- readonly seconds?: number;
33
- readonly width?: number;
34
- readonly height?: number;
32
+ readonly fileLength?: number;
35
33
  }
34
+ interface WaSendMediaBaseOptionalMime {
35
+ readonly media: MediaInput;
36
+ readonly mimetype?: string;
37
+ readonly fileLength?: number;
38
+ }
39
+ interface WaSendImageMessage extends WaSendMediaBase, UserMediaFields<Proto.Message.IImageMessage> {
40
+ readonly type: 'image';
41
+ }
42
+ interface WaSendVideoMessage extends WaSendMediaBase, UserMediaFields<Proto.Message.IVideoMessage> {
43
+ readonly type: 'video';
44
+ }
45
+ interface WaSendPtvMessage extends WaSendMediaBase, UserMediaFields<Proto.Message.IVideoMessage> {
46
+ readonly type: 'ptv';
47
+ }
48
+ interface WaSendAudioMessage extends WaSendMediaBase, UserMediaFields<Proto.Message.IAudioMessage> {
49
+ readonly type: 'audio';
50
+ }
51
+ interface WaSendDocumentMessage extends WaSendMediaBase, UserMediaFields<Proto.Message.IDocumentMessage> {
52
+ readonly type: 'document';
53
+ }
54
+ interface WaSendStickerMessage extends WaSendMediaBaseOptionalMime, UserMediaFields<Proto.Message.IStickerMessage> {
55
+ readonly type: 'sticker';
56
+ }
57
+ export type WaSendMediaMessage = WaSendImageMessage | WaSendVideoMessage | WaSendPtvMessage | WaSendAudioMessage | WaSendDocumentMessage | WaSendStickerMessage;
36
58
  export type WaSendMessageContent = string | Proto.IMessage | WaSendMediaMessage;
37
59
  export interface WaEncryptedMessageInput {
38
60
  readonly to: string;
@@ -43,16 +65,25 @@ export interface WaEncryptedMessageInput {
43
65
  readonly encCount?: number;
44
66
  readonly id?: string;
45
67
  readonly type?: string;
68
+ readonly edit?: string;
69
+ readonly mediatype?: string;
46
70
  readonly category?: string;
47
71
  readonly pushPriority?: string;
48
72
  readonly participant?: string;
49
73
  readonly deviceFanout?: string;
74
+ readonly metaNode?: BinaryNode;
50
75
  }
51
76
  export interface WaSendReceiptInput {
52
77
  readonly to: string;
53
78
  readonly id: string;
54
79
  readonly type?: string;
55
80
  readonly participant?: string;
81
+ readonly recipient?: string;
82
+ readonly category?: string;
56
83
  readonly from?: string;
57
84
  readonly t?: string;
85
+ readonly peerParticipantPn?: string;
86
+ readonly listIds?: readonly string[];
87
+ readonly content?: readonly BinaryNode[];
58
88
  }
89
+ export {};
@@ -0,0 +1,142 @@
1
+ export declare const WA_ABPROPS_PROTOCOL_VERSION = "1";
2
+ export declare const WA_ABPROPS_REFRESH_BOUNDS: Readonly<{
3
+ readonly MIN_S: 600;
4
+ readonly MAX_S: 604800;
5
+ readonly DEFAULT_S: 86400;
6
+ }>;
7
+ export type AbPropType = 'bool' | 'int' | 'string';
8
+ export type AbPropValue = boolean | number | string;
9
+ export interface AbPropConfigEntry {
10
+ readonly configCode: number;
11
+ readonly type: AbPropType;
12
+ readonly defaultValue: AbPropValue;
13
+ }
14
+ export declare const AB_PROP_CONFIGS: Readonly<{
15
+ readonly syncd_key_max_use_days: AbPropConfigEntry;
16
+ readonly syncd_wait_for_key_timeout_days: AbPropConfigEntry;
17
+ readonly syncd_sentinel_timeout_seconds: AbPropConfigEntry;
18
+ readonly syncd_inline_mutations_max_count: AbPropConfigEntry;
19
+ readonly syncd_patch_protobuf_max_size: AbPropConfigEntry;
20
+ readonly syncd_additional_mutations_count: AbPropConfigEntry;
21
+ readonly syncd_periodic_sync_days: AbPropConfigEntry;
22
+ readonly syncd_mutation_and_bundle_logging: AbPropConfigEntry;
23
+ readonly wa_web_enable_syncd_key_persistence_only_after_server_ack: AbPropConfigEntry;
24
+ readonly web_request_missing_keys_for_removes: AbPropConfigEntry;
25
+ readonly web_syncd_max_mutations_to_process_during_resume: AbPropConfigEntry;
26
+ readonly web_syncd_fatal_fields_from_L1104589PRV2: AbPropConfigEntry;
27
+ readonly web_enable_improved_bulk_merge: AbPropConfigEntry;
28
+ readonly snapshot_recovery_max_mutations_count_allowed: AbPropConfigEntry;
29
+ readonly md_syncd_logging_spec_enabled: AbPropConfigEntry;
30
+ readonly kmp_syncd_engine_crypto_enabled: AbPropConfigEntry;
31
+ readonly enable_syncd_debug_data_in_patch: AbPropConfigEntry;
32
+ readonly enable_mention_everyone_syncd_sender: AbPropConfigEntry;
33
+ readonly username_contact_syncd_support_enable: AbPropConfigEntry;
34
+ readonly after_read_sending_enabled: AbPropConfigEntry;
35
+ readonly after_read_fallback_duration: AbPropConfigEntry;
36
+ readonly after_read_receiver_enabled: AbPropConfigEntry;
37
+ readonly privacy_token_sending_on_all_1_on_1_messages: AbPropConfigEntry;
38
+ readonly flows_termination_message_v2_sending_enabled: AbPropConfigEntry;
39
+ readonly dm_initiator_trigger_groups: AbPropConfigEntry;
40
+ readonly placeholder_message_resend_maximum_days_limit: AbPropConfigEntry;
41
+ readonly message_edit_to_message_secret_sender_enabled: AbPropConfigEntry;
42
+ readonly message_edit_to_message_secret_receiver_enabled: AbPropConfigEntry;
43
+ readonly top_level_message_secret_check: AbPropConfigEntry;
44
+ readonly parse_encrypted_dsm_msg_fix: AbPropConfigEntry;
45
+ readonly rt_sender_dual_encrypted_msg_enabled: AbPropConfigEntry;
46
+ readonly rt_receiver_dual_encrypted_msg_enabled: AbPropConfigEntry;
47
+ readonly lid_one_to_one_migration_event_response_force_pn_jid: AbPropConfigEntry;
48
+ readonly web_anr_async_msg_send_handler: AbPropConfigEntry;
49
+ readonly message_keys_async_chunk_size: AbPropConfigEntry;
50
+ readonly synced_message_keys_processing_type: AbPropConfigEntry;
51
+ readonly limit_sharing_protocol_message_receiver_enabled: AbPropConfigEntry;
52
+ readonly web_pnless_stanzas: AbPropConfigEntry;
53
+ readonly wa_nct_token_send_enabled: AbPropConfigEntry;
54
+ readonly wa_nct_token_syncd_enabled: AbPropConfigEntry;
55
+ readonly wa_nct_token_history_sync_enabled: AbPropConfigEntry;
56
+ readonly community_announcement_group_size_limit: AbPropConfigEntry;
57
+ readonly group_size_limit: AbPropConfigEntry;
58
+ readonly group_max_subject: AbPropConfigEntry;
59
+ readonly group_description_length: AbPropConfigEntry;
60
+ readonly anyone_can_link_to_groups: AbPropConfigEntry;
61
+ readonly group_call_max_participants: AbPropConfigEntry;
62
+ readonly group_history_receive: AbPropConfigEntry;
63
+ readonly group_history_send: AbPropConfigEntry;
64
+ readonly group_history_settings: AbPropConfigEntry;
65
+ readonly group_history_settings_query: AbPropConfigEntry;
66
+ readonly group_history_message_count_limit: AbPropConfigEntry;
67
+ readonly group_history_message_count_receiver_upper_limit: AbPropConfigEntry;
68
+ readonly group_history_messages_time_limit_receiver_enforcement_secs: AbPropConfigEntry;
69
+ readonly group_history_bundle_time_limit_receiver_enforcement_secs: AbPropConfigEntry;
70
+ readonly group_history_notice_receive: AbPropConfigEntry;
71
+ readonly group_history_out_of_window_pin_sender: AbPropConfigEntry;
72
+ readonly group_history_out_of_window_pins_receiver: AbPropConfigEntry;
73
+ readonly group_history_reporting: AbPropConfigEntry;
74
+ readonly group_create_add_using_lid_jids: AbPropConfigEntry;
75
+ readonly group_member_updates_hide_in_thread_enabled: AbPropConfigEntry;
76
+ readonly group_status_receiver_enabled: AbPropConfigEntry;
77
+ readonly web_send_invisible_msg_max_group_size: AbPropConfigEntry;
78
+ readonly web_send_invisible_msg_min_group_size: AbPropConfigEntry;
79
+ readonly admin_only_mention_everyone_group_size: AbPropConfigEntry;
80
+ readonly web_abprop_drop_full_history_sync: AbPropConfigEntry;
81
+ readonly wa_web_history_sync_dynamic_throttling: AbPropConfigEntry;
82
+ readonly web_e2e_backfill_expire_time: AbPropConfigEntry;
83
+ readonly history_sync_on_demand: AbPropConfigEntry;
84
+ readonly history_sync_on_demand_message_count: AbPropConfigEntry;
85
+ readonly history_sync_on_demand_failure_limit: AbPropConfigEntry;
86
+ readonly history_sync_on_demand_cooldown_sec: AbPropConfigEntry;
87
+ readonly history_sync_on_demand_complete_companion: AbPropConfigEntry;
88
+ readonly history_sync_on_demand_with_android_beta: AbPropConfigEntry;
89
+ readonly web_anr_throttle_history_sync_db_writes: AbPropConfigEntry;
90
+ readonly web_force_lid_chats_in_history: AbPropConfigEntry;
91
+ readonly web_history_sync_allow_duplicate_in_bulk_error: AbPropConfigEntry;
92
+ readonly default_media_limit_mb: AbPropConfigEntry;
93
+ readonly web_image_max_edge: AbPropConfigEntry;
94
+ readonly web_image_max_hd_edge: AbPropConfigEntry;
95
+ readonly web_channel_video_server_transcode_upload: AbPropConfigEntry;
96
+ readonly web_deprecate_mms4_hash_based_download: AbPropConfigEntry;
97
+ readonly kaleidoscope_thumbnail_validation: AbPropConfigEntry;
98
+ readonly web_use_kaleidoscope_media_check_enabled: AbPropConfigEntry;
99
+ readonly low_cache_hit_rate_media_types: AbPropConfigEntry;
100
+ readonly web_anr_async_media_decryption_enabled: AbPropConfigEntry;
101
+ readonly web_anr_media_chunk_enc_delay_enabled: AbPropConfigEntry;
102
+ readonly web_media_compute_in_worker_enabled: AbPropConfigEntry;
103
+ readonly adv_accept_hosted_devices: AbPropConfigEntry;
104
+ readonly num_days_key_index_list_expiration: AbPropConfigEntry;
105
+ readonly num_days_before_device_expiry_check: AbPropConfigEntry;
106
+ readonly web_adv_logout_on_self_device_list_expired: AbPropConfigEntry;
107
+ readonly md_icdc_hash_length: AbPropConfigEntry;
108
+ readonly noise_pq_mode: AbPropConfigEntry;
109
+ readonly tctoken_duration: AbPropConfigEntry;
110
+ readonly tctoken_num_buckets: AbPropConfigEntry;
111
+ readonly tctoken_num_buckets_sender: AbPropConfigEntry;
112
+ readonly tctoken_duration_sender: AbPropConfigEntry;
113
+ readonly heartbeat_interval_s: AbPropConfigEntry;
114
+ readonly web_offline_message_processor_timeout_seconds: AbPropConfigEntry;
115
+ readonly web_offline_resume_wait_for_ping_response_enabled: AbPropConfigEntry;
116
+ readonly web_offline_resume_wait_for_ping_timeout_seconds: AbPropConfigEntry;
117
+ readonly web_comms_socket_reconnect_enabled: AbPropConfigEntry;
118
+ readonly web_resume_optimized_read_receipt_send_interval: AbPropConfigEntry;
119
+ readonly web_reaction_inactive_receipt: AbPropConfigEntry;
120
+ readonly lid_status_non_soaked_client_support_enabled: AbPropConfigEntry;
121
+ readonly s567418_mitigation_enabled: AbPropConfigEntry;
122
+ readonly web_signal_future_messages_max: AbPropConfigEntry;
123
+ readonly poll_add_option_enabled: AbPropConfigEntry;
124
+ readonly poll_add_option_receiving_enabled: AbPropConfigEntry;
125
+ readonly poll_creator_edit_enabled: AbPropConfigEntry;
126
+ readonly poll_creator_edit_receiving_version: AbPropConfigEntry;
127
+ readonly poll_end_time_enabled: AbPropConfigEntry;
128
+ readonly poll_end_time_receiving_enabled: AbPropConfigEntry;
129
+ readonly poll_hide_voters_enabled: AbPropConfigEntry;
130
+ readonly poll_hide_voters_receiving_enabled: AbPropConfigEntry;
131
+ readonly text_status_ttl_seconds_allowlist: AbPropConfigEntry;
132
+ readonly username_enabled_on_companion: AbPropConfigEntry;
133
+ readonly username_max_length: AbPropConfigEntry;
134
+ readonly username_min_length: AbPropConfigEntry;
135
+ readonly wa_individual_new_chat_msg_capping_enabled: AbPropConfigEntry;
136
+ readonly wa_individual_new_chat_msg_capping_limit: AbPropConfigEntry;
137
+ readonly wa_individual_new_chat_msg_capping_fetch_ttl_seconds: AbPropConfigEntry;
138
+ readonly enable_web_calling: AbPropConfigEntry;
139
+ readonly calling_lid_version: AbPropConfigEntry;
140
+ }>;
141
+ export type AbPropName = keyof typeof AB_PROP_CONFIGS;
142
+ export declare function resolveAbPropNameByCode(configCode: number): AbPropName | undefined;
@@ -32,17 +32,6 @@ export declare const WA_APP_STATE_KDF_INFO: Readonly<{
32
32
  readonly MUTATION_KEYS: "WhatsApp Mutation Keys";
33
33
  readonly PATCH_INTEGRITY: "WhatsApp Patch Integrity";
34
34
  }>;
35
- export declare const WA_APP_STATE_CHAT_MUTATION_ACTIONS: Readonly<{
36
- readonly STAR: "star";
37
- readonly MUTE: "mute";
38
- readonly PIN: "pin_v1";
39
- readonly ARCHIVE: "archive";
40
- readonly DELETE_MESSAGE_FOR_ME: "deleteMessageForMe";
41
- readonly MARK_CHAT_AS_READ: "markChatAsRead";
42
- readonly CLEAR_CHAT: "clearChat";
43
- readonly DELETE_CHAT: "deleteChat";
44
- readonly LOCK_CHAT: "lock";
45
- }>;
46
35
  export declare const WA_APP_STATE_CHAT_MUTATION_SPECS: Readonly<{
47
36
  readonly STAR: {
48
37
  readonly collection: "regular_high";
@@ -20,3 +20,4 @@ export declare const WA_COMPANION_PLATFORM_IDS: Readonly<{
20
20
  readonly OTHER_WEB_CLIENT: "9";
21
21
  }>;
22
22
  export declare function getWaCompanionPlatformId(browser: string): string;
23
+ export declare function getWaBrowserDisplayName(browser: string): string;
@@ -1,12 +1,20 @@
1
1
  export { getWaCompanionPlatformId, WA_BROWSERS, WA_COMPANION_PLATFORM_IDS } from './browser';
2
2
  export { WA_SIGNALING, WA_PAIRING_KDF_INFO } from './auth';
3
- export { WA_DISCONNECT_REASONS, WA_LOGOUT_REASONS, WA_READY_STATES, WA_STREAM_SIGNALING } from './stream';
3
+ export { WA_CONNECTION_REASONS, WA_DISCONNECT_REASONS, WA_FAILURE_REASONS, WA_LOGOUT_REASONS, WA_READY_STATES, WA_STREAM_SIGNALING } from './stream';
4
+ export type { WaConnectionCode, WaConnectionOpenReason, WaDisconnectReason, WaFailureReasonCode, WaStreamErrorCode } from './stream';
4
5
  export { WA_IQ_TYPES, WA_NODE_TAGS, WA_XMLNS } from './nodes';
5
- export { WA_MESSAGE_TAGS, WA_MESSAGE_TYPES, WA_RETRYABLE_ACK_CODES } from './message';
6
- export { WA_APP_STATE_COLLECTIONS, WA_APP_STATE_COLLECTION_STATES, WA_APP_STATE_CHAT_MUTATION_ACTIONS, 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';
6
+ export { WA_EDIT_ATTRS, WA_ENC_MEDIA_TYPES, WA_EVENT_META_TYPES, WA_MESSAGE_TAGS, WA_MESSAGE_TYPES, WA_POLL_META_TYPES, WA_RETRYABLE_ACK_CODES, WA_STANZA_MSG_TYPES } from './message';
7
+ export { WA_APP_STATE_COLLECTIONS, WA_APP_STATE_COLLECTION_STATES, WA_APP_STATE_CHAT_MUTATION_SPECS, WA_APP_STATE_ERROR_CODES, WA_APP_STATE_KDF_INFO, WA_APP_STATE_KEY_TYPES, WA_APP_STATE_SYNC_DATA_TYPE } from './appstate';
7
8
  export { getWaMediaHkdfInfo, WA_MEDIA_HKDF_INFO, WA_PREVIEW_MEDIA_HKDF_INFO } from './media';
8
9
  export { WA_ACCOUNT_SYNC_PROTOCOLS, WA_DIRTY_PROTOCOLS, WA_DIRTY_TYPES, WA_SUPPORTED_DIRTY_TYPES } from './dirty';
9
- export { WA_GROUP_NOTIFICATION_TAGS, WA_NOTIFICATION_TYPES } from './notification';
10
+ export { WA_GROUP_NOTIFICATION_TAGS, WA_NOTIFICATION_TYPES, WA_REGISTRATION_NOTIFICATION_TAGS } from './notification';
11
+ export { WA_PRIVACY_TOKEN_NOTIFICATION_TYPE, WA_PRIVACY_TOKEN_TAGS, WA_PRIVACY_TOKEN_TYPES, WA_TC_TOKEN_DEFAULTS } from './privacy-token';
12
+ export { WA_PRIVACY_CATEGORIES, WA_PRIVACY_CATEGORY_TO_SETTING, WA_PRIVACY_DISALLOWED_LIST_CATEGORIES, WA_PRIVACY_SETTING_TO_CATEGORY, WA_PRIVACY_TAGS, WA_PRIVACY_VALUES } from './privacy';
13
+ export type { WaPrivacyCategory, WaPrivacySettingName, WaPrivacyValue } from './privacy';
10
14
  export { WA_DEFAULTS } from './defaults';
15
+ export { WA_EMAIL_CONTEXTS, WA_EMAIL_ERROR_CODES, WA_EMAIL_LIMITS, WA_EMAIL_TAGS, WA_EMAIL_XMLNS } from './email';
16
+ export type { WaEmailContext, WaEmailErrorCode } from './email';
17
+ export { AB_PROP_CONFIGS, resolveAbPropNameByCode, WA_ABPROPS_PROTOCOL_VERSION, WA_ABPROPS_REFRESH_BOUNDS } from './abprops';
18
+ export type { AbPropConfigEntry, AbPropName, AbPropType, AbPropValue } from './abprops';
11
19
  export { WA_GROUP_PARTICIPANT_TYPES, type WaGroupSetting } from './group';
12
20
  export { WA_USYNC_CONTEXTS, WA_USYNC_DEFAULTS, WA_USYNC_MODES } from './usync';
@@ -2,6 +2,12 @@ export declare const WA_DEFAULTS: Readonly<{
2
2
  readonly HOST_DOMAIN: "s.whatsapp.net";
3
3
  readonly GROUP_SERVER: "g.us";
4
4
  readonly BROADCAST_SERVER: "broadcast";
5
+ readonly LID_SERVER: "lid";
6
+ readonly HOSTED_SERVER: "hosted";
7
+ readonly HOSTED_LID_SERVER: "hosted.lid";
8
+ readonly HOSTED_DEVICE_ID: 99;
9
+ readonly MSGR_SERVER: "msgr";
10
+ readonly INTEROP_SERVER: "interop";
5
11
  readonly DEVICE_BROWSER: "firefox";
6
12
  readonly DEVICE_PLATFORM: string;
7
13
  readonly CHAT_SOCKET_URLS: readonly ["wss://web.whatsapp.com/ws/chat", "wss://web.whatsapp.com:5222/ws/chat"];
@@ -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];
@@ -1,3 +1,2 @@
1
1
  export * from './constants';
2
- export { getLoginIdentity, isGroupJid, normalizeDeviceJid, normalizeRecipientJid, parsePhoneJid, parseSignalAddressFromJid, splitJid, toUserJid } from './jid';
3
- export { WA_USYNC_CONTEXTS, WA_USYNC_DEFAULTS, WA_USYNC_MODES } from './usync';
2
+ export { buildDeviceJid, canonicalizeSignalJid, canonicalizeSignalServer, getLoginIdentity, isHostedDeviceId, isHostedDeviceJid, isHostedServer, isGroupJid, normalizeDeviceJid, normalizeRecipientJid, parsePhoneJid, parseSignalAddressFromJid, splitJid, signalAddressKey, toUserJid } from './jid';
@@ -4,13 +4,31 @@ export declare function splitJid(jid: string): {
4
4
  readonly server: string;
5
5
  };
6
6
  export declare function normalizeRecipientJid(to: string): string;
7
- export declare function isJidType(jid: string, type: string): boolean;
7
+ export declare function isLidJid(jid: string): boolean;
8
8
  export declare function isGroupJid(jid: string): boolean;
9
9
  export declare function isBroadcastJid(jid: string): boolean;
10
10
  export declare function isGroupOrBroadcastJid(jid: string): boolean;
11
+ export interface ParsedJid {
12
+ readonly address: SignalAddress;
13
+ readonly userJid: string;
14
+ readonly normalizedJid: string;
15
+ }
11
16
  export declare function parseSignalAddressFromJid(jid: string): SignalAddress;
12
- export declare function toUserJid(jid: string): string;
17
+ export declare function parseJidFull(jid: string): ParsedJid;
18
+ export declare function canonicalizeSignalServer(server: string, hostDomain?: string): string;
19
+ export declare function canonicalizeSignalJid(jid: string, hostDomain?: string): string;
20
+ export declare function toUserJid(jid: string, options?: {
21
+ readonly canonicalizeSignalServer?: boolean;
22
+ readonly hostDomain?: string;
23
+ }): string;
13
24
  export declare function normalizeDeviceJid(jid: string): string;
25
+ export declare function isHostedDeviceId(deviceId: number): boolean;
26
+ export declare function isHostedServer(server: string): boolean;
27
+ export declare function isHostedDeviceJid(jid: string): boolean;
28
+ export declare function buildDeviceJid(user: string, normalizedServer: string, deviceId: number, options?: {
29
+ readonly rawServer?: string;
30
+ readonly isHosted?: boolean;
31
+ }): string;
14
32
  export declare function getLoginIdentity(meJid: string): {
15
33
  readonly username: number;
16
34
  readonly device: number;
@@ -11,6 +11,66 @@ 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 RECEIPT_TYPE_DELIVERY: "delivery";
15
+ readonly RECEIPT_TYPE_SENDER: "sender";
16
+ readonly RECEIPT_TYPE_INACTIVE: "inactive";
17
+ readonly RECEIPT_TYPE_READ: "read";
18
+ readonly RECEIPT_TYPE_READ_SELF: "read-self";
19
+ readonly RECEIPT_TYPE_PLAYED: "played";
20
+ readonly RECEIPT_TYPE_PLAYED_SELF: "played-self";
21
+ readonly RECEIPT_TYPE_HISTORY_SYNC: "hist_sync";
14
22
  readonly RECEIPT_TYPE_PEER: "peer_msg";
23
+ readonly RECEIPT_TYPE_SERVER_ERROR: "server-error";
24
+ readonly RECEIPT_TYPE_RETRY: "retry";
15
25
  }>;
16
26
  export declare const WA_RETRYABLE_ACK_CODES: readonly ["408", "429", "500", "503"];
27
+ export declare const WA_STANZA_MSG_TYPES: Readonly<{
28
+ readonly TEXT: "text";
29
+ readonly MEDIA: "media";
30
+ readonly MEDIA_NOTIFY: "medianotify";
31
+ readonly PAY: "pay";
32
+ readonly POLL: "poll";
33
+ readonly REACTION: "reaction";
34
+ readonly EVENT: "event";
35
+ }>;
36
+ export declare const WA_EDIT_ATTRS: Readonly<{
37
+ readonly MESSAGE_EDIT: "1";
38
+ readonly PIN_IN_CHAT: "2";
39
+ readonly SENDER_REVOKE: "7";
40
+ readonly ADMIN_REVOKE: "8";
41
+ }>;
42
+ export declare const WA_POLL_META_TYPES: Readonly<{
43
+ readonly CREATION: "creation";
44
+ readonly VOTE: "vote";
45
+ readonly RESULT_SNAPSHOT: "result_snapshot";
46
+ readonly EDIT: "edit";
47
+ }>;
48
+ export declare const WA_EVENT_META_TYPES: Readonly<{
49
+ readonly CREATION: "creation";
50
+ readonly RESPONSE: "response";
51
+ readonly EDIT: "edit";
52
+ }>;
53
+ export declare const WA_ENC_MEDIA_TYPES: Readonly<{
54
+ readonly IMAGE: "image";
55
+ readonly VIDEO: "video";
56
+ readonly PTV: "ptv";
57
+ readonly AUDIO: "audio";
58
+ readonly PTT: "ptt";
59
+ readonly LOCATION: "location";
60
+ readonly LIVE_LOCATION: "livelocation";
61
+ readonly VCARD: "vcard";
62
+ readonly CONTACT_ARRAY: "contact_array";
63
+ readonly DOCUMENT: "document";
64
+ readonly URL: "url";
65
+ readonly GIF: "gif";
66
+ readonly STICKER: "sticker";
67
+ readonly STICKER_PACK: "sticker_pack";
68
+ readonly LIST: "list";
69
+ readonly LIST_RESPONSE: "list_response";
70
+ readonly BUTTON: "button";
71
+ readonly BUTTON_RESPONSE: "buttons_response";
72
+ readonly ORDER: "order";
73
+ readonly PRODUCT: "product";
74
+ readonly NATIVE_FLOW_RESPONSE: "native_flow_response";
75
+ readonly GROUP_HISTORY: "group_history";
76
+ }>;
@@ -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,7 @@ 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";
64
66
  }>;
65
67
  export declare const WA_IQ_TYPES: Readonly<{
66
68
  readonly GET: "get";
@@ -78,8 +80,12 @@ export declare const WA_XMLNS: Readonly<{
78
80
  readonly PRIVACY: "privacy";
79
81
  readonly BLOCKLIST: "blocklist";
80
82
  readonly USYNC: "usync";
83
+ readonly BUSINESS: "w:biz";
84
+ readonly STATUS: "status";
81
85
  readonly GROUPS: "w:g2";
82
86
  readonly NEWSLETTER: "newsletter";
83
87
  readonly XMPP_PING: "urn:xmpp:ping";
84
88
  readonly WHATSAPP_PING: "w:p";
89
+ readonly ABPROPS: "abt";
90
+ readonly MEX: "w:mex";
85
91
  }>;
@@ -1,5 +1,13 @@
1
1
  export declare const WA_NOTIFICATION_TYPES: Readonly<{
2
2
  readonly GROUP: "w:gp2";
3
+ readonly ENCRYPT: "encrypt";
4
+ readonly DEVICES: "devices";
5
+ readonly SERVER: "server";
6
+ readonly REGISTRATION: "registration";
7
+ }>;
8
+ export declare const WA_REGISTRATION_NOTIFICATION_TAGS: Readonly<{
9
+ readonly WA_OLD_REGISTRATION: "wa_old_registration";
10
+ readonly DEVICE_LOGOUT: "device_logout";
3
11
  }>;
4
12
  export declare const WA_GROUP_NOTIFICATION_TAGS: Readonly<{
5
13
  readonly REMOVE: "remove";
@@ -0,0 +1,17 @@
1
+ export declare const WA_PRIVACY_TOKEN_TYPES: Readonly<{
2
+ readonly TRUSTED_CONTACT: "trusted_contact";
3
+ }>;
4
+ export declare const WA_PRIVACY_TOKEN_TAGS: Readonly<{
5
+ readonly TOKENS: "tokens";
6
+ readonly TOKEN: "token";
7
+ readonly TC_TOKEN: "tctoken";
8
+ readonly CS_TOKEN: "cstoken";
9
+ }>;
10
+ export declare const WA_PRIVACY_TOKEN_NOTIFICATION_TYPE = "privacy_token";
11
+ export declare const WA_TC_TOKEN_DEFAULTS: Readonly<{
12
+ readonly DURATION_S: 604800;
13
+ readonly NUM_BUCKETS: 4;
14
+ readonly SENDER_DURATION_S: 604800;
15
+ readonly SENDER_NUM_BUCKETS: 4;
16
+ readonly MAX_DURATION_S: 15552000;
17
+ }>;