zapo-js 0.2.0 → 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 (351) hide show
  1. package/README.md +7 -3
  2. package/dist/appstate/WaAppStateCrypto.js +49 -41
  3. package/dist/appstate/WaAppStateSyncClient.js +79 -42
  4. package/dist/appstate/index.js +2 -2
  5. package/dist/auth/WaAuthClient.js +20 -11
  6. package/dist/auth/{flow/WaAuthCredentialsFlow.js → credentials-flow.js} +83 -18
  7. package/dist/auth/pairing/WaPairingFlow.js +26 -29
  8. package/dist/auth/pairing/{WaPairingCodeCrypto.js → pairing-code-crypto.js} +29 -13
  9. package/dist/client/WaClient.js +115 -75
  10. package/dist/client/WaClientFactory.js +113 -30
  11. package/dist/client/connection/WaConnectionManager.js +4 -1
  12. package/dist/client/coordinators/WaAbPropsCoordinator.js +141 -0
  13. package/dist/client/coordinators/WaBusinessCoordinator.js +3 -12
  14. package/dist/client/coordinators/WaEmailCoordinator.js +63 -0
  15. package/dist/client/coordinators/WaIncomingNodeCoordinator.js +33 -8
  16. package/dist/client/coordinators/WaMessageDispatchCoordinator.js +55 -25
  17. package/dist/client/coordinators/WaOfflineResumeCoordinator.js +114 -0
  18. package/dist/client/coordinators/WaPassiveTasksCoordinator.js +38 -20
  19. package/dist/client/coordinators/WaProfileCoordinator.js +3 -1
  20. package/dist/client/coordinators/WaRetryCoordinator.js +11 -9
  21. package/dist/client/coordinators/WaTrustedContactTokenCoordinator.js +22 -4
  22. package/dist/client/dirty.js +1 -1
  23. package/dist/client/events/abprops.js +43 -0
  24. package/dist/client/events/privacy-token.js +1 -2
  25. package/dist/client/events/registration.js +42 -0
  26. package/dist/client/incoming.js +37 -0
  27. package/dist/client/mailbox.js +17 -1
  28. package/dist/client/media.js +243 -0
  29. package/dist/client/messages.js +163 -86
  30. package/dist/crypto/core/index.js +4 -1
  31. package/dist/crypto/core/random.js +3 -9
  32. package/dist/crypto/core/xeddsa.js +57 -0
  33. package/dist/crypto/curves/X25519.js +18 -0
  34. package/dist/crypto/curves/constants.js +2 -1
  35. package/dist/esm/appstate/WaAppStateCrypto.js +39 -31
  36. package/dist/esm/appstate/WaAppStateSyncClient.js +68 -31
  37. package/dist/esm/appstate/index.js +1 -1
  38. package/dist/esm/appstate/{WaAppStateSyncResponseParser.js → response-parser.js} +1 -1
  39. package/dist/esm/auth/WaAuthClient.js +17 -8
  40. package/dist/esm/auth/{flow/WaAuthCredentialsFlow.js → credentials-flow.js} +83 -18
  41. package/dist/esm/auth/pairing/WaPairingFlow.js +25 -28
  42. package/dist/esm/auth/pairing/{WaPairingCodeCrypto.js → pairing-code-crypto.js} +20 -6
  43. package/dist/esm/client/WaClient.js +116 -76
  44. package/dist/esm/client/WaClientFactory.js +114 -31
  45. package/dist/esm/client/connection/WaConnectionManager.js +4 -1
  46. package/dist/esm/client/coordinators/WaAbPropsCoordinator.js +137 -0
  47. package/dist/esm/client/coordinators/WaBusinessCoordinator.js +4 -13
  48. package/dist/esm/client/coordinators/WaEmailCoordinator.js +60 -0
  49. package/dist/esm/client/coordinators/WaIncomingNodeCoordinator.js +35 -10
  50. package/dist/esm/client/coordinators/WaMessageDispatchCoordinator.js +47 -17
  51. package/dist/esm/client/coordinators/WaOfflineResumeCoordinator.js +110 -0
  52. package/dist/esm/client/coordinators/WaPassiveTasksCoordinator.js +38 -20
  53. package/dist/esm/client/coordinators/WaProfileCoordinator.js +3 -1
  54. package/dist/esm/client/coordinators/WaRetryCoordinator.js +11 -9
  55. package/dist/esm/client/coordinators/WaTrustedContactTokenCoordinator.js +24 -6
  56. package/dist/esm/client/dirty.js +1 -1
  57. package/dist/esm/client/events/abprops.js +40 -0
  58. package/dist/esm/client/events/privacy-token.js +1 -2
  59. package/dist/esm/client/events/registration.js +39 -0
  60. package/dist/esm/client/incoming.js +36 -0
  61. package/dist/esm/client/mailbox.js +17 -1
  62. package/dist/esm/client/media.js +234 -0
  63. package/dist/esm/client/messages.js +162 -85
  64. package/dist/esm/crypto/core/index.js +1 -0
  65. package/dist/esm/crypto/core/random.js +2 -7
  66. package/dist/esm/crypto/core/xeddsa.js +53 -0
  67. package/dist/esm/crypto/curves/X25519.js +20 -2
  68. package/dist/esm/crypto/curves/constants.js +1 -0
  69. package/dist/esm/infra/perf/StoreLock.js +7 -4
  70. package/dist/esm/media/WaMediaCrypto.js +257 -62
  71. package/dist/esm/media/WaMediaTransferClient.js +47 -190
  72. package/dist/esm/media/constants.js +2 -0
  73. package/dist/esm/media/processor.js +1 -0
  74. package/dist/esm/message/addon-crypto.js +130 -3
  75. package/dist/esm/message/content.js +12 -6
  76. package/dist/esm/message/icdc.js +8 -8
  77. package/dist/esm/message/incoming.js +14 -12
  78. package/dist/esm/message/phash.js +32 -12
  79. package/dist/esm/message/reporting-token.js +3 -3
  80. package/dist/esm/message/use-case-secret.js +1 -1
  81. package/dist/esm/protocol/abprops.js +159 -0
  82. package/dist/esm/protocol/browser.js +14 -0
  83. package/dist/esm/protocol/constants.js +3 -1
  84. package/dist/esm/protocol/email.js +30 -0
  85. package/dist/esm/protocol/jid.js +44 -10
  86. package/dist/esm/protocol/nodes.js +6 -2
  87. package/dist/esm/protocol/notification.js +7 -1
  88. package/dist/esm/retry/reason.js +1 -1
  89. package/dist/esm/signal/api/SignalDeviceSyncApi.js +5 -2
  90. package/dist/esm/signal/api/SignalDigestSyncApi.js +8 -6
  91. package/dist/esm/signal/api/SignalIdentitySyncApi.js +4 -4
  92. package/dist/esm/signal/api/SignalMissingPreKeysSyncApi.js +1 -1
  93. package/dist/esm/signal/api/SignalSessionSyncApi.js +1 -1
  94. package/dist/esm/signal/crypto/WaAdvSignature.js +5 -51
  95. package/dist/esm/signal/crypto/constants.js +0 -4
  96. package/dist/esm/signal/encoding.js +11 -54
  97. package/dist/esm/signal/group/SenderKeyChain.js +3 -3
  98. package/dist/esm/signal/group/SenderKeyCodec.js +5 -6
  99. package/dist/esm/signal/group/SenderKeyManager.js +13 -10
  100. package/dist/esm/signal/registration/keygen.js +2 -3
  101. package/dist/esm/signal/registration/utils.js +2 -2
  102. package/dist/esm/signal/session/SignalProtocol.js +18 -17
  103. package/dist/esm/signal/session/SignalRatchet.js +21 -10
  104. package/dist/esm/signal/session/SignalSerializer.js +5 -6
  105. package/dist/esm/signal/session/SignalSession.js +11 -9
  106. package/dist/esm/signal/session/resolver.js +6 -6
  107. package/dist/esm/store/contracts/identity.store.js +1 -0
  108. package/dist/esm/store/contracts/message-secret.store.js +1 -0
  109. package/dist/esm/store/contracts/pre-key.store.js +1 -0
  110. package/dist/esm/store/contracts/session.store.js +1 -0
  111. package/dist/esm/store/createStore.js +48 -12
  112. package/dist/esm/store/index.js +4 -0
  113. package/dist/esm/store/locks/identity.lock.js +16 -0
  114. package/dist/esm/store/locks/message-secret.lock.js +17 -0
  115. package/dist/esm/store/locks/pre-key.lock.js +27 -0
  116. package/dist/esm/store/locks/session.lock.js +19 -0
  117. package/dist/esm/store/locks/signal.lock.js +0 -24
  118. package/dist/esm/store/noop.store.js +20 -0
  119. package/dist/esm/store/providers/memory/device-list.store.js +3 -0
  120. package/dist/esm/store/providers/memory/identity.store.js +31 -0
  121. package/dist/esm/store/providers/memory/message-secret.store.js +81 -0
  122. package/dist/esm/store/providers/memory/participants.store.js +3 -0
  123. package/dist/esm/store/providers/memory/pre-key.store.js +97 -0
  124. package/dist/esm/store/providers/memory/retry.store.js +25 -11
  125. package/dist/esm/store/providers/memory/session.store.js +45 -0
  126. package/dist/esm/store/providers/memory/signal.store.js +1 -164
  127. package/dist/esm/transport/WaComms.js +4 -3
  128. package/dist/esm/transport/WaWebSocket.js +9 -1
  129. package/dist/esm/transport/index.js +6 -0
  130. package/dist/esm/transport/keepalive/WaKeepAlive.js +17 -8
  131. package/dist/esm/transport/node/WaMobileTcpSocket.js +114 -0
  132. package/dist/esm/transport/node/WaNodeOrchestrator.js +17 -8
  133. package/dist/esm/transport/node/builders/abprops.js +20 -0
  134. package/dist/esm/transport/node/builders/device.js +11 -0
  135. package/dist/esm/transport/node/builders/email.js +65 -0
  136. package/dist/esm/transport/node/builders/offline.js +14 -0
  137. package/dist/esm/transport/node/builders/prekeys.js +37 -40
  138. package/dist/esm/transport/node/builders/presence.js +13 -0
  139. package/dist/esm/transport/node/builders/privacy-token.js +19 -23
  140. package/dist/esm/transport/node/builders/retry.js +1 -1
  141. package/dist/esm/transport/node/helpers.js +24 -0
  142. package/dist/esm/transport/node/mex/argo-decoder.js +152 -0
  143. package/dist/esm/transport/node/mex/client.js +83 -0
  144. package/dist/esm/transport/node/mex/persist-ids.js +10 -0
  145. package/dist/esm/transport/noise/WaClientPayload.js +15 -10
  146. package/dist/esm/transport/noise/WaFrameCodec.js +2 -2
  147. package/dist/esm/transport/noise/WaMobileClientPayload.js +53 -0
  148. package/dist/esm/transport/noise/WaNoiseCert.js +9 -27
  149. package/dist/esm/transport/noise/WaNoiseSession.js +12 -11
  150. package/dist/infra/perf/StoreLock.js +7 -4
  151. package/dist/media/WaMediaCrypto.js +253 -58
  152. package/dist/media/WaMediaTransferClient.js +50 -223
  153. package/dist/media/constants.js +3 -1
  154. package/dist/media/processor.js +2 -0
  155. package/dist/message/addon-crypto.js +131 -0
  156. package/dist/message/content.js +13 -5
  157. package/dist/message/icdc.js +8 -8
  158. package/dist/message/incoming.js +14 -12
  159. package/dist/message/phash.js +32 -12
  160. package/dist/message/reporting-token.js +2 -2
  161. package/dist/message/use-case-secret.js +1 -1
  162. package/dist/protocol/abprops.js +163 -0
  163. package/dist/protocol/browser.js +15 -0
  164. package/dist/protocol/constants.js +14 -2
  165. package/dist/protocol/email.js +33 -0
  166. package/dist/protocol/jid.js +45 -10
  167. package/dist/protocol/nodes.js +6 -2
  168. package/dist/protocol/notification.js +8 -2
  169. package/dist/retry/reason.js +1 -1
  170. package/dist/signal/api/SignalDeviceSyncApi.js +5 -2
  171. package/dist/signal/api/SignalDigestSyncApi.js +8 -6
  172. package/dist/signal/api/SignalIdentitySyncApi.js +4 -4
  173. package/dist/signal/crypto/WaAdvSignature.js +2 -50
  174. package/dist/signal/crypto/constants.js +1 -5
  175. package/dist/signal/encoding.js +11 -49
  176. package/dist/signal/group/SenderKeyChain.js +2 -2
  177. package/dist/signal/group/SenderKeyCodec.js +4 -5
  178. package/dist/signal/group/SenderKeyManager.js +12 -9
  179. package/dist/signal/registration/keygen.js +1 -2
  180. package/dist/signal/registration/utils.js +2 -2
  181. package/dist/signal/session/SignalProtocol.js +18 -17
  182. package/dist/signal/session/SignalRatchet.js +19 -8
  183. package/dist/signal/session/SignalSerializer.js +5 -6
  184. package/dist/signal/session/SignalSession.js +11 -9
  185. package/dist/signal/session/resolver.js +6 -6
  186. package/dist/store/contracts/identity.store.js +2 -0
  187. package/dist/store/contracts/message-secret.store.js +2 -0
  188. package/dist/store/contracts/pre-key.store.js +2 -0
  189. package/dist/store/contracts/session.store.js +2 -0
  190. package/dist/store/createStore.js +47 -11
  191. package/dist/store/index.js +9 -1
  192. package/dist/store/locks/identity.lock.js +19 -0
  193. package/dist/store/locks/message-secret.lock.js +20 -0
  194. package/dist/store/locks/pre-key.lock.js +30 -0
  195. package/dist/store/locks/session.lock.js +22 -0
  196. package/dist/store/locks/signal.lock.js +0 -24
  197. package/dist/store/noop.store.js +21 -1
  198. package/dist/store/providers/memory/device-list.store.js +3 -0
  199. package/dist/store/providers/memory/identity.store.js +35 -0
  200. package/dist/store/providers/memory/message-secret.store.js +85 -0
  201. package/dist/store/providers/memory/participants.store.js +3 -0
  202. package/dist/store/providers/memory/pre-key.store.js +101 -0
  203. package/dist/store/providers/memory/retry.store.js +24 -10
  204. package/dist/store/providers/memory/session.store.js +49 -0
  205. package/dist/store/providers/memory/signal.store.js +1 -164
  206. package/dist/transport/WaComms.js +4 -3
  207. package/dist/transport/WaWebSocket.js +9 -1
  208. package/dist/transport/index.js +17 -1
  209. package/dist/transport/keepalive/WaKeepAlive.js +17 -8
  210. package/dist/transport/node/WaMobileTcpSocket.js +118 -0
  211. package/dist/transport/node/WaNodeOrchestrator.js +16 -7
  212. package/dist/transport/node/builders/abprops.js +23 -0
  213. package/dist/transport/node/builders/device.js +14 -0
  214. package/dist/transport/node/builders/email.js +72 -0
  215. package/dist/transport/node/builders/offline.js +17 -0
  216. package/dist/transport/node/builders/prekeys.js +36 -39
  217. package/dist/transport/node/builders/presence.js +16 -0
  218. package/dist/transport/node/builders/privacy-token.js +18 -22
  219. package/dist/transport/node/builders/retry.js +1 -1
  220. package/dist/transport/node/helpers.js +26 -0
  221. package/dist/transport/node/mex/argo-decoder.js +189 -0
  222. package/dist/transport/node/mex/client.js +86 -0
  223. package/dist/transport/node/mex/persist-ids.js +13 -0
  224. package/dist/transport/noise/WaClientPayload.js +14 -9
  225. package/dist/transport/noise/WaFrameCodec.js +1 -1
  226. package/dist/transport/noise/WaMobileClientPayload.js +56 -0
  227. package/dist/transport/noise/WaNoiseCert.js +8 -26
  228. package/dist/transport/noise/WaNoiseSession.js +11 -10
  229. package/dist/types/appstate/WaAppStateCrypto.d.ts +11 -8
  230. package/dist/types/appstate/WaAppStateSyncClient.d.ts +6 -2
  231. package/dist/types/appstate/index.d.ts +1 -1
  232. package/dist/types/appstate/{WaAppStateSyncResponseParser.d.ts → response-parser.d.ts} +1 -1
  233. package/dist/types/appstate/types.d.ts +1 -1
  234. package/dist/types/auth/WaAuthClient.d.ts +9 -3
  235. package/dist/types/auth/credentials-flow.d.ts +20 -0
  236. package/dist/types/auth/pairing/WaPairingFlow.d.ts +3 -2
  237. package/dist/types/auth/pairing/{WaPairingCodeCrypto.d.ts → pairing-code-crypto.d.ts} +6 -1
  238. package/dist/types/auth/types.d.ts +40 -0
  239. package/dist/types/client/WaClient.d.ts +19 -8
  240. package/dist/types/client/WaClientFactory.d.ts +10 -4
  241. package/dist/types/client/coordinators/WaAbPropsCoordinator.d.ts +26 -0
  242. package/dist/types/client/coordinators/WaBusinessCoordinator.d.ts +1 -1
  243. package/dist/types/client/coordinators/WaEmailCoordinator.d.ts +24 -0
  244. package/dist/types/client/coordinators/WaIncomingNodeCoordinator.d.ts +6 -1
  245. package/dist/types/client/coordinators/WaMessageDispatchCoordinator.d.ts +15 -2
  246. package/dist/types/client/coordinators/WaOfflineResumeCoordinator.d.ts +31 -0
  247. package/dist/types/client/coordinators/WaPassiveTasksCoordinator.d.ts +13 -2
  248. package/dist/types/client/coordinators/WaPrivacyCoordinator.d.ts +1 -1
  249. package/dist/types/client/coordinators/WaProfileCoordinator.d.ts +4 -2
  250. package/dist/types/client/coordinators/WaRetryCoordinator.d.ts +6 -0
  251. package/dist/types/client/coordinators/WaTrustedContactTokenCoordinator.d.ts +11 -1
  252. package/dist/types/client/dirty.d.ts +3 -1
  253. package/dist/types/client/events/abprops.d.ts +14 -0
  254. package/dist/types/client/events/registration.d.ts +17 -0
  255. package/dist/types/client/incoming.d.ts +6 -1
  256. package/dist/types/client/mailbox.d.ts +2 -0
  257. package/dist/types/client/media.d.ts +31 -0
  258. package/dist/types/client/messages.d.ts +2 -0
  259. package/dist/types/client/persistence/WriteBehindPersistence.d.ts +1 -1
  260. package/dist/types/client/types.d.ts +100 -1
  261. package/dist/types/crypto/core/index.d.ts +1 -0
  262. package/dist/types/crypto/core/primitives.d.ts +1 -1
  263. package/dist/types/crypto/core/random.d.ts +1 -1
  264. package/dist/types/crypto/core/xeddsa.d.ts +2 -0
  265. package/dist/types/crypto/curves/constants.d.ts +1 -0
  266. package/dist/types/crypto/index.d.ts +1 -0
  267. package/dist/types/index.d.ts +2 -1
  268. package/dist/types/infra/log/ConsoleLogger.d.ts +1 -1
  269. package/dist/types/infra/log/PinoLogger.d.ts +1 -1
  270. package/dist/types/infra/perf/StoreLock.d.ts +1 -0
  271. package/dist/types/media/WaMediaCrypto.d.ts +15 -6
  272. package/dist/types/media/WaMediaTransferClient.d.ts +3 -11
  273. package/dist/types/media/constants.d.ts +2 -0
  274. package/dist/types/media/index.d.ts +1 -0
  275. package/dist/types/media/processor.d.ts +28 -0
  276. package/dist/types/media/types.d.ts +9 -3
  277. package/dist/types/message/addon-crypto.d.ts +34 -3
  278. package/dist/types/message/content.d.ts +3 -1
  279. package/dist/types/message/icdc.d.ts +4 -4
  280. package/dist/types/message/types.d.ts +16 -24
  281. package/dist/types/protocol/abprops.d.ts +142 -0
  282. package/dist/types/protocol/browser.d.ts +1 -0
  283. package/dist/types/protocol/constants.d.ts +5 -1
  284. package/dist/types/protocol/email.d.ts +32 -0
  285. package/dist/types/protocol/jid.d.ts +1 -0
  286. package/dist/types/protocol/nodes.d.ts +4 -0
  287. package/dist/types/protocol/notification.d.ts +6 -0
  288. package/dist/types/protocol/stream.d.ts +1 -0
  289. package/dist/types/retry/reason.d.ts +1 -1
  290. package/dist/types/signal/api/SignalDigestSyncApi.d.ts +3 -0
  291. package/dist/types/signal/api/SignalIdentitySyncApi.d.ts +3 -3
  292. package/dist/types/signal/crypto/WaAdvSignature.d.ts +0 -2
  293. package/dist/types/signal/crypto/constants.d.ts +0 -1
  294. package/dist/types/signal/encoding.d.ts +7 -1
  295. package/dist/types/signal/group/SenderKeyChain.d.ts +1 -1
  296. package/dist/types/signal/group/SenderKeyManager.d.ts +7 -2
  297. package/dist/types/signal/registration/utils.d.ts +2 -1
  298. package/dist/types/signal/session/SignalProtocol.d.ts +11 -2
  299. package/dist/types/signal/session/SignalSerializer.d.ts +2 -1
  300. package/dist/types/signal/session/resolver.d.ts +4 -2
  301. package/dist/types/signal/types.d.ts +16 -4
  302. package/dist/types/store/contracts/identity.store.d.ts +11 -0
  303. package/dist/types/store/contracts/message-secret.store.d.ts +16 -0
  304. package/dist/types/store/contracts/pre-key.store.d.ts +13 -0
  305. package/dist/types/store/contracts/session.store.d.ts +14 -0
  306. package/dist/types/store/contracts/signal.store.d.ts +1 -34
  307. package/dist/types/store/index.d.ts +9 -1
  308. package/dist/types/store/locks/identity.lock.d.ts +3 -0
  309. package/dist/types/store/locks/message-secret.lock.d.ts +3 -0
  310. package/dist/types/store/locks/pre-key.lock.d.ts +3 -0
  311. package/dist/types/store/locks/session.lock.d.ts +3 -0
  312. package/dist/types/store/noop.store.d.ts +4 -0
  313. package/dist/types/store/providers/memory/identity.store.d.ts +18 -0
  314. package/dist/types/store/providers/memory/message-secret.store.d.ts +21 -0
  315. package/dist/types/store/providers/memory/pre-key.store.d.ts +23 -0
  316. package/dist/types/store/providers/memory/retry.store.d.ts +7 -1
  317. package/dist/types/store/providers/memory/session.store.d.ts +21 -0
  318. package/dist/types/store/providers/memory/signal.store.d.ts +3 -45
  319. package/dist/types/store/providers/memory/thread.store.d.ts +1 -1
  320. package/dist/types/store/types.d.ts +21 -1
  321. package/dist/types/transport/WaWebSocket.d.ts +1 -0
  322. package/dist/types/transport/index.d.ts +8 -1
  323. package/dist/types/transport/keepalive/WaKeepAlive.d.ts +4 -1
  324. package/dist/types/transport/node/WaMobileTcpSocket.d.ts +18 -0
  325. package/dist/types/transport/node/WaNodeOrchestrator.d.ts +6 -2
  326. package/dist/types/transport/node/builders/abprops.d.ts +5 -0
  327. package/dist/types/transport/node/builders/device.d.ts +2 -0
  328. package/dist/types/transport/node/builders/email.d.ts +11 -0
  329. package/dist/types/transport/node/builders/offline.d.ts +2 -0
  330. package/dist/types/transport/node/builders/prekeys.d.ts +4 -3
  331. package/dist/types/transport/node/builders/presence.d.ts +6 -0
  332. package/dist/types/transport/node/helpers.d.ts +3 -0
  333. package/dist/types/transport/node/mex/argo-decoder.d.ts +11 -0
  334. package/dist/types/transport/node/mex/client.d.ts +18 -0
  335. package/dist/types/transport/node/mex/persist-ids.d.ts +14 -0
  336. package/dist/types/transport/noise/WaMobileClientPayload.d.ts +29 -0
  337. package/dist/types/transport/noise/WaNoiseCert.d.ts +7 -1
  338. package/dist/types/transport/noise/WaNoiseSession.d.ts +1 -0
  339. package/dist/types/transport/types.d.ts +8 -0
  340. package/package.json +6 -4
  341. package/dist/auth/pairing/constants.js +0 -5
  342. package/dist/client/connection/WaKeyShareCoordinator.js +0 -63
  343. package/dist/esm/auth/pairing/constants.js +0 -2
  344. package/dist/esm/client/connection/WaKeyShareCoordinator.js +0 -59
  345. package/dist/esm/transport/node/builders/index.js +0 -11
  346. package/dist/transport/node/builders/index.js +0 -51
  347. package/dist/types/auth/flow/WaAuthCredentialsFlow.d.ts +0 -14
  348. package/dist/types/auth/pairing/constants.d.ts +0 -2
  349. package/dist/types/client/connection/WaKeyShareCoordinator.d.ts +0 -14
  350. package/dist/types/transport/node/builders/index.d.ts +0 -11
  351. /package/dist/appstate/{WaAppStateSyncResponseParser.js → response-parser.js} +0 -0
@@ -21,46 +21,38 @@ export interface WaMessagePublishResult {
21
21
  readonly ackNode: BinaryNode;
22
22
  readonly ack: WaMessageAckMetadata;
23
23
  }
24
- type MediaInput = Uint8Array | ArrayBuffer | Readable;
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
+ };
25
29
  interface WaSendMediaBase {
26
30
  readonly media: MediaInput;
27
31
  readonly mimetype: string;
28
32
  readonly fileLength?: number;
29
33
  }
30
- interface WaSendImageMessage extends WaSendMediaBase {
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> {
31
40
  readonly type: 'image';
32
- readonly caption?: string;
33
- readonly width?: number;
34
- readonly height?: number;
35
41
  }
36
- interface WaSendVideoMessage extends WaSendMediaBase {
42
+ interface WaSendVideoMessage extends WaSendMediaBase, UserMediaFields<Proto.Message.IVideoMessage> {
37
43
  readonly type: 'video';
38
- readonly caption?: string;
39
- readonly gifPlayback?: boolean;
40
- readonly seconds?: number;
41
- readonly width?: number;
42
- readonly height?: number;
43
44
  }
44
- interface WaSendPtvMessage extends WaSendMediaBase {
45
+ interface WaSendPtvMessage extends WaSendMediaBase, UserMediaFields<Proto.Message.IVideoMessage> {
45
46
  readonly type: 'ptv';
46
- readonly seconds?: number;
47
- readonly width?: number;
48
- readonly height?: number;
49
47
  }
50
- interface WaSendAudioMessage extends WaSendMediaBase {
48
+ interface WaSendAudioMessage extends WaSendMediaBase, UserMediaFields<Proto.Message.IAudioMessage> {
51
49
  readonly type: 'audio';
52
- readonly ptt?: boolean;
53
- readonly seconds?: number;
54
50
  }
55
- interface WaSendDocumentMessage extends WaSendMediaBase {
51
+ interface WaSendDocumentMessage extends WaSendMediaBase, UserMediaFields<Proto.Message.IDocumentMessage> {
56
52
  readonly type: 'document';
57
- readonly caption?: string;
58
- readonly fileName?: string;
59
53
  }
60
- interface WaSendStickerMessage extends WaSendMediaBase {
54
+ interface WaSendStickerMessage extends WaSendMediaBaseOptionalMime, UserMediaFields<Proto.Message.IStickerMessage> {
61
55
  readonly type: 'sticker';
62
- readonly width?: number;
63
- readonly height?: number;
64
56
  }
65
57
  export type WaSendMediaMessage = WaSendImageMessage | WaSendVideoMessage | WaSendPtvMessage | WaSendAudioMessage | WaSendDocumentMessage | WaSendStickerMessage;
66
58
  export type WaSendMessageContent = string | Proto.IMessage | WaSendMediaMessage;
@@ -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;
@@ -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;
@@ -7,10 +7,14 @@ export { WA_EDIT_ATTRS, WA_ENC_MEDIA_TYPES, WA_EVENT_META_TYPES, WA_MESSAGE_TAGS
7
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';
8
8
  export { getWaMediaHkdfInfo, WA_MEDIA_HKDF_INFO, WA_PREVIEW_MEDIA_HKDF_INFO } from './media';
9
9
  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';
10
+ export { WA_GROUP_NOTIFICATION_TAGS, WA_NOTIFICATION_TYPES, WA_REGISTRATION_NOTIFICATION_TAGS } from './notification';
11
11
  export { WA_PRIVACY_TOKEN_NOTIFICATION_TYPE, WA_PRIVACY_TOKEN_TAGS, WA_PRIVACY_TOKEN_TYPES, WA_TC_TOKEN_DEFAULTS } from './privacy-token';
12
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
13
  export type { WaPrivacyCategory, WaPrivacySettingName, WaPrivacyValue } from './privacy';
14
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';
15
19
  export { WA_GROUP_PARTICIPANT_TYPES, type WaGroupSetting } from './group';
16
20
  export { WA_USYNC_CONTEXTS, WA_USYNC_DEFAULTS, WA_USYNC_MODES } from './usync';
@@ -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];
@@ -4,6 +4,7 @@ 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 isLidJid(jid: string): boolean;
7
8
  export declare function isGroupJid(jid: string): boolean;
8
9
  export declare function isBroadcastJid(jid: string): boolean;
9
10
  export declare function isGroupOrBroadcastJid(jid: string): boolean;
@@ -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";
@@ -84,4 +86,6 @@ export declare const WA_XMLNS: Readonly<{
84
86
  readonly NEWSLETTER: "newsletter";
85
87
  readonly XMPP_PING: "urn:xmpp:ping";
86
88
  readonly WHATSAPP_PING: "w:p";
89
+ readonly ABPROPS: "abt";
90
+ readonly MEX: "w:mex";
87
91
  }>;
@@ -2,6 +2,12 @@ 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
+ }>;
8
+ export declare const WA_REGISTRATION_NOTIFICATION_TAGS: Readonly<{
9
+ readonly WA_OLD_REGISTRATION: "wa_old_registration";
10
+ readonly DEVICE_LOGOUT: "device_logout";
5
11
  }>;
6
12
  export declare const WA_GROUP_NOTIFICATION_TAGS: Readonly<{
7
13
  readonly REMOVE: "remove";
@@ -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,2 +1,2 @@
1
1
  import { type WaRetryReasonCode } from './constants';
2
- export declare function mapRetryReasonFromError(error: unknown): WaRetryReasonCode;
2
+ export declare function mapRetryReasonFromError(error: unknown): WaRetryReasonCode | undefined;
@@ -1,11 +1,13 @@
1
1
  import type { Logger } from '../../infra/log/types';
2
2
  import type { RegistrationInfo, SignedPreKeyRecord } from '../types';
3
+ import type { WaPreKeyStore } from '../../store/contracts/pre-key.store';
3
4
  import type { WaSignalStore } from '../../store/contracts/signal.store';
4
5
  import type { BinaryNode } from '../../transport/types';
5
6
  interface SignalDigestSyncApiOptions {
6
7
  readonly logger: Logger;
7
8
  readonly query: (node: BinaryNode, timeoutMs?: number) => Promise<BinaryNode>;
8
9
  readonly signalStore: WaSignalStore;
10
+ readonly preKeyStore: WaPreKeyStore;
9
11
  readonly defaultTimeoutMs?: number;
10
12
  readonly hostDomain?: string;
11
13
  }
@@ -23,6 +25,7 @@ export declare class SignalDigestSyncApi {
23
25
  private readonly logger;
24
26
  private readonly query;
25
27
  private readonly signalStore;
28
+ private readonly preKeyStore;
26
29
  private readonly defaultTimeoutMs;
27
30
  private readonly hostDomain;
28
31
  constructor(options: SignalDigestSyncApiOptions);
@@ -1,5 +1,5 @@
1
1
  import type { Logger } from '../../infra/log/types';
2
- import type { WaSignalStore } from '../../store/contracts/signal.store';
2
+ import type { WaIdentityStore } from '../../store/contracts/identity.store';
3
3
  import type { BinaryNode } from '../../transport/types';
4
4
  export interface SignalIdentitySyncEntry {
5
5
  readonly jid: string;
@@ -9,14 +9,14 @@ export interface SignalIdentitySyncEntry {
9
9
  interface SignalIdentitySyncApiOptions {
10
10
  readonly logger: Logger;
11
11
  readonly query: (node: BinaryNode, timeoutMs?: number) => Promise<BinaryNode>;
12
- readonly signalStore?: WaSignalStore;
12
+ readonly identityStore?: WaIdentityStore;
13
13
  readonly defaultTimeoutMs?: number;
14
14
  readonly hostDomain?: string;
15
15
  }
16
16
  export declare class SignalIdentitySyncApi {
17
17
  private readonly logger;
18
18
  private readonly query;
19
- private readonly signalStore?;
19
+ private readonly identityStore?;
20
20
  private readonly defaultTimeoutMs;
21
21
  private readonly hostDomain;
22
22
  private readonly syncDedup;
@@ -1,7 +1,5 @@
1
1
  import type { SignalKeyPair } from '../../crypto/curves/types';
2
2
  export { ADV_PREFIX_ACCOUNT_SIGNATURE, ADV_PREFIX_DEVICE_SIGNATURE, ADV_PREFIX_HOSTED_ACCOUNT_SIGNATURE, ADV_PREFIX_HOSTED_DEVICE_SIGNATURE } from '../crypto/constants';
3
- export declare function verifySignalSignature(publicKey: Uint8Array, message: Uint8Array, signature: Uint8Array): Promise<boolean>;
4
- export declare function signSignalMessage(privateKey: Uint8Array, message: Uint8Array): Promise<Uint8Array>;
5
3
  export declare function verifyDeviceIdentityAccountSignature(details: Uint8Array, accountSignature: Uint8Array, identityPublicKey: Uint8Array, accountSignatureKey: Uint8Array, isHosted?: boolean): Promise<boolean>;
6
4
  export declare function generateDeviceSignature(details: Uint8Array, identityKeyPair: SignalKeyPair, accountSignatureKey: Uint8Array, isHosted?: boolean): Promise<Uint8Array>;
7
5
  export declare function computeAdvIdentityHmac(secretKey: Uint8Array, details: Uint8Array): Promise<Uint8Array>;
@@ -1,4 +1,3 @@
1
- export declare const SIGNAL_PREFIX_SIGNATURE_RANDOM: Uint8Array<ArrayBuffer>;
2
1
  export declare const ADV_PREFIX_ACCOUNT_SIGNATURE: Uint8Array<ArrayBuffer>;
3
2
  export declare const ADV_PREFIX_DEVICE_SIGNATURE: Uint8Array<ArrayBuffer>;
4
3
  export declare const ADV_PREFIX_HOSTED_ACCOUNT_SIGNATURE: Uint8Array<ArrayBuffer>;
@@ -1,4 +1,5 @@
1
- import type { PreKeyRecord, RegistrationInfo, SenderKeyDistributionRecord, SenderKeyRecord, SignalAddress, SignalSessionRecord, SignedPreKeyRecord } from './types';
1
+ import { type Proto } from '..';
2
+ import type { PreKeyRecord, RegistrationInfo, SenderKeyDistributionRecord, SenderKeyRecord, SignalAddress, SignalMessageKey, SignalRecvChain, SignalSessionRecord, SignalSessionSnapshot, SignedPreKeyRecord } from './types';
2
3
  export interface SignalAddressParts {
3
4
  readonly user: string;
4
5
  readonly server: string;
@@ -63,6 +64,11 @@ export declare function decodeSignalAddressFromRow(row: Pick<SenderKeyRow | Send
63
64
  export declare function decodeSignalRegistrationRow(row: SignalRegistrationRow): RegistrationInfo;
64
65
  export declare function decodeSignalPreKeyRow(row: SignalPreKeyRow): PreKeyRecord;
65
66
  export declare function decodeSignalSignedPreKeyRow(row: SignalSignedPreKeyRow): SignedPreKeyRecord;
67
+ export declare function encodeSignalSessionSnapshot(session: SignalSessionSnapshot): Proto.ISessionStructure;
68
+ export declare function encodeSignalRecvChain(chain: SignalRecvChain): Proto.SessionStructure.IChain;
69
+ export declare function decodeSignalMessageKey(messageKey: Proto.SessionStructure.Chain.IMessageKey, field: string): SignalMessageKey;
70
+ export declare function decodeSignalRecvChain(chain: Proto.SessionStructure.IChain, field: string): SignalRecvChain;
71
+ export declare function decodeSignalSessionSnapshot(session: Proto.ISessionStructure, field: string): SignalSessionSnapshot;
66
72
  export declare function encodeSignalSessionRecord(record: SignalSessionRecord): Uint8Array;
67
73
  export declare function decodeSignalSessionRecord(raw: unknown): SignalSessionRecord;
68
74
  export declare function encodeSenderKeyRecord(record: SenderKeyRecord): Uint8Array;
@@ -7,5 +7,5 @@ export interface SenderKeyMessageKeySelection {
7
7
  readonly messageKey: SenderMessageKey;
8
8
  readonly updatedRecord: SenderKeyRecord;
9
9
  }
10
- export declare function selectMessageKey(senderKey: SenderKeyRecord, targetIteration: number): Promise<SenderKeyMessageKeySelection>;
10
+ export declare function selectMessageKey(senderKey: SenderKeyRecord, targetIteration: number, futureMessagesMax?: number): Promise<SenderKeyMessageKeySelection>;
11
11
  export declare function deriveSenderKeyMsgKey(iteration: number, chainKey: Uint8Array): Promise<SenderKeyMessageKeyDerivation>;
@@ -1,4 +1,4 @@
1
- import type { Proto } from '../..';
1
+ import { type Proto } from '../..';
2
2
  import type { SenderKeyRecord, SignalAddress } from '../types';
3
3
  import type { WaSenderKeyStore } from '../../store/contracts/sender-key.store';
4
4
  interface GroupSenderKeyCiphertext {
@@ -11,7 +11,12 @@ interface GroupSenderKeyCiphertext {
11
11
  export declare class SenderKeyManager {
12
12
  private readonly store;
13
13
  private readonly senderLock;
14
- constructor(store: WaSenderKeyStore);
14
+ private readonly getFutureMessagesMax;
15
+ private readonly skipSignatureVerification;
16
+ constructor(store: WaSenderKeyStore, options?: {
17
+ readonly getFutureMessagesMax?: () => number;
18
+ readonly skipSignatureVerification?: boolean;
19
+ });
15
20
  prepareGroupEncryption(groupId: string, sender: SignalAddress, plaintext: Uint8Array): Promise<{
16
21
  readonly distributionMessage: Proto.Message.ISenderKeyDistributionMessage;
17
22
  readonly ciphertext: GroupSenderKeyCiphertext;
@@ -1,9 +1,10 @@
1
1
  import type { PreKeyRecord, RegistrationInfo, SignedPreKeyRecord } from '../types';
2
+ import type { WaPreKeyStore } from '../../store/contracts/pre-key.store';
2
3
  import type { WaSignalStore } from '../../store/contracts/signal.store';
3
4
  interface RegistrationBundle {
4
5
  readonly registrationInfo: RegistrationInfo;
5
6
  readonly signedPreKey: SignedPreKeyRecord;
6
7
  readonly firstPreKey: PreKeyRecord;
7
8
  }
8
- export declare function createAndStoreInitialKeys(store: WaSignalStore): Promise<RegistrationBundle>;
9
+ export declare function createAndStoreInitialKeys(store: WaSignalStore, preKeyStore: WaPreKeyStore): Promise<RegistrationBundle>;
9
10
  export {};
@@ -1,14 +1,23 @@
1
1
  import type { Logger } from '../../infra/log/types';
2
2
  import type { SignalAddress, SignalPreKeyBundle, SignalSessionRecord } from '../types';
3
+ import type { WaIdentityStore } from '../../store/contracts/identity.store';
4
+ import type { WaPreKeyStore } from '../../store/contracts/pre-key.store';
5
+ import type { WaSessionStore } from '../../store/contracts/session.store';
3
6
  import type { WaSignalStore } from '../../store/contracts/signal.store';
4
7
  interface EstablishOutgoingSessionOptions {
5
8
  readonly reuseExisting?: boolean;
6
9
  }
10
+ export interface SignalProtocolStores {
11
+ readonly signal: WaSignalStore;
12
+ readonly preKey: WaPreKeyStore;
13
+ readonly session: WaSessionStore;
14
+ readonly identity: WaIdentityStore;
15
+ }
7
16
  export declare class SignalProtocol {
8
- private readonly store;
17
+ private readonly stores;
9
18
  private readonly logger;
10
19
  private readonly sessionMutationLock;
11
- constructor(store: WaSignalStore, logger?: Logger);
20
+ constructor(stores: SignalProtocolStores, logger?: Logger);
12
21
  establishOutgoingSession(address: SignalAddress, remoteBundle: SignalPreKeyBundle, options?: EstablishOutgoingSessionOptions): Promise<SignalSessionRecord>;
13
22
  encryptMessage(address: SignalAddress, plaintext: Uint8Array, expectedIdentity?: Uint8Array): Promise<{
14
23
  readonly type: 'msg' | 'pkmsg';
@@ -1,6 +1,7 @@
1
1
  import type { ParsedPreKeySignalMessage, ParsedSignalMessage, PreKeyRecord, SignedPreKeyRecord } from '../types';
2
+ import type { WaPreKeyStore } from '../../store/contracts/pre-key.store';
2
3
  import type { WaSignalStore } from '../../store/contracts/signal.store';
3
4
  export declare function deserializeMsg(versionContentMac: Uint8Array): ParsedSignalMessage;
4
5
  export declare function deserializePkMsg(versionContent: Uint8Array): ParsedPreKeySignalMessage;
5
6
  export declare function requireSignedPreKey(store: WaSignalStore, id: number): Promise<SignedPreKeyRecord>;
6
- export declare function requirePreKey(store: WaSignalStore, id: number): Promise<PreKeyRecord>;
7
+ export declare function requirePreKey(store: WaPreKeyStore, id: number): Promise<PreKeyRecord>;
@@ -3,7 +3,8 @@ import type { SignalIdentitySyncApi } from '../api/SignalIdentitySyncApi';
3
3
  import type { SignalSessionSyncApi } from '../api/SignalSessionSyncApi';
4
4
  import type { SignalProtocol } from '../session/SignalProtocol';
5
5
  import type { SignalAddress, SignalSessionRecord } from '../types';
6
- import type { WaSignalStore } from '../../store/contracts/signal.store';
6
+ import type { WaIdentityStore } from '../../store/contracts/identity.store';
7
+ import type { WaSessionStore } from '../../store/contracts/session.store';
7
8
  export interface SignalResolvedSessionTarget {
8
9
  readonly jid: string;
9
10
  readonly address: SignalAddress;
@@ -15,7 +16,8 @@ export type SignalSessionResolver = {
15
16
  };
16
17
  export declare function createSignalSessionResolver(options: {
17
18
  readonly signalProtocol: SignalProtocol;
18
- readonly signalStore: WaSignalStore;
19
+ readonly sessionStore: WaSessionStore;
20
+ readonly identityStore: WaIdentityStore;
19
21
  readonly signalIdentitySync: SignalIdentitySyncApi;
20
22
  readonly signalSessionSync: SignalSessionSyncApi;
21
23
  readonly logger: Logger;
@@ -1,4 +1,5 @@
1
1
  import type { SignalKeyPair } from '../crypto/curves/types';
2
+ import type { Proto } from '..';
2
3
  export interface RegistrationInfo {
3
4
  readonly registrationId: number;
4
5
  readonly identityKeyPair: SignalKeyPair;
@@ -37,8 +38,14 @@ export interface SignalRecvChain {
37
38
  readonly ratchetPubKey: Uint8Array;
38
39
  readonly nextMsgIndex: number;
39
40
  readonly chainKey: Uint8Array;
40
- readonly unusedMsgKeys: readonly SignalMessageKey[];
41
- }
41
+ readonly unusedMsgKeys: readonly Proto.SessionStructure.Chain.IMessageKey[];
42
+ }
43
+ /**
44
+ * Raw protobuf recv chain kept as-is to avoid eager decode.
45
+ * Use {@link decodeSignalRecvChain} only for the chain that
46
+ * actually needs to be read/modified.
47
+ */
48
+ export type RawSignalRecvChain = Proto.SessionStructure.IChain;
42
49
  export interface SignalSendChain {
43
50
  readonly ratchetKey: SignalSerializedKeyPair;
44
51
  readonly nextMsgIndex: number;
@@ -54,14 +61,19 @@ export interface SignalSessionSnapshot {
54
61
  readonly remote: SignalPeer;
55
62
  readonly rootKey: Uint8Array;
56
63
  readonly sendChain: SignalSendChain;
57
- readonly recvChains: readonly SignalRecvChain[];
64
+ readonly recvChains: readonly RawSignalRecvChain[];
58
65
  readonly initialExchangeInfo: SignalInitialExchangeInfo | null;
59
66
  readonly prevSendChainHighestIndex: number;
60
67
  readonly aliceBaseKey: Uint8Array | null;
61
68
  }
62
69
  export interface SignalSessionRecord extends SignalSessionSnapshot {
63
- readonly prevSessions: readonly SignalSessionSnapshot[];
70
+ readonly prevSessions: readonly RawSignalSessionSnapshot[];
64
71
  }
72
+ /**
73
+ * Raw protobuf session snapshot kept as-is to avoid eager decode.
74
+ * Only decoded on demand in rare fallback paths (session mismatch).
75
+ */
76
+ export type RawSignalSessionSnapshot = Proto.ISessionStructure;
65
77
  export interface SignalPreKeyBundle {
66
78
  readonly regId: number;
67
79
  readonly identity: Uint8Array;
@@ -0,0 +1,11 @@
1
+ import type { SignalAddress } from '../../signal/types';
2
+ export interface WaIdentityStore {
3
+ getRemoteIdentity(address: SignalAddress): Promise<Uint8Array | null>;
4
+ getRemoteIdentities(addresses: readonly SignalAddress[]): Promise<readonly (Uint8Array | null)[]>;
5
+ setRemoteIdentity(address: SignalAddress, identityKey: Uint8Array): Promise<void>;
6
+ setRemoteIdentities(entries: readonly {
7
+ readonly address: SignalAddress;
8
+ readonly identityKey: Uint8Array;
9
+ }[]): Promise<void>;
10
+ clear(): Promise<void>;
11
+ }
@@ -0,0 +1,16 @@
1
+ export interface WaMessageSecretEntry {
2
+ readonly secret: Uint8Array;
3
+ readonly senderJid: string;
4
+ }
5
+ export interface WaMessageSecretStore {
6
+ get(messageId: string, nowMs?: number): Promise<WaMessageSecretEntry | null>;
7
+ getBatch(messageIds: readonly string[], nowMs?: number): Promise<readonly (WaMessageSecretEntry | null)[]>;
8
+ set(messageId: string, entry: WaMessageSecretEntry): Promise<void>;
9
+ setBatch(entries: readonly {
10
+ readonly messageId: string;
11
+ readonly entry: WaMessageSecretEntry;
12
+ }[]): Promise<void>;
13
+ cleanupExpired(nowMs: number): Promise<number>;
14
+ clear(): Promise<void>;
15
+ destroy?(): Promise<void>;
16
+ }
@@ -0,0 +1,13 @@
1
+ import type { PreKeyRecord } from '../../signal/types';
2
+ export interface WaPreKeyStore {
3
+ putPreKey(record: PreKeyRecord): Promise<void>;
4
+ getOrGenPreKeys(count: number, generator: (keyId: number) => PreKeyRecord | Promise<PreKeyRecord>): Promise<readonly PreKeyRecord[]>;
5
+ getPreKeyById(keyId: number): Promise<PreKeyRecord | null>;
6
+ getPreKeysById(keyIds: readonly number[]): Promise<readonly (PreKeyRecord | null)[]>;
7
+ consumePreKeyById(keyId: number): Promise<PreKeyRecord | null>;
8
+ getOrGenSinglePreKey(generator: (keyId: number) => PreKeyRecord | Promise<PreKeyRecord>): Promise<PreKeyRecord>;
9
+ markKeyAsUploaded(keyId: number): Promise<void>;
10
+ setServerHasPreKeys(value: boolean): Promise<void>;
11
+ getServerHasPreKeys(): Promise<boolean>;
12
+ clear(): Promise<void>;
13
+ }
@@ -0,0 +1,14 @@
1
+ import type { SignalAddress, SignalSessionRecord } from '../../signal/types';
2
+ export interface WaSessionStore {
3
+ hasSession(address: SignalAddress): Promise<boolean>;
4
+ hasSessions(addresses: readonly SignalAddress[]): Promise<readonly boolean[]>;
5
+ getSession(address: SignalAddress): Promise<SignalSessionRecord | null>;
6
+ getSessionsBatch(addresses: readonly SignalAddress[]): Promise<readonly (SignalSessionRecord | null)[]>;
7
+ setSession(address: SignalAddress, session: SignalSessionRecord): Promise<void>;
8
+ setSessionsBatch(entries: readonly {
9
+ readonly address: SignalAddress;
10
+ readonly session: SignalSessionRecord;
11
+ }[]): Promise<void>;
12
+ deleteSession(address: SignalAddress): Promise<void>;
13
+ clear(): Promise<void>;
14
+ }