zapo-js 0.1.1 → 0.2.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 (589) hide show
  1. package/README.md +20 -4
  2. package/dist/appstate/WaAppStateCrypto.js +19 -26
  3. package/dist/appstate/WaAppStateSyncClient.js +293 -181
  4. package/dist/appstate/WaAppStateSyncResponseParser.js +16 -5
  5. package/dist/appstate/constants.js +4 -3
  6. package/dist/appstate/{store/sqlite.js → encoding.js} +13 -8
  7. package/dist/appstate/index.js +8 -6
  8. package/dist/appstate/utils.js +9 -34
  9. package/dist/auth/WaAuthClient.js +43 -61
  10. package/dist/auth/flow/WaAuthCredentialsFlow.js +22 -15
  11. package/dist/auth/index.js +1 -8
  12. package/dist/auth/pairing/WaPairingCodeCrypto.js +6 -4
  13. package/dist/auth/pairing/WaPairingFlow.js +34 -26
  14. package/dist/auth/pairing/WaQrFlow.js +37 -24
  15. package/dist/client/WaClient.js +275 -324
  16. package/dist/client/WaClientFactory.js +500 -133
  17. package/dist/client/connection/WaConnectionManager.js +301 -0
  18. package/dist/client/connection/WaKeyShareCoordinator.js +63 -0
  19. package/dist/client/connection/WaReceiptQueue.js +51 -0
  20. package/dist/client/coordinators/WaAppStateMutationCoordinator.js +471 -0
  21. package/dist/client/coordinators/WaBusinessCoordinator.js +241 -0
  22. package/dist/client/coordinators/WaGroupCoordinator.js +30 -16
  23. package/dist/client/coordinators/WaIncomingNodeCoordinator.js +21 -27
  24. package/dist/client/coordinators/WaMessageDispatchCoordinator.js +439 -701
  25. package/dist/client/coordinators/WaPassiveTasksCoordinator.js +74 -31
  26. package/dist/client/coordinators/WaPrivacyCoordinator.js +134 -0
  27. package/dist/client/coordinators/WaProfileCoordinator.js +212 -0
  28. package/dist/client/coordinators/WaRetryCoordinator.js +242 -57
  29. package/dist/client/coordinators/WaStreamControlCoordinator.js +18 -11
  30. package/dist/client/coordinators/WaTrustedContactTokenCoordinator.js +166 -0
  31. package/dist/client/dirty.js +74 -48
  32. package/dist/client/events/chat.js +4 -3
  33. package/dist/client/events/devices.js +72 -0
  34. package/dist/client/events/group.js +62 -47
  35. package/dist/client/events/identity.js +22 -0
  36. package/dist/client/events/privacy-token.js +39 -0
  37. package/dist/client/history-sync.js +94 -63
  38. package/dist/client/incoming.js +60 -27
  39. package/dist/client/mailbox.js +24 -23
  40. package/dist/client/messages.js +107 -31
  41. package/dist/client/messaging/fanout.js +199 -0
  42. package/dist/client/messaging/key-protocol.js +130 -0
  43. package/dist/client/messaging/participants.js +193 -0
  44. package/dist/client/persistence/WriteBehindPersistence.js +129 -0
  45. package/dist/client/tokens/cs-token.js +50 -0
  46. package/dist/client/tokens/tc-token.js +25 -0
  47. package/dist/crypto/core/hkdf.js +3 -8
  48. package/dist/crypto/core/index.js +2 -5
  49. package/dist/crypto/core/keys.js +6 -7
  50. package/dist/crypto/core/nonce.js +2 -0
  51. package/dist/crypto/core/primitives.js +12 -23
  52. package/dist/crypto/core/random.js +26 -23
  53. package/dist/crypto/curves/Ed25519.js +7 -8
  54. package/dist/crypto/curves/X25519.js +38 -22
  55. package/dist/crypto/index.js +1 -3
  56. package/dist/crypto/math/constants.js +13 -36
  57. package/dist/crypto/math/edwards.js +171 -44
  58. package/dist/crypto/math/fe.js +706 -0
  59. package/dist/crypto/math/mod.js +10 -3
  60. package/dist/esm/appstate/WaAppStateCrypto.js +7 -14
  61. package/dist/esm/appstate/WaAppStateSyncClient.js +284 -172
  62. package/dist/esm/appstate/WaAppStateSyncResponseParser.js +17 -6
  63. package/dist/esm/appstate/constants.js +3 -2
  64. package/dist/esm/appstate/{store/sqlite.js → encoding.js} +13 -8
  65. package/dist/esm/appstate/index.js +2 -2
  66. package/dist/esm/appstate/utils.js +8 -30
  67. package/dist/esm/auth/WaAuthClient.js +43 -61
  68. package/dist/esm/auth/flow/WaAuthCredentialsFlow.js +22 -15
  69. package/dist/esm/auth/index.js +0 -3
  70. package/dist/esm/auth/pairing/WaPairingCodeCrypto.js +6 -4
  71. package/dist/esm/auth/pairing/WaPairingFlow.js +28 -20
  72. package/dist/esm/auth/pairing/WaQrFlow.js +37 -24
  73. package/dist/esm/client/WaClient.js +275 -324
  74. package/dist/esm/client/WaClientFactory.js +501 -134
  75. package/dist/esm/client/connection/WaConnectionManager.js +297 -0
  76. package/dist/esm/client/connection/WaKeyShareCoordinator.js +59 -0
  77. package/dist/esm/client/connection/WaReceiptQueue.js +47 -0
  78. package/dist/esm/client/coordinators/WaAppStateMutationCoordinator.js +467 -0
  79. package/dist/esm/client/coordinators/WaBusinessCoordinator.js +238 -0
  80. package/dist/esm/client/coordinators/WaGroupCoordinator.js +23 -9
  81. package/dist/esm/client/coordinators/WaIncomingNodeCoordinator.js +21 -27
  82. package/dist/esm/client/coordinators/WaMessageDispatchCoordinator.js +443 -705
  83. package/dist/esm/client/coordinators/WaPassiveTasksCoordinator.js +74 -31
  84. package/dist/esm/client/coordinators/WaPrivacyCoordinator.js +131 -0
  85. package/dist/esm/client/coordinators/WaProfileCoordinator.js +209 -0
  86. package/dist/esm/client/coordinators/WaRetryCoordinator.js +244 -59
  87. package/dist/esm/client/coordinators/WaStreamControlCoordinator.js +19 -12
  88. package/dist/esm/client/coordinators/WaTrustedContactTokenCoordinator.js +162 -0
  89. package/dist/esm/client/dirty.js +69 -43
  90. package/dist/esm/client/events/chat.js +4 -3
  91. package/dist/esm/client/events/devices.js +68 -0
  92. package/dist/esm/client/events/group.js +53 -39
  93. package/dist/esm/client/events/identity.js +19 -0
  94. package/dist/esm/client/events/privacy-token.js +36 -0
  95. package/dist/esm/client/history-sync.js +91 -60
  96. package/dist/esm/client/incoming.js +61 -28
  97. package/dist/esm/client/mailbox.js +24 -23
  98. package/dist/esm/client/messages.js +108 -32
  99. package/dist/esm/client/messaging/fanout.js +196 -0
  100. package/dist/esm/client/messaging/key-protocol.js +127 -0
  101. package/dist/esm/client/messaging/participants.js +190 -0
  102. package/dist/esm/client/persistence/WriteBehindPersistence.js +125 -0
  103. package/dist/esm/client/tokens/cs-token.js +46 -0
  104. package/dist/esm/client/tokens/tc-token.js +18 -0
  105. package/dist/esm/crypto/core/hkdf.js +3 -8
  106. package/dist/esm/crypto/core/index.js +2 -3
  107. package/dist/esm/crypto/core/keys.js +3 -4
  108. package/dist/esm/crypto/core/nonce.js +2 -0
  109. package/dist/esm/crypto/core/primitives.js +12 -22
  110. package/dist/esm/crypto/core/random.js +25 -23
  111. package/dist/esm/crypto/curves/Ed25519.js +4 -5
  112. package/dist/esm/crypto/curves/X25519.js +35 -19
  113. package/dist/esm/crypto/index.js +0 -1
  114. package/dist/esm/crypto/math/constants.js +12 -35
  115. package/dist/esm/crypto/math/edwards.js +174 -47
  116. package/dist/esm/crypto/math/fe.js +691 -0
  117. package/dist/esm/crypto/math/mod.js +10 -1
  118. package/dist/esm/index.js +1 -1
  119. package/dist/esm/infra/log/ConsoleLogger.js +18 -17
  120. package/dist/esm/infra/log/PinoLogger.js +15 -9
  121. package/dist/esm/infra/log/types.js +11 -1
  122. package/dist/esm/infra/perf/BackgroundQueue.js +478 -0
  123. package/dist/esm/infra/perf/BoundedTaskQueue.js +16 -18
  124. package/dist/esm/infra/perf/PromiseDedup.js +20 -0
  125. package/dist/esm/infra/perf/SharedExclusiveGate.js +109 -0
  126. package/dist/esm/infra/perf/StoreLock.js +77 -0
  127. package/dist/esm/media/WaMediaCrypto.js +96 -16
  128. package/dist/esm/media/WaMediaTransferClient.js +251 -91
  129. package/dist/esm/media/conn.js +10 -6
  130. package/dist/esm/media/constants.js +6 -2
  131. package/dist/esm/message/WaMessageClient.js +30 -32
  132. package/dist/esm/message/ack.js +6 -6
  133. package/dist/esm/message/addon-crypto.js +59 -0
  134. package/dist/esm/message/content.js +195 -9
  135. package/dist/esm/message/icdc.js +76 -0
  136. package/dist/esm/message/incoming.js +129 -122
  137. package/dist/esm/message/index.js +2 -0
  138. package/dist/esm/message/phash.js +3 -1
  139. package/dist/esm/message/reporting-token.js +425 -0
  140. package/dist/esm/message/use-case-secret.js +49 -0
  141. package/dist/esm/protocol/appstate.js +27 -0
  142. package/dist/esm/protocol/browser.js +10 -18
  143. package/dist/esm/protocol/constants.js +6 -3
  144. package/dist/esm/protocol/defaults.js +6 -0
  145. package/dist/esm/protocol/index.js +2 -11
  146. package/dist/esm/protocol/jid.js +133 -52
  147. package/dist/esm/protocol/media.js +3 -3
  148. package/dist/esm/protocol/message.js +61 -1
  149. package/dist/esm/protocol/nodes.js +4 -0
  150. package/dist/esm/protocol/notification.js +3 -1
  151. package/dist/esm/protocol/privacy-token.js +17 -0
  152. package/dist/esm/protocol/privacy.js +55 -0
  153. package/dist/esm/protocol/stream.js +26 -1
  154. package/dist/esm/protocol/usync.js +11 -0
  155. package/dist/esm/retry/codec.js +216 -0
  156. package/dist/esm/retry/constants.js +1 -1
  157. package/dist/esm/retry/index.js +3 -2
  158. package/dist/esm/retry/parse.js +88 -86
  159. package/dist/esm/retry/replay.js +54 -51
  160. package/dist/esm/retry/tracker.js +94 -0
  161. package/dist/esm/signal/api/SignalDeviceSyncApi.js +276 -92
  162. package/dist/esm/signal/api/SignalDigestSyncApi.js +17 -8
  163. package/dist/esm/signal/api/SignalIdentitySyncApi.js +67 -37
  164. package/dist/esm/signal/api/SignalMissingPreKeysSyncApi.js +86 -67
  165. package/dist/esm/signal/api/SignalRotateKeyApi.js +4 -2
  166. package/dist/esm/signal/api/SignalSessionSyncApi.js +36 -34
  167. package/dist/esm/signal/api/result-map.js +10 -0
  168. package/dist/esm/signal/constants.js +0 -4
  169. package/dist/esm/signal/crypto/WaAdvSignature.js +13 -9
  170. package/dist/esm/signal/{store/sqlite.js → encoding.js} +93 -60
  171. package/dist/esm/signal/group/SenderKeyChain.js +28 -23
  172. package/dist/esm/signal/group/SenderKeyCodec.js +5 -6
  173. package/dist/esm/signal/group/SenderKeyManager.js +144 -115
  174. package/dist/esm/signal/index.js +2 -0
  175. package/dist/esm/signal/registration/keygen.js +6 -2
  176. package/dist/esm/signal/registration/utils.js +1 -0
  177. package/dist/esm/signal/session/SignalProtocol.js +164 -53
  178. package/dist/esm/signal/session/SignalRatchet.js +24 -15
  179. package/dist/esm/signal/session/SignalSession.js +14 -9
  180. package/dist/esm/signal/session/resolver.js +221 -0
  181. package/dist/esm/store/contracts/privacy-token.store.js +1 -0
  182. package/dist/esm/store/createStore.js +100 -188
  183. package/dist/esm/store/index.js +1 -10
  184. package/dist/esm/store/locks/appstate.lock.js +26 -0
  185. package/dist/esm/store/locks/auth.lock.js +15 -0
  186. package/dist/esm/store/locks/contact.lock.js +20 -0
  187. package/dist/esm/store/locks/device-list.lock.js +20 -0
  188. package/dist/esm/store/locks/message.lock.js +21 -0
  189. package/dist/esm/store/locks/participants.lock.js +20 -0
  190. package/dist/esm/store/locks/privacy-token.lock.js +18 -0
  191. package/dist/esm/store/locks/retry.lock.js +29 -0
  192. package/dist/esm/store/locks/sender-key.lock.js +52 -0
  193. package/dist/esm/store/locks/signal.lock.js +63 -0
  194. package/dist/esm/store/locks/thread.lock.js +21 -0
  195. package/dist/esm/store/noop.store.js +4 -7
  196. package/dist/esm/store/providers/memory/appstate.store.js +38 -16
  197. package/dist/esm/store/providers/memory/contact.store.js +5 -0
  198. package/dist/esm/store/providers/memory/device-list.store.js +12 -34
  199. package/dist/esm/store/providers/memory/message.store.js +11 -5
  200. package/dist/esm/store/providers/memory/participants.store.js +1 -8
  201. package/dist/esm/store/providers/memory/privacy-token.store.js +43 -0
  202. package/dist/esm/store/providers/memory/retry.store.js +77 -2
  203. package/dist/esm/store/providers/memory/sender-key.store.js +11 -8
  204. package/dist/esm/store/providers/memory/signal.store.js +47 -18
  205. package/dist/esm/store/providers/memory/thread.store.js +5 -0
  206. package/dist/esm/transport/WaComms.js +28 -24
  207. package/dist/esm/transport/WaWebSocket.js +115 -18
  208. package/dist/esm/transport/binary/constants.js +0 -30
  209. package/dist/esm/transport/binary/decoder.js +8 -8
  210. package/dist/esm/transport/binary/encoder.js +10 -9
  211. package/dist/esm/transport/binary/index.js +0 -1
  212. package/dist/esm/transport/index.js +1 -0
  213. package/dist/esm/transport/keepalive/WaKeepAlive.js +2 -8
  214. package/dist/esm/transport/node/WaNodeOrchestrator.js +25 -21
  215. package/dist/esm/transport/node/WaNodeTransport.js +0 -3
  216. package/dist/esm/transport/node/builders/{accountSync.js → account-sync.js} +16 -36
  217. package/dist/esm/transport/node/builders/business.js +129 -0
  218. package/dist/esm/transport/node/builders/global.js +370 -0
  219. package/dist/esm/transport/node/builders/index.js +7 -3
  220. package/dist/esm/transport/node/builders/message.js +63 -230
  221. package/dist/esm/transport/node/builders/pairing.js +2 -27
  222. package/dist/esm/transport/node/builders/privacy-token.js +41 -0
  223. package/dist/esm/transport/node/builders/privacy.js +48 -0
  224. package/dist/esm/transport/node/builders/profile.js +70 -0
  225. package/dist/esm/transport/node/builders/retry.js +10 -22
  226. package/dist/esm/transport/node/builders/usync.js +45 -0
  227. package/dist/esm/transport/node/helpers.js +125 -5
  228. package/dist/esm/transport/node/usync.js +5 -0
  229. package/dist/esm/transport/node/xml.js +35 -14
  230. package/dist/esm/transport/noise/WaClientPayload.js +10 -10
  231. package/dist/esm/transport/noise/WaFrameCodec.js +48 -33
  232. package/dist/esm/transport/noise/WaNoiseCert.js +4 -7
  233. package/dist/esm/transport/noise/WaNoiseSession.js +77 -29
  234. package/dist/esm/transport/noise/WaNoiseSocket.js +8 -4
  235. package/dist/esm/transport/proxy.js +27 -0
  236. package/dist/esm/transport/stream/parse.js +17 -48
  237. package/dist/esm/util/bytes.js +67 -45
  238. package/dist/esm/util/coercion.js +6 -14
  239. package/dist/esm/util/index.js +5 -0
  240. package/dist/esm/util/primitives.js +40 -14
  241. package/dist/index.js +7 -1
  242. package/dist/infra/log/ConsoleLogger.js +18 -17
  243. package/dist/infra/log/PinoLogger.js +15 -9
  244. package/dist/infra/log/types.js +12 -0
  245. package/dist/infra/perf/BackgroundQueue.js +482 -0
  246. package/dist/infra/perf/BoundedTaskQueue.js +16 -18
  247. package/dist/infra/perf/PromiseDedup.js +24 -0
  248. package/dist/infra/perf/SharedExclusiveGate.js +113 -0
  249. package/dist/infra/perf/StoreLock.js +81 -0
  250. package/dist/media/WaMediaCrypto.js +95 -15
  251. package/dist/media/WaMediaTransferClient.js +284 -91
  252. package/dist/media/conn.js +10 -6
  253. package/dist/media/constants.js +6 -2
  254. package/dist/message/WaMessageClient.js +31 -33
  255. package/dist/message/ack.js +6 -6
  256. package/dist/message/addon-crypto.js +65 -0
  257. package/dist/message/content.js +198 -9
  258. package/dist/message/icdc.js +81 -0
  259. package/dist/message/incoming.js +127 -120
  260. package/dist/message/index.js +2 -0
  261. package/dist/message/phash.js +3 -1
  262. package/dist/message/reporting-token.js +429 -0
  263. package/dist/message/use-case-secret.js +55 -0
  264. package/dist/protocol/appstate.js +28 -1
  265. package/dist/protocol/browser.js +10 -18
  266. package/dist/protocol/constants.js +26 -1
  267. package/dist/protocol/defaults.js +6 -0
  268. package/dist/protocol/index.js +23 -42
  269. package/dist/protocol/jid.js +140 -52
  270. package/dist/protocol/media.js +3 -3
  271. package/dist/protocol/message.js +62 -2
  272. package/dist/protocol/nodes.js +4 -0
  273. package/dist/protocol/notification.js +3 -1
  274. package/dist/protocol/privacy-token.js +20 -0
  275. package/dist/protocol/privacy.js +58 -0
  276. package/dist/protocol/stream.js +27 -2
  277. package/dist/protocol/usync.js +14 -0
  278. package/dist/retry/codec.js +220 -0
  279. package/dist/retry/constants.js +1 -1
  280. package/dist/retry/index.js +7 -5
  281. package/dist/retry/parse.js +88 -85
  282. package/dist/retry/replay.js +52 -49
  283. package/dist/retry/tracker.js +97 -0
  284. package/dist/signal/api/SignalDeviceSyncApi.js +273 -89
  285. package/dist/signal/api/SignalDigestSyncApi.js +17 -8
  286. package/dist/signal/api/SignalIdentitySyncApi.js +66 -36
  287. package/dist/signal/api/SignalMissingPreKeysSyncApi.js +82 -63
  288. package/dist/signal/api/SignalRotateKeyApi.js +4 -2
  289. package/dist/signal/api/SignalSessionSyncApi.js +36 -34
  290. package/dist/signal/api/result-map.js +13 -0
  291. package/dist/signal/constants.js +1 -5
  292. package/dist/signal/crypto/WaAdvSignature.js +11 -7
  293. package/dist/signal/{store/sqlite.js → encoding.js} +94 -61
  294. package/dist/signal/group/SenderKeyChain.js +27 -22
  295. package/dist/signal/group/SenderKeyCodec.js +5 -6
  296. package/dist/signal/group/SenderKeyManager.js +144 -115
  297. package/dist/signal/index.js +15 -1
  298. package/dist/signal/registration/keygen.js +6 -2
  299. package/dist/signal/registration/utils.js +1 -0
  300. package/dist/signal/session/SignalProtocol.js +164 -53
  301. package/dist/signal/session/SignalRatchet.js +24 -15
  302. package/dist/signal/session/SignalSession.js +14 -9
  303. package/dist/signal/session/resolver.js +224 -0
  304. package/dist/store/contracts/privacy-token.store.js +2 -0
  305. package/dist/store/createStore.js +100 -188
  306. package/dist/store/index.js +15 -33
  307. package/dist/store/locks/appstate.lock.js +29 -0
  308. package/dist/store/locks/auth.lock.js +18 -0
  309. package/dist/store/locks/contact.lock.js +23 -0
  310. package/dist/store/locks/device-list.lock.js +23 -0
  311. package/dist/store/locks/message.lock.js +24 -0
  312. package/dist/store/locks/participants.lock.js +23 -0
  313. package/dist/store/locks/privacy-token.lock.js +21 -0
  314. package/dist/store/locks/retry.lock.js +32 -0
  315. package/dist/store/locks/sender-key.lock.js +55 -0
  316. package/dist/store/locks/signal.lock.js +66 -0
  317. package/dist/store/locks/thread.lock.js +24 -0
  318. package/dist/store/noop.store.js +4 -7
  319. package/dist/store/providers/memory/appstate.store.js +36 -14
  320. package/dist/store/providers/memory/contact.store.js +5 -0
  321. package/dist/store/providers/memory/device-list.store.js +12 -34
  322. package/dist/store/providers/memory/message.store.js +11 -5
  323. package/dist/store/providers/memory/participants.store.js +1 -8
  324. package/dist/store/providers/memory/privacy-token.store.js +47 -0
  325. package/dist/store/providers/memory/retry.store.js +77 -2
  326. package/dist/store/providers/memory/sender-key.store.js +14 -11
  327. package/dist/store/providers/memory/signal.store.js +54 -25
  328. package/dist/store/providers/memory/thread.store.js +5 -0
  329. package/dist/transport/WaComms.js +30 -26
  330. package/dist/transport/WaWebSocket.js +148 -18
  331. package/dist/transport/binary/constants.js +1 -31
  332. package/dist/transport/binary/decoder.js +8 -8
  333. package/dist/transport/binary/encoder.js +10 -9
  334. package/dist/transport/binary/index.js +0 -4
  335. package/dist/transport/index.js +7 -1
  336. package/dist/transport/keepalive/WaKeepAlive.js +1 -7
  337. package/dist/transport/node/WaNodeOrchestrator.js +25 -21
  338. package/dist/transport/node/WaNodeTransport.js +0 -3
  339. package/dist/transport/node/builders/{accountSync.js → account-sync.js} +15 -35
  340. package/dist/transport/node/builders/business.js +137 -0
  341. package/dist/transport/node/builders/global.js +375 -0
  342. package/dist/transport/node/builders/index.js +29 -17
  343. package/dist/transport/node/builders/message.js +64 -236
  344. package/dist/transport/node/builders/pairing.js +2 -29
  345. package/dist/transport/node/builders/privacy-token.js +46 -0
  346. package/dist/transport/node/builders/privacy.js +55 -0
  347. package/dist/transport/node/builders/profile.js +78 -0
  348. package/dist/transport/node/builders/retry.js +9 -21
  349. package/dist/transport/node/builders/usync.js +49 -0
  350. package/dist/transport/node/helpers.js +131 -4
  351. package/dist/transport/node/usync.js +8 -0
  352. package/dist/transport/node/xml.js +35 -14
  353. package/dist/transport/noise/WaClientPayload.js +13 -13
  354. package/dist/transport/noise/WaFrameCodec.js +47 -32
  355. package/dist/transport/noise/WaNoiseCert.js +5 -8
  356. package/dist/transport/noise/WaNoiseSession.js +77 -29
  357. package/dist/transport/noise/WaNoiseSocket.js +8 -4
  358. package/dist/transport/proxy.js +34 -0
  359. package/dist/transport/stream/parse.js +20 -52
  360. package/dist/types/appstate/WaAppStateCrypto.d.ts +0 -1
  361. package/dist/types/appstate/WaAppStateSyncClient.d.ts +5 -2
  362. package/dist/types/appstate/constants.d.ts +1 -0
  363. package/dist/types/appstate/encoding.d.ts +7 -0
  364. package/dist/types/appstate/index.d.ts +3 -3
  365. package/dist/types/appstate/utils.d.ts +0 -3
  366. package/dist/types/auth/WaAuthClient.d.ts +10 -12
  367. package/dist/types/auth/flow/WaAuthCredentialsFlow.d.ts +1 -1
  368. package/dist/types/auth/index.d.ts +0 -4
  369. package/dist/types/auth/pairing/WaQrFlow.d.ts +1 -1
  370. package/dist/types/auth/types.d.ts +7 -9
  371. package/dist/types/client/WaClient.d.ts +42 -25
  372. package/dist/types/client/WaClientFactory.d.ts +33 -26
  373. package/dist/types/client/connection/WaConnectionManager.d.ts +66 -0
  374. package/dist/types/client/connection/WaKeyShareCoordinator.d.ts +14 -0
  375. package/dist/types/client/connection/WaReceiptQueue.d.ts +13 -0
  376. package/dist/types/client/coordinators/WaAppStateMutationCoordinator.d.ts +46 -0
  377. package/dist/types/client/coordinators/WaBusinessCoordinator.d.ts +57 -0
  378. package/dist/types/client/coordinators/WaIncomingNodeCoordinator.d.ts +3 -2
  379. package/dist/types/client/coordinators/WaMessageDispatchCoordinator.d.ts +29 -38
  380. package/dist/types/client/coordinators/WaPassiveTasksCoordinator.d.ts +4 -0
  381. package/dist/types/client/coordinators/WaPrivacyCoordinator.d.ts +26 -0
  382. package/dist/types/client/coordinators/WaProfileCoordinator.d.ts +36 -0
  383. package/dist/types/client/coordinators/WaRetryCoordinator.d.ts +8 -0
  384. package/dist/types/client/coordinators/WaStreamControlCoordinator.d.ts +3 -2
  385. package/dist/types/client/coordinators/WaTrustedContactTokenCoordinator.d.ts +45 -0
  386. package/dist/types/client/dirty.d.ts +1 -0
  387. package/dist/types/client/events/devices.d.ts +20 -0
  388. package/dist/types/client/events/group.d.ts +2 -1
  389. package/dist/types/client/events/identity.d.ts +9 -0
  390. package/dist/types/client/events/privacy-token.d.ts +7 -0
  391. package/dist/types/client/history-sync.d.ts +9 -6
  392. package/dist/types/client/incoming.d.ts +3 -1
  393. package/dist/types/client/index.d.ts +1 -1
  394. package/dist/types/client/mailbox.d.ts +3 -5
  395. package/dist/types/client/messages.d.ts +1 -2
  396. package/dist/types/client/messaging/fanout.d.ts +14 -0
  397. package/dist/types/client/messaging/key-protocol.d.ts +18 -0
  398. package/dist/types/client/messaging/participants.d.ts +13 -0
  399. package/dist/types/client/persistence/WriteBehindPersistence.d.ts +34 -0
  400. package/dist/types/client/tokens/cs-token.d.ts +10 -0
  401. package/dist/types/client/tokens/tc-token.d.ts +5 -0
  402. package/dist/types/client/types.d.ts +75 -4
  403. package/dist/types/crypto/core/hkdf.d.ts +0 -6
  404. package/dist/types/crypto/core/index.d.ts +2 -3
  405. package/dist/types/crypto/core/nonce.d.ts +2 -0
  406. package/dist/types/crypto/core/primitives.d.ts +0 -1
  407. package/dist/types/crypto/core/random.d.ts +2 -7
  408. package/dist/types/crypto/index.d.ts +0 -1
  409. package/dist/types/crypto/math/constants.d.ts +4 -2
  410. package/dist/types/crypto/math/fe.d.ts +30 -0
  411. package/dist/types/crypto/math/mod.d.ts +0 -2
  412. package/dist/types/crypto/math/types.d.ts +11 -4
  413. package/dist/types/index.d.ts +5 -3
  414. package/dist/types/infra/log/ConsoleLogger.d.ts +2 -1
  415. package/dist/types/infra/log/PinoLogger.d.ts +1 -1
  416. package/dist/types/infra/log/types.d.ts +1 -0
  417. package/dist/types/infra/perf/BackgroundQueue.d.ts +58 -0
  418. package/dist/types/infra/perf/BoundedTaskQueue.d.ts +1 -1
  419. package/dist/types/infra/perf/PromiseDedup.d.ts +4 -0
  420. package/dist/types/infra/perf/SharedExclusiveGate.d.ts +17 -0
  421. package/dist/types/infra/perf/StoreLock.d.ts +10 -0
  422. package/dist/types/media/WaMediaCrypto.d.ts +3 -2
  423. package/dist/types/media/WaMediaTransferClient.d.ts +16 -15
  424. package/dist/types/media/constants.d.ts +1 -1
  425. package/dist/types/media/index.d.ts +1 -1
  426. package/dist/types/media/types.d.ts +15 -2
  427. package/dist/types/message/addon-crypto.d.ts +25 -0
  428. package/dist/types/message/content.d.ts +8 -0
  429. package/dist/types/message/icdc.d.ts +13 -0
  430. package/dist/types/message/index.d.ts +2 -0
  431. package/dist/types/message/reporting-token.d.ts +18 -0
  432. package/dist/types/message/types.d.ts +45 -6
  433. package/dist/types/message/use-case-secret.d.ts +20 -0
  434. package/dist/types/protocol/appstate.d.ts +47 -0
  435. package/dist/types/protocol/constants.d.ts +8 -3
  436. package/dist/types/protocol/defaults.d.ts +6 -0
  437. package/dist/types/protocol/index.d.ts +2 -11
  438. package/dist/types/protocol/jid.d.ts +22 -5
  439. package/dist/types/protocol/message.d.ts +60 -0
  440. package/dist/types/protocol/nodes.d.ts +4 -0
  441. package/dist/types/protocol/notification.d.ts +2 -0
  442. package/dist/types/protocol/privacy-token.d.ts +17 -0
  443. package/dist/types/protocol/privacy.d.ts +75 -0
  444. package/dist/types/protocol/stream.d.ts +30 -0
  445. package/dist/types/protocol/usync.d.ts +11 -0
  446. package/dist/types/retry/codec.d.ts +3 -0
  447. package/dist/types/retry/index.d.ts +4 -3
  448. package/dist/types/retry/parse.d.ts +5 -2
  449. package/dist/types/retry/replay.d.ts +0 -4
  450. package/dist/types/retry/tracker.d.ts +20 -0
  451. package/dist/types/retry/types.d.ts +10 -4
  452. package/dist/types/signal/api/SignalDeviceSyncApi.d.ts +15 -2
  453. package/dist/types/signal/api/SignalDigestSyncApi.d.ts +6 -0
  454. package/dist/types/signal/api/SignalIdentitySyncApi.d.ts +2 -0
  455. package/dist/types/signal/api/SignalRotateKeyApi.d.ts +4 -5
  456. package/dist/types/signal/api/SignalSessionSyncApi.d.ts +8 -6
  457. package/dist/types/signal/api/result-map.d.ts +1 -0
  458. package/dist/types/signal/constants.d.ts +0 -3
  459. package/dist/types/signal/{store/sqlite.d.ts → encoding.d.ts} +3 -3
  460. package/dist/types/signal/group/SenderKeyCodec.d.ts +4 -6
  461. package/dist/types/signal/group/SenderKeyManager.d.ts +10 -5
  462. package/dist/types/signal/index.d.ts +3 -0
  463. package/dist/types/signal/session/SignalProtocol.d.ts +19 -4
  464. package/dist/types/signal/session/resolver.d.ts +22 -0
  465. package/dist/types/store/contracts/appstate.store.d.ts +4 -1
  466. package/dist/types/store/contracts/contact.store.d.ts +1 -0
  467. package/dist/types/store/contracts/device-list.store.d.ts +0 -3
  468. package/dist/types/store/contracts/message.store.d.ts +1 -0
  469. package/dist/types/store/contracts/participants.store.d.ts +0 -1
  470. package/dist/types/store/contracts/privacy-token.store.d.ts +16 -0
  471. package/dist/types/store/contracts/retry.store.d.ts +7 -0
  472. package/dist/types/store/contracts/sender-key.store.d.ts +0 -1
  473. package/dist/types/store/contracts/signal.store.d.ts +13 -0
  474. package/dist/types/store/contracts/thread.store.d.ts +1 -0
  475. package/dist/types/store/createStore.d.ts +1 -1
  476. package/dist/types/store/index.d.ts +5 -13
  477. package/dist/types/store/locks/appstate.lock.d.ts +3 -0
  478. package/dist/types/store/locks/auth.lock.d.ts +3 -0
  479. package/dist/types/store/locks/contact.lock.d.ts +3 -0
  480. package/dist/types/store/locks/device-list.lock.d.ts +2 -0
  481. package/dist/types/store/locks/message.lock.d.ts +3 -0
  482. package/dist/types/store/locks/participants.lock.d.ts +2 -0
  483. package/dist/types/store/locks/privacy-token.lock.d.ts +2 -0
  484. package/dist/types/store/locks/retry.lock.d.ts +2 -0
  485. package/dist/types/store/locks/sender-key.lock.d.ts +3 -0
  486. package/dist/types/store/locks/signal.lock.d.ts +3 -0
  487. package/dist/types/store/locks/thread.lock.d.ts +3 -0
  488. package/dist/types/store/providers/memory/appstate.store.d.ts +3 -1
  489. package/dist/types/store/providers/memory/contact.store.d.ts +1 -0
  490. package/dist/types/store/providers/memory/device-list.store.d.ts +0 -3
  491. package/dist/types/store/providers/memory/message.store.d.ts +1 -0
  492. package/dist/types/store/providers/memory/participants.store.d.ts +0 -1
  493. package/dist/types/store/providers/memory/privacy-token.store.d.ts +13 -0
  494. package/dist/types/store/providers/memory/retry.store.d.ts +8 -0
  495. package/dist/types/store/providers/memory/sender-key.store.d.ts +0 -1
  496. package/dist/types/store/providers/memory/signal.store.d.ts +8 -1
  497. package/dist/types/store/providers/memory/thread.store.d.ts +1 -0
  498. package/dist/types/store/types.d.ts +49 -58
  499. package/dist/types/transport/WaWebSocket.d.ts +3 -1
  500. package/dist/types/transport/binary/constants.d.ts +0 -30
  501. package/dist/types/transport/binary/index.d.ts +0 -1
  502. package/dist/types/transport/index.d.ts +2 -1
  503. package/dist/types/transport/keepalive/WaKeepAlive.d.ts +0 -1
  504. package/dist/types/transport/node/WaNodeOrchestrator.d.ts +3 -4
  505. package/dist/types/transport/node/WaNodeTransport.d.ts +0 -9
  506. package/dist/types/transport/node/builders/business.d.ts +29 -0
  507. package/dist/types/transport/node/builders/global.d.ts +102 -0
  508. package/dist/types/transport/node/builders/group.d.ts +4 -6
  509. package/dist/types/transport/node/builders/index.d.ts +7 -3
  510. package/dist/types/transport/node/builders/message.d.ts +20 -30
  511. package/dist/types/transport/node/builders/pairing.d.ts +0 -2
  512. package/dist/types/transport/node/builders/privacy-token.d.ts +9 -0
  513. package/dist/types/transport/node/builders/privacy.d.ts +7 -0
  514. package/dist/types/transport/node/builders/profile.d.ts +8 -0
  515. package/dist/types/transport/node/builders/retry.d.ts +2 -5
  516. package/dist/types/transport/node/builders/usync.d.ts +21 -0
  517. package/dist/types/transport/node/helpers.d.ts +13 -0
  518. package/dist/types/transport/node/usync.d.ts +2 -0
  519. package/dist/types/transport/noise/WaFrameCodec.d.ts +3 -0
  520. package/dist/types/transport/noise/WaNoiseSession.d.ts +4 -2
  521. package/dist/types/transport/noise/WaNoiseSocket.d.ts +4 -2
  522. package/dist/types/transport/proxy.d.ts +6 -0
  523. package/dist/types/transport/stream/parse.d.ts +0 -1
  524. package/dist/types/transport/types.d.ts +18 -1
  525. package/dist/types/util/bytes.d.ts +5 -0
  526. package/dist/types/util/index.d.ts +5 -0
  527. package/dist/types/util/primitives.d.ts +2 -0
  528. package/dist/util/bytes.js +72 -46
  529. package/dist/util/coercion.js +6 -14
  530. package/dist/util/index.js +23 -0
  531. package/dist/util/primitives.js +42 -14
  532. package/package.json +52 -9
  533. package/proto/index.js +1 -1
  534. package/dist/crypto/core/constants.js +0 -4
  535. package/dist/crypto/core/encoding.js +0 -29
  536. package/dist/esm/crypto/core/constants.js +0 -1
  537. package/dist/esm/crypto/core/encoding.js +0 -25
  538. package/dist/esm/retry/outbound.js +0 -83
  539. package/dist/esm/store/providers/sqlite/BaseSqliteStore.js +0 -37
  540. package/dist/esm/store/providers/sqlite/appstate.store.js +0 -169
  541. package/dist/esm/store/providers/sqlite/auth.store.js +0 -176
  542. package/dist/esm/store/providers/sqlite/connection.js +0 -240
  543. package/dist/esm/store/providers/sqlite/contact.store.js +0 -61
  544. package/dist/esm/store/providers/sqlite/device-list.store.js +0 -155
  545. package/dist/esm/store/providers/sqlite/message.store.js +0 -119
  546. package/dist/esm/store/providers/sqlite/migrations.js +0 -347
  547. package/dist/esm/store/providers/sqlite/participants.store.js +0 -85
  548. package/dist/esm/store/providers/sqlite/retry.store.js +0 -144
  549. package/dist/esm/store/providers/sqlite/sender-key.store.js +0 -203
  550. package/dist/esm/store/providers/sqlite/signal.store.js +0 -353
  551. package/dist/esm/store/providers/sqlite/thread.store.js +0 -72
  552. package/dist/esm/util/base64.js +0 -18
  553. package/dist/esm/util/signal-address.js +0 -5
  554. package/dist/retry/outbound.js +0 -88
  555. package/dist/store/providers/sqlite/BaseSqliteStore.js +0 -41
  556. package/dist/store/providers/sqlite/appstate.store.js +0 -173
  557. package/dist/store/providers/sqlite/auth.store.js +0 -180
  558. package/dist/store/providers/sqlite/connection.js +0 -276
  559. package/dist/store/providers/sqlite/contact.store.js +0 -65
  560. package/dist/store/providers/sqlite/device-list.store.js +0 -159
  561. package/dist/store/providers/sqlite/message.store.js +0 -123
  562. package/dist/store/providers/sqlite/migrations.js +0 -350
  563. package/dist/store/providers/sqlite/participants.store.js +0 -89
  564. package/dist/store/providers/sqlite/retry.store.js +0 -148
  565. package/dist/store/providers/sqlite/sender-key.store.js +0 -207
  566. package/dist/store/providers/sqlite/signal.store.js +0 -357
  567. package/dist/store/providers/sqlite/thread.store.js +0 -76
  568. package/dist/types/appstate/store/sqlite.d.ts +0 -21
  569. package/dist/types/crypto/core/constants.d.ts +0 -1
  570. package/dist/types/crypto/core/encoding.d.ts +0 -11
  571. package/dist/types/retry/outbound.d.ts +0 -4
  572. package/dist/types/store/providers/sqlite/BaseSqliteStore.d.ts +0 -12
  573. package/dist/types/store/providers/sqlite/appstate.store.d.ts +0 -15
  574. package/dist/types/store/providers/sqlite/auth.store.d.ts +0 -10
  575. package/dist/types/store/providers/sqlite/connection.d.ts +0 -10
  576. package/dist/types/store/providers/sqlite/contact.store.d.ts +0 -10
  577. package/dist/types/store/providers/sqlite/device-list.store.d.ts +0 -18
  578. package/dist/types/store/providers/sqlite/message.store.d.ts +0 -11
  579. package/dist/types/store/providers/sqlite/migrations.d.ts +0 -3
  580. package/dist/types/store/providers/sqlite/participants.store.d.ts +0 -13
  581. package/dist/types/store/providers/sqlite/retry.store.d.ts +0 -16
  582. package/dist/types/store/providers/sqlite/sender-key.store.d.ts +0 -25
  583. package/dist/types/store/providers/sqlite/signal.store.d.ts +0 -46
  584. package/dist/types/store/providers/sqlite/thread.store.d.ts +0 -11
  585. package/dist/types/util/base64.d.ts +0 -4
  586. package/dist/types/util/signal-address.d.ts +0 -2
  587. package/dist/util/base64.js +0 -24
  588. package/dist/util/signal-address.js +0 -8
  589. /package/dist/types/transport/node/builders/{accountSync.d.ts → account-sync.d.ts} +0 -0
@@ -0,0 +1,22 @@
1
+ import type { Logger } from '../../infra/log/types';
2
+ import type { SignalIdentitySyncApi } from '../api/SignalIdentitySyncApi';
3
+ import type { SignalSessionSyncApi } from '../api/SignalSessionSyncApi';
4
+ import type { SignalProtocol } from '../session/SignalProtocol';
5
+ import type { SignalAddress, SignalSessionRecord } from '../types';
6
+ import type { WaSignalStore } from '../../store/contracts/signal.store';
7
+ export interface SignalResolvedSessionTarget {
8
+ readonly jid: string;
9
+ readonly address: SignalAddress;
10
+ readonly session: SignalSessionRecord;
11
+ }
12
+ export type SignalSessionResolver = {
13
+ ensureSession(address: SignalAddress, jid: string, expectedIdentity?: Uint8Array, reasonIdentity?: boolean): Promise<void>;
14
+ ensureSessionsBatch(targetJids: readonly string[], expectedIdentityByJid?: ReadonlyMap<string, Uint8Array>): Promise<readonly SignalResolvedSessionTarget[]>;
15
+ };
16
+ export declare function createSignalSessionResolver(options: {
17
+ readonly signalProtocol: SignalProtocol;
18
+ readonly signalStore: WaSignalStore;
19
+ readonly signalIdentitySync: SignalIdentitySyncApi;
20
+ readonly signalSessionSync: SignalSessionSyncApi;
21
+ readonly logger: Logger;
22
+ }): SignalSessionResolver;
@@ -1,5 +1,6 @@
1
1
  import type { AppStateCollectionName, WaAppStateStoreData, WaAppStateSyncKey } from '../../appstate/types';
2
2
  export interface WaAppStateCollectionStoreState {
3
+ readonly initialized: boolean;
3
4
  readonly version: number;
4
5
  readonly hash: Uint8Array;
5
6
  readonly indexValueMap: ReadonlyMap<string, Uint8Array>;
@@ -13,10 +14,12 @@ export interface WaAppStateCollectionStateUpdate {
13
14
  export interface WaAppStateStore {
14
15
  exportData(): Promise<WaAppStateStoreData>;
15
16
  upsertSyncKeys(keys: readonly WaAppStateSyncKey[]): Promise<number>;
16
- getSyncKey(keyId: Uint8Array): Promise<WaAppStateSyncKey | null>;
17
+ getSyncKeysBatch(keyIds: readonly Uint8Array[]): Promise<readonly (WaAppStateSyncKey | null)[]>;
17
18
  getSyncKeyData(keyId: Uint8Array): Promise<Uint8Array | null>;
19
+ getSyncKeyDataBatch(keyIds: readonly Uint8Array[]): Promise<readonly (Uint8Array | null)[]>;
18
20
  getActiveSyncKey(): Promise<WaAppStateSyncKey | null>;
19
21
  getCollectionState(collection: AppStateCollectionName): Promise<WaAppStateCollectionStoreState>;
22
+ getCollectionStates(collections: readonly AppStateCollectionName[]): Promise<readonly WaAppStateCollectionStoreState[]>;
20
23
  setCollectionStates(updates: readonly WaAppStateCollectionStateUpdate[]): Promise<void>;
21
24
  clear(): Promise<void>;
22
25
  }
@@ -8,6 +8,7 @@ export interface WaStoredContactRecord {
8
8
  }
9
9
  export interface WaContactStore {
10
10
  upsert(record: WaStoredContactRecord): Promise<void>;
11
+ upsertBatch(records: readonly WaStoredContactRecord[]): Promise<void>;
11
12
  getByJid(jid: string): Promise<WaStoredContactRecord | null>;
12
13
  deleteByJid(jid: string): Promise<number>;
13
14
  clear(): Promise<void>;
@@ -4,11 +4,8 @@ export interface WaDeviceListSnapshot {
4
4
  readonly updatedAtMs: number;
5
5
  }
6
6
  export interface WaDeviceListStore {
7
- getTtlMs(): number;
8
7
  destroy?(): Promise<void>;
9
- upsertUserDevices(snapshot: WaDeviceListSnapshot): Promise<void>;
10
8
  upsertUserDevicesBatch(snapshots: readonly WaDeviceListSnapshot[]): Promise<void>;
11
- getUserDevices(userJid: string, nowMs?: number): Promise<WaDeviceListSnapshot | null>;
12
9
  getUserDevicesBatch(userJids: readonly string[], nowMs?: number): Promise<readonly (WaDeviceListSnapshot | null)[]>;
13
10
  deleteUserDevices(userJid: string): Promise<number>;
14
11
  cleanupExpired(nowMs: number): Promise<number>;
@@ -11,6 +11,7 @@ export interface WaStoredMessageRecord {
11
11
  }
12
12
  export interface WaMessageStore {
13
13
  upsert(record: WaStoredMessageRecord): Promise<void>;
14
+ upsertBatch(records: readonly WaStoredMessageRecord[]): Promise<void>;
14
15
  getById(id: string): Promise<WaStoredMessageRecord | null>;
15
16
  listByThread(threadJid: string, limit?: number, beforeTimestampMs?: number): Promise<readonly WaStoredMessageRecord[]>;
16
17
  deleteById(id: string): Promise<number>;
@@ -4,7 +4,6 @@ export interface WaParticipantsSnapshot {
4
4
  readonly updatedAtMs: number;
5
5
  }
6
6
  export interface WaParticipantsStore {
7
- getTtlMs(): number;
8
7
  destroy?(): Promise<void>;
9
8
  upsertGroupParticipants(snapshot: WaParticipantsSnapshot): Promise<void>;
10
9
  getGroupParticipants(groupJid: string, nowMs?: number): Promise<WaParticipantsSnapshot | null>;
@@ -0,0 +1,16 @@
1
+ export interface WaStoredPrivacyTokenRecord {
2
+ readonly jid: string;
3
+ readonly tcToken?: Uint8Array;
4
+ readonly tcTokenTimestamp?: number;
5
+ readonly tcTokenSenderTimestamp?: number;
6
+ readonly nctSalt?: Uint8Array;
7
+ readonly updatedAtMs: number;
8
+ }
9
+ export interface WaPrivacyTokenStore {
10
+ upsert(record: WaStoredPrivacyTokenRecord): Promise<void>;
11
+ upsertBatch(records: readonly WaStoredPrivacyTokenRecord[]): Promise<void>;
12
+ getByJid(jid: string): Promise<WaStoredPrivacyTokenRecord | null>;
13
+ deleteByJid(jid: string): Promise<number>;
14
+ clear(): Promise<void>;
15
+ destroy?(): Promise<void>;
16
+ }
@@ -1,10 +1,17 @@
1
1
  import type { WaRetryOutboundMessageRecord, WaRetryOutboundState } from '../../retry/types';
2
2
  export interface WaRetryStore {
3
+ getOutboundRequesterStatus(messageId: string, requesterDeviceJid: string): Promise<{
4
+ readonly eligible: boolean;
5
+ readonly delivered: boolean;
6
+ } | null>;
3
7
  getTtlMs?(): number;
8
+ supportsRawReplayPayload?(): boolean;
4
9
  destroy?(): Promise<void>;
5
10
  upsertOutboundMessage(record: WaRetryOutboundMessageRecord): Promise<void>;
11
+ deleteOutboundMessage(messageId: string): Promise<number>;
6
12
  getOutboundMessage(messageId: string): Promise<WaRetryOutboundMessageRecord | null>;
7
13
  updateOutboundMessageState(messageId: string, state: WaRetryOutboundState, updatedAtMs: number, expiresAtMs: number): Promise<void>;
14
+ markOutboundRequesterDelivered(messageId: string, requesterDeviceJid: string, updatedAtMs: number, expiresAtMs: number): Promise<void>;
8
15
  incrementInboundCounter(messageId: string, requesterJid: string, updatedAtMs: number, expiresAtMs: number): Promise<number>;
9
16
  cleanupExpired(nowMs: number): Promise<number>;
10
17
  clear(): Promise<void>;
@@ -8,7 +8,6 @@ export interface WaSenderKeyStore {
8
8
  readonly skDistribList: readonly SenderKeyDistributionRecord[];
9
9
  }>;
10
10
  getDeviceSenderKey(groupId: string, sender: SignalAddress): Promise<SenderKeyRecord | null>;
11
- getDeviceSenderKeyDistribution(groupId: string, sender: SignalAddress): Promise<SenderKeyDistributionRecord | null>;
12
11
  getDeviceSenderKeyDistributions(groupId: string, senders: readonly SignalAddress[]): Promise<readonly (SenderKeyDistributionRecord | null)[]>;
13
12
  deleteDeviceSenderKey(target: SignalAddress, groupId?: string): Promise<number>;
14
13
  markForgetSenderKey(groupId: string, participants: readonly SignalAddress[]): Promise<number>;
@@ -1,4 +1,10 @@
1
1
  import type { PreKeyRecord, RegistrationInfo, SignalAddress, SignalSessionRecord, SignedPreKeyRecord } from '../../signal/types';
2
+ export interface WaSignalMetaSnapshot {
3
+ readonly serverHasPreKeys: boolean;
4
+ readonly signedPreKeyRotationTs: number | null;
5
+ readonly registrationInfo: RegistrationInfo | null;
6
+ readonly signedPreKey: SignedPreKeyRecord | null;
7
+ }
2
8
  export interface WaSignalStore {
3
9
  getRegistrationInfo(): Promise<RegistrationInfo | null>;
4
10
  setRegistrationInfo(info: RegistrationInfo): Promise<void>;
@@ -16,12 +22,19 @@ export interface WaSignalStore {
16
22
  markKeyAsUploaded(keyId: number): Promise<void>;
17
23
  setServerHasPreKeys(value: boolean): Promise<void>;
18
24
  getServerHasPreKeys(): Promise<boolean>;
25
+ getSignalMeta(): Promise<WaSignalMetaSnapshot>;
19
26
  hasSession(address: SignalAddress): Promise<boolean>;
20
27
  hasSessions(addresses: readonly SignalAddress[]): Promise<readonly boolean[]>;
21
28
  getSession(address: SignalAddress): Promise<SignalSessionRecord | null>;
29
+ getSessionsBatch(addresses: readonly SignalAddress[]): Promise<readonly (SignalSessionRecord | null)[]>;
22
30
  setSession(address: SignalAddress, session: SignalSessionRecord): Promise<void>;
31
+ setSessionsBatch(entries: readonly {
32
+ readonly address: SignalAddress;
33
+ readonly session: SignalSessionRecord;
34
+ }[]): Promise<void>;
23
35
  deleteSession(address: SignalAddress): Promise<void>;
24
36
  getRemoteIdentity(address: SignalAddress): Promise<Uint8Array | null>;
37
+ getRemoteIdentities(addresses: readonly SignalAddress[]): Promise<readonly (Uint8Array | null)[]>;
25
38
  setRemoteIdentity(address: SignalAddress, identityKey: Uint8Array): Promise<void>;
26
39
  setRemoteIdentities(entries: readonly {
27
40
  readonly address: SignalAddress;
@@ -10,6 +10,7 @@ export interface WaStoredThreadRecord {
10
10
  }
11
11
  export interface WaThreadStore {
12
12
  upsert(record: WaStoredThreadRecord): Promise<void>;
13
+ upsertBatch(records: readonly WaStoredThreadRecord[]): Promise<void>;
13
14
  getByJid(jid: string): Promise<WaStoredThreadRecord | null>;
14
15
  list(limit?: number): Promise<readonly WaStoredThreadRecord[]>;
15
16
  deleteByJid(jid: string): Promise<number>;
@@ -1,2 +1,2 @@
1
1
  import type { WaCreateStoreOptions, WaStore } from './types';
2
- export declare function createStore(options: WaCreateStoreOptions): WaStore;
2
+ export declare function createStore<B extends string>(options: WaCreateStoreOptions<B>): WaStore;
@@ -1,22 +1,16 @@
1
- export type { WaCreateStoreCustomCacheProviders, WaCreateStoreCustomProviders, WaCreateStoreOptions, WaSqliteDriver, WaSqliteStorageOptions, WaStoreSqliteBatchSizeSelection, WaStoreMemoryLimitSelection, WaStoreCacheProviderSelection, WaStoreCacheTtlSelection, WaStore, WaStoreDomainValueOrFactory, WaStoreProviderSelection, WaStoreSession } from './types';
2
- export { WaAuthSqliteStore } from './providers/sqlite/auth.store';
3
- export { WaAppStateSqliteStore } from './providers/sqlite/appstate.store';
1
+ export type { WaCreateStoreOptions, WaStore, WaStoreBackend, WaCacheDomain, WaStoreDomain, WaStoreMemoryLimitSelection, WaStoreSession } from './types';
4
2
  export { createStore } from './createStore';
5
3
  export type { WaAuthStore } from './contracts/auth.store';
6
4
  export type { WaContactStore, WaStoredContactRecord } from './contracts/contact.store';
7
5
  export type { WaDeviceListSnapshot, WaDeviceListStore } from './contracts/device-list.store';
8
6
  export type { WaMessageStore, WaStoredMessageRecord } from './contracts/message.store';
9
7
  export type { WaParticipantsSnapshot, WaParticipantsStore } from './contracts/participants.store';
10
- export type { WaAppStateCollectionStoreState, WaAppStateStore } from './contracts/appstate.store';
8
+ export type { WaAppStateCollectionStateUpdate, WaAppStateCollectionStoreState, WaAppStateStore } from './contracts/appstate.store';
11
9
  export type { WaSenderKeyStore } from './contracts/sender-key.store';
12
- export type { WaSignalStore } from './contracts/signal.store';
10
+ export type { WaSignalMetaSnapshot, WaSignalStore } from './contracts/signal.store';
13
11
  export type { WaRetryStore } from './contracts/retry.store';
14
12
  export type { WaStoredThreadRecord, WaThreadStore } from './contracts/thread.store';
15
- export { WaSignalSqliteStore } from './providers/sqlite/signal.store';
16
- export { SenderKeySqliteStore } from './providers/sqlite/sender-key.store';
17
- export { WaRetrySqliteStore } from './providers/sqlite/retry.store';
18
- export { WaParticipantsSqliteStore } from './providers/sqlite/participants.store';
19
- export { WaDeviceListSqliteStore } from './providers/sqlite/device-list.store';
13
+ export type { WaPrivacyTokenStore, WaStoredPrivacyTokenRecord } from './contracts/privacy-token.store';
20
14
  export { WaAppStateMemoryStore } from './providers/memory/appstate.store';
21
15
  export { WaSignalMemoryStore } from './providers/memory/signal.store';
22
16
  export { SenderKeyMemoryStore } from './providers/memory/sender-key.store';
@@ -26,6 +20,4 @@ export { WaDeviceListMemoryStore } from './providers/memory/device-list.store';
26
20
  export { WaContactMemoryStore } from './providers/memory/contact.store';
27
21
  export { WaMessageMemoryStore } from './providers/memory/message.store';
28
22
  export { WaThreadMemoryStore } from './providers/memory/thread.store';
29
- export { WaContactSqliteStore } from './providers/sqlite/contact.store';
30
- export { WaMessageSqliteStore } from './providers/sqlite/message.store';
31
- export { WaThreadSqliteStore } from './providers/sqlite/thread.store';
23
+ export { WaPrivacyTokenMemoryStore } from './providers/memory/privacy-token.store';
@@ -0,0 +1,3 @@
1
+ import type { WaAppStateStore } from '../contracts/appstate.store';
2
+ import type { WithDestroyLifecycle } from '../types';
3
+ export declare function withAppStateLock(store: WaAppStateStore): WithDestroyLifecycle<WaAppStateStore>;
@@ -0,0 +1,3 @@
1
+ import type { WaAuthStore } from '../contracts/auth.store';
2
+ import type { WithDestroyLifecycle } from '../types';
3
+ export declare function withAuthLock(store: WaAuthStore): WithDestroyLifecycle<WaAuthStore>;
@@ -0,0 +1,3 @@
1
+ import type { WaContactStore } from '../contracts/contact.store';
2
+ import type { WithDestroyLifecycle } from '../types';
3
+ export declare function withContactLock(store: WaContactStore): WithDestroyLifecycle<WaContactStore>;
@@ -0,0 +1,2 @@
1
+ import type { WaDeviceListStore } from '../contracts/device-list.store';
2
+ export declare function withDeviceListLock(store: WaDeviceListStore): WaDeviceListStore;
@@ -0,0 +1,3 @@
1
+ import type { WaMessageStore } from '../contracts/message.store';
2
+ import type { WithDestroyLifecycle } from '../types';
3
+ export declare function withMessageLock(store: WaMessageStore): WithDestroyLifecycle<WaMessageStore>;
@@ -0,0 +1,2 @@
1
+ import type { WaParticipantsStore } from '../contracts/participants.store';
2
+ export declare function withParticipantsLock(store: WaParticipantsStore): WaParticipantsStore;
@@ -0,0 +1,2 @@
1
+ import type { WaPrivacyTokenStore } from '../contracts/privacy-token.store';
2
+ export declare function withPrivacyTokenLock(store: WaPrivacyTokenStore): WaPrivacyTokenStore;
@@ -0,0 +1,2 @@
1
+ import type { WaRetryStore } from '../contracts/retry.store';
2
+ export declare function withRetryLock(store: WaRetryStore): WaRetryStore;
@@ -0,0 +1,3 @@
1
+ import type { WaSenderKeyStore } from '../contracts/sender-key.store';
2
+ import type { WithDestroyLifecycle } from '../types';
3
+ export declare function withSenderKeyLock(store: WaSenderKeyStore): WithDestroyLifecycle<WaSenderKeyStore>;
@@ -0,0 +1,3 @@
1
+ import type { WaSignalStore } from '../contracts/signal.store';
2
+ import type { WithDestroyLifecycle } from '../types';
3
+ export declare function withSignalLock(store: WaSignalStore): WithDestroyLifecycle<WaSignalStore>;
@@ -0,0 +1,3 @@
1
+ import type { WaThreadStore } from '../contracts/thread.store';
2
+ import type { WithDestroyLifecycle } from '../types';
3
+ export declare function withThreadLock(store: WaThreadStore): WithDestroyLifecycle<WaThreadStore>;
@@ -12,10 +12,12 @@ export declare class WaAppStateMemoryStore implements WaAppStateStore {
12
12
  constructor(initial?: WaAppStateStoreData, options?: WaAppStateMemoryStoreOptions);
13
13
  exportData(): Promise<WaAppStateStoreData>;
14
14
  upsertSyncKeys(keys: readonly WaAppStateSyncKey[]): Promise<number>;
15
- getSyncKey(keyId: Uint8Array): Promise<WaAppStateSyncKey | null>;
15
+ getSyncKeysBatch(keyIds: readonly Uint8Array[]): Promise<readonly (WaAppStateSyncKey | null)[]>;
16
16
  getSyncKeyData(keyId: Uint8Array): Promise<Uint8Array | null>;
17
+ getSyncKeyDataBatch(keyIds: readonly Uint8Array[]): Promise<readonly (Uint8Array | null)[]>;
17
18
  getActiveSyncKey(): Promise<WaAppStateSyncKey | null>;
18
19
  getCollectionState(collection: AppStateCollectionName): Promise<WaAppStateCollectionStoreState>;
20
+ getCollectionStates(collections: readonly AppStateCollectionName[]): Promise<readonly WaAppStateCollectionStoreState[]>;
19
21
  setCollectionStates(updates: readonly WaAppStateCollectionStateUpdate[]): Promise<void>;
20
22
  clear(): Promise<void>;
21
23
  }
@@ -7,6 +7,7 @@ export declare class WaContactMemoryStore implements Contract {
7
7
  private readonly maxContacts;
8
8
  constructor(options?: WaContactMemoryStoreOptions);
9
9
  upsert(record: WaStoredContactRecord): Promise<void>;
10
+ upsertBatch(records: readonly WaStoredContactRecord[]): Promise<void>;
10
11
  getByJid(jid: string): Promise<WaStoredContactRecord | null>;
11
12
  deleteByJid(jid: string): Promise<number>;
12
13
  clear(): Promise<void>;
@@ -8,10 +8,7 @@ export declare class WaDeviceListMemoryStore implements WaDeviceListStore {
8
8
  private readonly maxUsers;
9
9
  private readonly cleanupTimer;
10
10
  constructor(ttlMs?: number, options?: WaDeviceListMemoryStoreOptions);
11
- getTtlMs(): number;
12
- upsertUserDevices(snapshot: WaDeviceListSnapshot): Promise<void>;
13
11
  upsertUserDevicesBatch(snapshots: readonly WaDeviceListSnapshot[]): Promise<void>;
14
- getUserDevices(userJid: string, nowMs?: number): Promise<WaDeviceListSnapshot | null>;
15
12
  getUserDevicesBatch(userJids: readonly string[], nowMs?: number): Promise<readonly (WaDeviceListSnapshot | null)[]>;
16
13
  deleteUserDevices(userJid: string): Promise<number>;
17
14
  cleanupExpired(nowMs: number): Promise<number>;
@@ -7,6 +7,7 @@ export declare class WaMessageMemoryStore implements Contract {
7
7
  private readonly maxMessages;
8
8
  constructor(options?: WaMessageMemoryStoreOptions);
9
9
  upsert(record: WaStoredMessageRecord): Promise<void>;
10
+ upsertBatch(records: readonly WaStoredMessageRecord[]): Promise<void>;
10
11
  getById(id: string): Promise<WaStoredMessageRecord | null>;
11
12
  listByThread(threadJid: string, limit?: number, beforeTimestampMs?: number): Promise<readonly WaStoredMessageRecord[]>;
12
13
  deleteById(id: string): Promise<number>;
@@ -8,7 +8,6 @@ export declare class WaParticipantsMemoryStore implements WaParticipantsStore {
8
8
  private readonly maxGroups;
9
9
  private readonly cleanupTimer;
10
10
  constructor(ttlMs?: number, options?: WaParticipantsMemoryStoreOptions);
11
- getTtlMs(): number;
12
11
  upsertGroupParticipants(snapshot: WaParticipantsSnapshot): Promise<void>;
13
12
  getGroupParticipants(groupJid: string, nowMs?: number): Promise<WaParticipantsSnapshot | null>;
14
13
  deleteGroupParticipants(groupJid: string): Promise<number>;
@@ -0,0 +1,13 @@
1
+ import type { WaPrivacyTokenStore, WaStoredPrivacyTokenRecord } from '../../contracts/privacy-token.store';
2
+ export declare class WaPrivacyTokenMemoryStore implements WaPrivacyTokenStore {
3
+ private readonly records;
4
+ private readonly maxEntries;
5
+ constructor(maxEntries?: number);
6
+ upsert(record: WaStoredPrivacyTokenRecord): Promise<void>;
7
+ upsertBatch(records: readonly WaStoredPrivacyTokenRecord[]): Promise<void>;
8
+ getByJid(jid: string): Promise<WaStoredPrivacyTokenRecord | null>;
9
+ deleteByJid(jid: string): Promise<number>;
10
+ clear(): Promise<void>;
11
+ destroy(): Promise<void>;
12
+ private mergeRecord;
13
+ }
@@ -2,14 +2,22 @@ import type { WaRetryOutboundMessageRecord, WaRetryOutboundState } from '../../.
2
2
  import type { WaRetryStore } from '../../contracts/retry.store';
3
3
  export declare class WaRetryMemoryStore implements WaRetryStore {
4
4
  private readonly outboundMessages;
5
+ private readonly eligibleSets;
5
6
  private readonly inboundCounters;
6
7
  private readonly ttlMs;
7
8
  private readonly cleanupTimer;
8
9
  constructor(ttlMs?: number);
9
10
  getTtlMs(): number;
11
+ supportsRawReplayPayload(): boolean;
12
+ getOutboundRequesterStatus(messageId: string, requesterDeviceJid: string): Promise<{
13
+ readonly eligible: boolean;
14
+ readonly delivered: boolean;
15
+ } | null>;
10
16
  upsertOutboundMessage(record: WaRetryOutboundMessageRecord): Promise<void>;
17
+ deleteOutboundMessage(messageId: string): Promise<number>;
11
18
  getOutboundMessage(messageId: string): Promise<WaRetryOutboundMessageRecord | null>;
12
19
  updateOutboundMessageState(messageId: string, state: WaRetryOutboundState, updatedAtMs: number, expiresAtMs: number): Promise<void>;
20
+ markOutboundRequesterDelivered(messageId: string, requesterDeviceJid: string, updatedAtMs: number, expiresAtMs: number): Promise<void>;
13
21
  incrementInboundCounter(messageId: string, requesterJid: string, _updatedAtMs: number, expiresAtMs: number): Promise<number>;
14
22
  cleanupExpired(nowMs: number): Promise<number>;
15
23
  clear(): Promise<void>;
@@ -18,7 +18,6 @@ export declare class SenderKeyMemoryStore implements WaSenderKeyStoreContract {
18
18
  readonly skDistribList: readonly SenderKeyDistributionRecord[];
19
19
  }>;
20
20
  getDeviceSenderKey(groupId: string, sender: SignalAddress): Promise<SenderKeyRecord | null>;
21
- getDeviceSenderKeyDistribution(groupId: string, sender: SignalAddress): Promise<SenderKeyDistributionRecord | null>;
22
21
  getDeviceSenderKeyDistributions(groupId: string, senders: readonly SignalAddress[]): Promise<readonly (SenderKeyDistributionRecord | null)[]>;
23
22
  deleteDeviceSenderKey(target: SignalAddress, groupId?: string): Promise<number>;
24
23
  markForgetSenderKey(groupId: string, participants: readonly SignalAddress[]): Promise<number>;
@@ -1,5 +1,5 @@
1
1
  import type { PreKeyRecord, RegistrationInfo, SignalAddress, SignalSessionRecord, SignedPreKeyRecord } from '../../../signal/types';
2
- import type { WaSignalStore as WaSignalStoreContract } from '../../contracts/signal.store';
2
+ import type { WaSignalMetaSnapshot, WaSignalStore as WaSignalStoreContract } from '../../contracts/signal.store';
3
3
  export interface WaSignalMemoryStoreOptions {
4
4
  readonly maxPreKeys?: number;
5
5
  readonly maxSessions?: number;
@@ -35,12 +35,19 @@ export declare class WaSignalMemoryStore implements WaSignalStoreContract {
35
35
  markKeyAsUploaded(keyId: number): Promise<void>;
36
36
  setServerHasPreKeys(value: boolean): Promise<void>;
37
37
  getServerHasPreKeys(): Promise<boolean>;
38
+ getSignalMeta(): Promise<WaSignalMetaSnapshot>;
38
39
  hasSession(address: SignalAddress): Promise<boolean>;
39
40
  hasSessions(addresses: readonly SignalAddress[]): Promise<readonly boolean[]>;
40
41
  getSession(address: SignalAddress): Promise<SignalSessionRecord | null>;
42
+ getSessionsBatch(addresses: readonly SignalAddress[]): Promise<readonly (SignalSessionRecord | null)[]>;
41
43
  setSession(address: SignalAddress, session: SignalSessionRecord): Promise<void>;
44
+ setSessionsBatch(entries: readonly {
45
+ readonly address: SignalAddress;
46
+ readonly session: SignalSessionRecord;
47
+ }[]): Promise<void>;
42
48
  deleteSession(address: SignalAddress): Promise<void>;
43
49
  getRemoteIdentity(address: SignalAddress): Promise<Uint8Array | null>;
50
+ getRemoteIdentities(addresses: readonly SignalAddress[]): Promise<readonly (Uint8Array | null)[]>;
44
51
  setRemoteIdentity(address: SignalAddress, identityKey: Uint8Array): Promise<void>;
45
52
  setRemoteIdentities(entries: readonly {
46
53
  readonly address: SignalAddress;
@@ -7,6 +7,7 @@ export declare class WaThreadMemoryStore implements Contract {
7
7
  private readonly maxThreads;
8
8
  constructor(options?: WaThreadMemoryStoreOptions);
9
9
  upsert(record: WaStoredThreadRecord): Promise<void>;
10
+ upsertBatch(records: readonly WaStoredThreadRecord[]): Promise<void>;
10
11
  getByJid(jid: string): Promise<WaStoredThreadRecord | null>;
11
12
  list(limit?: number): Promise<readonly WaStoredThreadRecord[]>;
12
13
  deleteByJid(jid: string): Promise<number>;
@@ -4,17 +4,14 @@ import type { WaContactStore } from './contracts/contact.store';
4
4
  import type { WaDeviceListStore } from './contracts/device-list.store';
5
5
  import type { WaMessageStore } from './contracts/message.store';
6
6
  import type { WaParticipantsStore } from './contracts/participants.store';
7
+ import type { WaPrivacyTokenStore } from './contracts/privacy-token.store';
7
8
  import type { WaRetryStore } from './contracts/retry.store';
8
9
  import type { WaSenderKeyStore } from './contracts/sender-key.store';
9
10
  import type { WaSignalStore } from './contracts/signal.store';
10
11
  import type { WaThreadStore } from './contracts/thread.store';
11
- export type WaSqliteDriver = 'auto' | 'better-sqlite3' | 'bun';
12
- export interface WaSqliteStorageOptions {
13
- readonly path: string;
14
- readonly sessionId: string;
15
- readonly driver?: WaSqliteDriver;
16
- readonly pragmas?: Readonly<Record<string, string | number>>;
17
- }
12
+ export type WithDestroyLifecycle<T> = T & {
13
+ readonly destroy?: () => Promise<void>;
14
+ };
18
15
  export interface WaStoreSession {
19
16
  readonly auth: WaAuthStore;
20
17
  readonly signal: WaSignalStore;
@@ -26,6 +23,7 @@ export interface WaStoreSession {
26
23
  readonly messages: WaMessageStore;
27
24
  readonly threads: WaThreadStore;
28
25
  readonly contacts: WaContactStore;
26
+ readonly privacyToken: WaPrivacyTokenStore;
29
27
  destroyCaches(): Promise<void>;
30
28
  destroy(): Promise<void>;
31
29
  }
@@ -34,30 +32,50 @@ export interface WaStore {
34
32
  destroyCaches(): Promise<void>;
35
33
  destroy(): Promise<void>;
36
34
  }
37
- export interface WaStoreProviderSelection {
38
- readonly auth?: 'sqlite';
39
- readonly signal?: 'sqlite' | 'memory';
40
- readonly senderKey?: 'sqlite' | 'memory';
41
- readonly appState?: 'sqlite' | 'memory';
42
- readonly messages?: 'none' | 'sqlite' | 'memory';
43
- readonly threads?: 'none' | 'sqlite' | 'memory';
44
- readonly contacts?: 'none' | 'sqlite' | 'memory';
45
- }
46
- export interface WaStoreCacheProviderSelection {
47
- readonly retry?: 'sqlite' | 'memory';
48
- readonly participants?: 'none' | 'sqlite' | 'memory';
49
- readonly deviceList?: 'none' | 'sqlite' | 'memory';
50
- }
51
- export interface WaStoreCacheTtlSelection {
52
- readonly retryMs?: number;
53
- readonly participantsMs?: number;
54
- readonly deviceListMs?: number;
35
+ export interface WaStoreBackend {
36
+ readonly stores: {
37
+ readonly auth: (sessionId: string) => WaAuthStore;
38
+ readonly signal: (sessionId: string) => WaSignalStore;
39
+ readonly senderKey: (sessionId: string) => WaSenderKeyStore;
40
+ readonly appState: (sessionId: string) => WaAppStateStore;
41
+ readonly messages: (sessionId: string) => WaMessageStore;
42
+ readonly threads: (sessionId: string) => WaThreadStore;
43
+ readonly contacts: (sessionId: string) => WaContactStore;
44
+ readonly privacyToken: (sessionId: string) => WaPrivacyTokenStore;
45
+ };
46
+ readonly caches: {
47
+ readonly retry: (sessionId: string) => WaRetryStore;
48
+ readonly participants: (sessionId: string) => WaParticipantsStore;
49
+ readonly deviceList: (sessionId: string) => WaDeviceListStore;
50
+ };
55
51
  }
56
- export interface WaStoreSqliteBatchSizeSelection {
57
- readonly deviceList?: number;
58
- readonly senderKeyDistribution?: number;
59
- readonly signalPreKey?: number;
60
- readonly signalHasSession?: number;
52
+ export type WaStoreDomain = keyof WaStoreBackend['stores'];
53
+ export type WaCacheDomain = keyof WaStoreBackend['caches'];
54
+ export interface WaCreateStoreOptions<B extends string = string> {
55
+ readonly backends?: Readonly<Record<B, WaStoreBackend>>;
56
+ readonly providers?: {
57
+ readonly auth?: B | 'memory';
58
+ readonly signal?: B | 'memory';
59
+ readonly senderKey?: B | 'memory';
60
+ readonly appState?: B | 'memory';
61
+ readonly messages?: B | 'memory' | 'none';
62
+ readonly threads?: B | 'memory' | 'none';
63
+ readonly contacts?: B | 'memory' | 'none';
64
+ readonly privacyToken?: B | 'memory';
65
+ };
66
+ readonly cacheProviders?: {
67
+ readonly retry?: B | 'memory';
68
+ readonly participants?: B | 'memory' | 'none';
69
+ readonly deviceList?: B | 'memory' | 'none';
70
+ };
71
+ readonly memory?: {
72
+ readonly limits?: WaStoreMemoryLimitSelection;
73
+ readonly cacheTtlMs?: {
74
+ readonly retryMs?: number;
75
+ readonly participantsMs?: number;
76
+ readonly deviceListMs?: number;
77
+ };
78
+ };
61
79
  }
62
80
  export interface WaStoreMemoryLimitSelection {
63
81
  readonly appStateSyncKeys?: number;
@@ -72,32 +90,5 @@ export interface WaStoreMemoryLimitSelection {
72
90
  readonly messages?: number;
73
91
  readonly threads?: number;
74
92
  readonly contacts?: number;
75
- }
76
- export type WaStoreDomainValueOrFactory<T> = T | ((sessionId: string) => T);
77
- export interface WaCreateStoreCustomProviders {
78
- readonly auth?: WaStoreDomainValueOrFactory<WaAuthStore>;
79
- readonly signal?: WaStoreDomainValueOrFactory<WaSignalStore>;
80
- readonly senderKey?: WaStoreDomainValueOrFactory<WaSenderKeyStore>;
81
- readonly appState?: WaStoreDomainValueOrFactory<WaAppStateStore>;
82
- readonly messages?: WaStoreDomainValueOrFactory<WaMessageStore>;
83
- readonly threads?: WaStoreDomainValueOrFactory<WaThreadStore>;
84
- readonly contacts?: WaStoreDomainValueOrFactory<WaContactStore>;
85
- }
86
- export interface WaCreateStoreCustomCacheProviders {
87
- readonly retry?: WaStoreDomainValueOrFactory<WaRetryStore>;
88
- readonly participants?: WaStoreDomainValueOrFactory<WaParticipantsStore>;
89
- readonly deviceList?: WaStoreDomainValueOrFactory<WaDeviceListStore>;
90
- }
91
- export interface WaCreateStoreOptions {
92
- readonly sqlite?: Omit<WaSqliteStorageOptions, 'sessionId'> & {
93
- readonly batchSizes?: WaStoreSqliteBatchSizeSelection;
94
- };
95
- readonly memory?: {
96
- readonly limits?: WaStoreMemoryLimitSelection;
97
- };
98
- readonly providers?: WaStoreProviderSelection;
99
- readonly cacheProviders?: WaStoreCacheProviderSelection;
100
- readonly cacheTtlMs?: WaStoreCacheTtlSelection;
101
- readonly custom?: WaCreateStoreCustomProviders;
102
- readonly customCache?: WaCreateStoreCustomCacheProviders;
93
+ readonly privacyTokens?: number;
103
94
  }
@@ -10,16 +10,17 @@ export declare class WaWebSocket {
10
10
  private handlers;
11
11
  private socket;
12
12
  private closeWaiter;
13
+ private nodeWsCtorPromise;
13
14
  constructor(config: WaSocketConfig, logger?: Logger);
14
15
  setHandlers(handlers: WaSocketHandlers): void;
15
16
  isOpen(): boolean;
16
17
  isConnecting(): boolean;
17
- getReadyState(): number;
18
18
  open(): Promise<SocketOpenInfo>;
19
19
  close(code?: number, reason?: string): Promise<SocketCloseInfo | null>;
20
20
  send(data: string | ArrayBuffer | Uint8Array): Promise<void>;
21
21
  private openSingle;
22
22
  private openConcurrently;
23
+ private releasePendingSocketsAfterSetupFailure;
23
24
  private bindRuntimeHandlers;
24
25
  private handleMessage;
25
26
  private normalizePayload;
@@ -33,4 +34,5 @@ export declare class WaWebSocket {
33
34
  private handleRuntimeClose;
34
35
  private closeSocketSafe;
35
36
  private createRawSocket;
37
+ private resolveNodeWsConstructor;
36
38
  }
@@ -17,33 +17,3 @@ export declare const NIBBLE_ALPHABET: readonly string[];
17
17
  export declare const HEX_ALPHABET: readonly string[];
18
18
  export declare const SINGLE_BYTE_TOKEN_MAP: ReadonlyMap<string, number>;
19
19
  export declare const DICTIONARY_TOKEN_MAPS: readonly ReadonlyMap<string, number>[];
20
- export declare const WAP_ENCODE_CONSTANTS: Readonly<{
21
- LIST_EMPTY: 0;
22
- LIST_8: 248;
23
- LIST_16: 249;
24
- JID_PAIR: 250;
25
- HEX_8: 251;
26
- BINARY_8: 252;
27
- BINARY_20: 253;
28
- BINARY_32: 254;
29
- NIBBLE_8: 255;
30
- DICTIONARY_0: 236;
31
- DICTIONARY_3: 239;
32
- }>;
33
- export declare const WAP_DECODE_CONSTANTS: Readonly<{
34
- LIST_EMPTY: 0;
35
- LIST_8: 248;
36
- LIST_16: 249;
37
- JID_PAIR: 250;
38
- JID_FB: 246;
39
- JID_INTEROP: 245;
40
- JID_U: 247;
41
- HEX_8: 251;
42
- BINARY_8: 252;
43
- BINARY_20: 253;
44
- BINARY_32: 254;
45
- NIBBLE_8: 255;
46
- DICTIONARY_0: 236;
47
- DICTIONARY_3: 239;
48
- STREAM_END: 2;
49
- }>;
@@ -1,4 +1,3 @@
1
1
  export * from '../binary/tokens';
2
2
  export * from '../binary/encoder';
3
3
  export * from '../binary/decoder';
4
- export { WAP_DECODE_CONSTANTS as WapDecodeConstants, WAP_ENCODE_CONSTANTS as WapEncodeConstants } from '../binary/constants';
@@ -1,4 +1,5 @@
1
- export type { BinaryNode, RawWebSocket, RawWebSocketConstructor, SocketCloseInfo, SocketOpenInfo, WaCommsConfig, WaCommsState, WaNoiseConfig, WaSocketConfig, WaSocketHandlers } from './types';
1
+ export type { BinaryNode, RawWebSocket, RawWebSocketConstructor, WaRawWebSocketInit, SocketCloseInfo, SocketOpenInfo, WaCommsConfig, WaCommsState, WaNoiseConfig, WaProxyAgent, WaProxyDispatcher, WaProxyTransport, WaSocketConfig, WaSocketHandlers } from './types';
2
+ export { isProxyAgent, isProxyDispatcher, isProxyTransport, toProxyAgent, toProxyDispatcher } from './proxy';
2
3
  export { WaComms } from './WaComms';
3
4
  export { WaWebSocket } from './WaWebSocket';
4
5
  export { WaKeepAlive } from './keepalive/WaKeepAlive';