zapo-js 0.1.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 (585) hide show
  1. package/README.md +235 -0
  2. package/dist/appstate/WaAppStateCrypto.js +202 -0
  3. package/dist/appstate/WaAppStateSyncClient.js +808 -0
  4. package/dist/appstate/WaAppStateSyncResponseParser.js +71 -0
  5. package/dist/appstate/constants.js +23 -0
  6. package/dist/appstate/index.js +28 -0
  7. package/dist/appstate/store/sqlite.js +55 -0
  8. package/dist/appstate/types.js +2 -0
  9. package/dist/appstate/utils.js +84 -0
  10. package/dist/auth/WaAuthClient.js +266 -0
  11. package/dist/auth/flow/WaAuthCredentialsFlow.js +123 -0
  12. package/dist/auth/index.js +27 -0
  13. package/dist/auth/pairing/WaPairingCodeCrypto.js +75 -0
  14. package/dist/auth/pairing/WaPairingFlow.js +328 -0
  15. package/dist/auth/pairing/WaQrFlow.js +86 -0
  16. package/dist/auth/pairing/constants.js +5 -0
  17. package/dist/auth/types.js +2 -0
  18. package/dist/client/WaClient.js +749 -0
  19. package/dist/client/WaClientFactory.js +381 -0
  20. package/dist/client/coordinators/WaGroupCoordinator.js +191 -0
  21. package/dist/client/coordinators/WaIncomingNodeCoordinator.js +315 -0
  22. package/dist/client/coordinators/WaMessageDispatchCoordinator.js +1061 -0
  23. package/dist/client/coordinators/WaPassiveTasksCoordinator.js +200 -0
  24. package/dist/client/coordinators/WaRetryCoordinator.js +494 -0
  25. package/dist/client/coordinators/WaStreamControlCoordinator.js +123 -0
  26. package/dist/client/dirty.js +254 -0
  27. package/dist/client/events/chat.js +226 -0
  28. package/dist/client/events/group.js +410 -0
  29. package/dist/client/history-sync.js +122 -0
  30. package/dist/client/incoming.js +236 -0
  31. package/dist/client/index.js +5 -0
  32. package/dist/client/mailbox.js +49 -0
  33. package/dist/client/messages.js +152 -0
  34. package/dist/client/types.js +2 -0
  35. package/dist/crypto/core/constants.js +4 -0
  36. package/dist/crypto/core/encoding.js +29 -0
  37. package/dist/crypto/core/hkdf.js +26 -0
  38. package/dist/crypto/core/index.js +43 -0
  39. package/dist/crypto/core/keys.js +73 -0
  40. package/dist/crypto/core/nonce.js +18 -0
  41. package/dist/crypto/core/primitives.js +121 -0
  42. package/dist/crypto/core/random.js +32 -0
  43. package/dist/crypto/curves/Ed25519.js +42 -0
  44. package/dist/crypto/curves/X25519.js +64 -0
  45. package/dist/crypto/curves/constants.js +6 -0
  46. package/dist/crypto/curves/types.js +9 -0
  47. package/dist/crypto/index.js +22 -0
  48. package/dist/crypto/math/constants.js +44 -0
  49. package/dist/crypto/math/edwards.js +64 -0
  50. package/dist/crypto/math/le.js +20 -0
  51. package/dist/crypto/math/mod.js +38 -0
  52. package/dist/crypto/math/types.js +2 -0
  53. package/dist/esm/appstate/WaAppStateCrypto.js +198 -0
  54. package/dist/esm/appstate/WaAppStateSyncClient.js +803 -0
  55. package/dist/esm/appstate/WaAppStateSyncResponseParser.js +67 -0
  56. package/dist/esm/appstate/constants.js +20 -0
  57. package/dist/esm/appstate/index.js +6 -0
  58. package/dist/esm/appstate/store/sqlite.js +49 -0
  59. package/dist/esm/appstate/types.js +1 -0
  60. package/dist/esm/appstate/utils.js +75 -0
  61. package/dist/esm/auth/WaAuthClient.js +262 -0
  62. package/dist/esm/auth/flow/WaAuthCredentialsFlow.js +118 -0
  63. package/dist/esm/auth/index.js +5 -0
  64. package/dist/esm/auth/pairing/WaPairingCodeCrypto.js +71 -0
  65. package/dist/esm/auth/pairing/WaPairingFlow.js +324 -0
  66. package/dist/esm/auth/pairing/WaQrFlow.js +82 -0
  67. package/dist/esm/auth/pairing/constants.js +2 -0
  68. package/dist/esm/auth/types.js +1 -0
  69. package/dist/esm/client/WaClient.js +745 -0
  70. package/dist/esm/client/WaClientFactory.js +377 -0
  71. package/dist/esm/client/coordinators/WaGroupCoordinator.js +188 -0
  72. package/dist/esm/client/coordinators/WaIncomingNodeCoordinator.js +311 -0
  73. package/dist/esm/client/coordinators/WaMessageDispatchCoordinator.js +1057 -0
  74. package/dist/esm/client/coordinators/WaPassiveTasksCoordinator.js +196 -0
  75. package/dist/esm/client/coordinators/WaRetryCoordinator.js +490 -0
  76. package/dist/esm/client/coordinators/WaStreamControlCoordinator.js +120 -0
  77. package/dist/esm/client/dirty.js +250 -0
  78. package/dist/esm/client/events/chat.js +223 -0
  79. package/dist/esm/client/events/group.js +407 -0
  80. package/dist/esm/client/history-sync.js +119 -0
  81. package/dist/esm/client/incoming.js +227 -0
  82. package/dist/esm/client/index.js +1 -0
  83. package/dist/esm/client/mailbox.js +46 -0
  84. package/dist/esm/client/messages.js +148 -0
  85. package/dist/esm/client/types.js +1 -0
  86. package/dist/esm/crypto/core/constants.js +1 -0
  87. package/dist/esm/crypto/core/encoding.js +25 -0
  88. package/dist/esm/crypto/core/hkdf.js +22 -0
  89. package/dist/esm/crypto/core/index.js +11 -0
  90. package/dist/esm/crypto/core/keys.js +66 -0
  91. package/dist/esm/crypto/core/nonce.js +15 -0
  92. package/dist/esm/crypto/core/primitives.js +102 -0
  93. package/dist/esm/crypto/core/random.js +28 -0
  94. package/dist/esm/crypto/curves/Ed25519.js +38 -0
  95. package/dist/esm/crypto/curves/X25519.js +58 -0
  96. package/dist/esm/crypto/curves/constants.js +3 -0
  97. package/dist/esm/crypto/curves/types.js +6 -0
  98. package/dist/esm/crypto/index.js +3 -0
  99. package/dist/esm/crypto/math/constants.js +41 -0
  100. package/dist/esm/crypto/math/edwards.js +60 -0
  101. package/dist/esm/crypto/math/le.js +16 -0
  102. package/dist/esm/crypto/math/mod.js +31 -0
  103. package/dist/esm/crypto/math/types.js +1 -0
  104. package/dist/esm/index.js +6 -0
  105. package/dist/esm/infra/log/ConsoleLogger.js +40 -0
  106. package/dist/esm/infra/log/PinoLogger.js +73 -0
  107. package/dist/esm/infra/log/types.js +1 -0
  108. package/dist/esm/infra/perf/BoundedTaskQueue.js +62 -0
  109. package/dist/esm/media/WaMediaCrypto.js +224 -0
  110. package/dist/esm/media/WaMediaTransferClient.js +361 -0
  111. package/dist/esm/media/conn.js +33 -0
  112. package/dist/esm/media/constants.js +18 -0
  113. package/dist/esm/media/index.js +3 -0
  114. package/dist/esm/media/types.js +1 -0
  115. package/dist/esm/message/WaMessageClient.js +210 -0
  116. package/dist/esm/message/ack.js +46 -0
  117. package/dist/esm/message/content.js +20 -0
  118. package/dist/esm/message/device-sent.js +49 -0
  119. package/dist/esm/message/incoming.js +318 -0
  120. package/dist/esm/message/index.js +2 -0
  121. package/dist/esm/message/padding.js +20 -0
  122. package/dist/esm/message/phash.js +25 -0
  123. package/dist/esm/message/types.js +1 -0
  124. package/dist/esm/package.json +3 -0
  125. package/dist/esm/proto.js +3 -0
  126. package/dist/esm/protocol/appstate.js +34 -0
  127. package/dist/esm/protocol/auth.js +12 -0
  128. package/dist/esm/protocol/browser.js +41 -0
  129. package/dist/esm/protocol/constants.js +11 -0
  130. package/dist/esm/protocol/defaults.js +27 -0
  131. package/dist/esm/protocol/dirty.js +26 -0
  132. package/dist/esm/protocol/group.js +5 -0
  133. package/dist/esm/protocol/index.js +11 -0
  134. package/dist/esm/protocol/jid.js +94 -0
  135. package/dist/esm/protocol/media.js +20 -0
  136. package/dist/esm/protocol/message.js +16 -0
  137. package/dist/esm/protocol/nodes.js +83 -0
  138. package/dist/esm/protocol/notification.js +50 -0
  139. package/dist/esm/protocol/stream.js +60 -0
  140. package/dist/esm/retry/constants.js +20 -0
  141. package/dist/esm/retry/index.js +5 -0
  142. package/dist/esm/retry/outbound.js +83 -0
  143. package/dist/esm/retry/parse.js +130 -0
  144. package/dist/esm/retry/reason.js +50 -0
  145. package/dist/esm/retry/replay.js +177 -0
  146. package/dist/esm/retry/types.js +1 -0
  147. package/dist/esm/signal/api/SignalDeviceSyncApi.js +185 -0
  148. package/dist/esm/signal/api/SignalDigestSyncApi.js +179 -0
  149. package/dist/esm/signal/api/SignalIdentitySyncApi.js +111 -0
  150. package/dist/esm/signal/api/SignalMissingPreKeysSyncApi.js +141 -0
  151. package/dist/esm/signal/api/SignalRotateKeyApi.js +59 -0
  152. package/dist/esm/signal/api/SignalSessionSyncApi.js +187 -0
  153. package/dist/esm/signal/api/codec.js +23 -0
  154. package/dist/esm/signal/api/constants.js +9 -0
  155. package/dist/esm/signal/api/prekeys.js +9 -0
  156. package/dist/esm/signal/constants.js +16 -0
  157. package/dist/esm/signal/crypto/WaAdvSignature.js +60 -0
  158. package/dist/esm/signal/crypto/constants.js +8 -0
  159. package/dist/esm/signal/group/SenderKeyChain.js +97 -0
  160. package/dist/esm/signal/group/SenderKeyCodec.js +46 -0
  161. package/dist/esm/signal/group/SenderKeyManager.js +176 -0
  162. package/dist/esm/signal/index.js +11 -0
  163. package/dist/esm/signal/registration/keygen.js +31 -0
  164. package/dist/esm/signal/registration/utils.js +16 -0
  165. package/dist/esm/signal/session/SignalProtocol.js +122 -0
  166. package/dist/esm/signal/session/SignalRatchet.js +260 -0
  167. package/dist/esm/signal/session/SignalSerializer.js +63 -0
  168. package/dist/esm/signal/session/SignalSession.js +153 -0
  169. package/dist/esm/signal/store/sqlite.js +310 -0
  170. package/dist/esm/signal/types.js +1 -0
  171. package/dist/esm/store/contracts/appstate.store.js +1 -0
  172. package/dist/esm/store/contracts/auth.store.js +1 -0
  173. package/dist/esm/store/contracts/contact.store.js +1 -0
  174. package/dist/esm/store/contracts/device-list.store.js +1 -0
  175. package/dist/esm/store/contracts/message.store.js +1 -0
  176. package/dist/esm/store/contracts/participants.store.js +1 -0
  177. package/dist/esm/store/contracts/retry.store.js +1 -0
  178. package/dist/esm/store/contracts/sender-key.store.js +1 -0
  179. package/dist/esm/store/contracts/signal.store.js +1 -0
  180. package/dist/esm/store/contracts/thread.store.js +1 -0
  181. package/dist/esm/store/createStore.js +278 -0
  182. package/dist/esm/store/index.js +20 -0
  183. package/dist/esm/store/noop.store.js +43 -0
  184. package/dist/esm/store/providers/memory/appstate.store.js +101 -0
  185. package/dist/esm/store/providers/memory/contact.store.js +23 -0
  186. package/dist/esm/store/providers/memory/device-list.store.js +86 -0
  187. package/dist/esm/store/providers/memory/message.store.js +40 -0
  188. package/dist/esm/store/providers/memory/participants.store.js +61 -0
  189. package/dist/esm/store/providers/memory/retry.store.js +71 -0
  190. package/dist/esm/store/providers/memory/sender-key.store.js +88 -0
  191. package/dist/esm/store/providers/memory/signal.store.js +170 -0
  192. package/dist/esm/store/providers/memory/thread.store.js +34 -0
  193. package/dist/esm/store/providers/sqlite/BaseSqliteStore.js +37 -0
  194. package/dist/esm/store/providers/sqlite/appstate.store.js +169 -0
  195. package/dist/esm/store/providers/sqlite/auth.store.js +176 -0
  196. package/dist/esm/store/providers/sqlite/connection.js +240 -0
  197. package/dist/esm/store/providers/sqlite/contact.store.js +61 -0
  198. package/dist/esm/store/providers/sqlite/device-list.store.js +155 -0
  199. package/dist/esm/store/providers/sqlite/message.store.js +119 -0
  200. package/dist/esm/store/providers/sqlite/migrations.js +347 -0
  201. package/dist/esm/store/providers/sqlite/participants.store.js +85 -0
  202. package/dist/esm/store/providers/sqlite/retry.store.js +144 -0
  203. package/dist/esm/store/providers/sqlite/sender-key.store.js +203 -0
  204. package/dist/esm/store/providers/sqlite/signal.store.js +353 -0
  205. package/dist/esm/store/providers/sqlite/thread.store.js +72 -0
  206. package/dist/esm/store/types.js +1 -0
  207. package/dist/esm/transport/WaComms.js +527 -0
  208. package/dist/esm/transport/WaWebSocket.js +361 -0
  209. package/dist/esm/transport/binary/constants.js +96 -0
  210. package/dist/esm/transport/binary/decoder.js +275 -0
  211. package/dist/esm/transport/binary/encoder.js +210 -0
  212. package/dist/esm/transport/binary/index.js +4 -0
  213. package/dist/esm/transport/binary/tokens.js +1280 -0
  214. package/dist/esm/transport/index.js +6 -0
  215. package/dist/esm/transport/keepalive/WaKeepAlive.js +141 -0
  216. package/dist/esm/transport/node/WaNodeOrchestrator.js +143 -0
  217. package/dist/esm/transport/node/WaNodeTransport.js +64 -0
  218. package/dist/esm/transport/node/builders/accountSync.js +101 -0
  219. package/dist/esm/transport/node/builders/group.js +47 -0
  220. package/dist/esm/transport/node/builders/index.js +7 -0
  221. package/dist/esm/transport/node/builders/media.js +10 -0
  222. package/dist/esm/transport/node/builders/message.js +317 -0
  223. package/dist/esm/transport/node/builders/pairing.js +130 -0
  224. package/dist/esm/transport/node/builders/prekeys.js +102 -0
  225. package/dist/esm/transport/node/builders/retry.js +116 -0
  226. package/dist/esm/transport/node/helpers.js +37 -0
  227. package/dist/esm/transport/node/query.js +53 -0
  228. package/dist/esm/transport/node/xml.js +39 -0
  229. package/dist/esm/transport/noise/WaClientPayload.js +162 -0
  230. package/dist/esm/transport/noise/WaFrameCodec.js +121 -0
  231. package/dist/esm/transport/noise/WaNoiseCert.js +74 -0
  232. package/dist/esm/transport/noise/WaNoiseHandshake.js +57 -0
  233. package/dist/esm/transport/noise/WaNoiseSession.js +322 -0
  234. package/dist/esm/transport/noise/WaNoiseSocket.js +17 -0
  235. package/dist/esm/transport/noise/constants.js +8 -0
  236. package/dist/esm/transport/noise/types.js +1 -0
  237. package/dist/esm/transport/stream/parse.js +91 -0
  238. package/dist/esm/transport/types.js +1 -0
  239. package/dist/esm/util/async.js +5 -0
  240. package/dist/esm/util/base64.js +18 -0
  241. package/dist/esm/util/bytes.js +275 -0
  242. package/dist/esm/util/coercion.js +56 -0
  243. package/dist/esm/util/collections.js +27 -0
  244. package/dist/esm/util/primitives.js +32 -0
  245. package/dist/esm/util/runtime.js +15 -0
  246. package/dist/esm/util/signal-address.js +5 -0
  247. package/dist/index.js +52 -0
  248. package/dist/infra/log/ConsoleLogger.js +44 -0
  249. package/dist/infra/log/PinoLogger.js +111 -0
  250. package/dist/infra/log/types.js +2 -0
  251. package/dist/infra/perf/BoundedTaskQueue.js +67 -0
  252. package/dist/media/WaMediaCrypto.js +228 -0
  253. package/dist/media/WaMediaTransferClient.js +365 -0
  254. package/dist/media/conn.js +36 -0
  255. package/dist/media/constants.js +21 -0
  256. package/dist/media/index.js +9 -0
  257. package/dist/media/types.js +2 -0
  258. package/dist/message/WaMessageClient.js +214 -0
  259. package/dist/message/ack.js +52 -0
  260. package/dist/message/content.js +24 -0
  261. package/dist/message/device-sent.js +53 -0
  262. package/dist/message/incoming.js +321 -0
  263. package/dist/message/index.js +20 -0
  264. package/dist/message/padding.js +24 -0
  265. package/dist/message/phash.js +28 -0
  266. package/dist/message/types.js +2 -0
  267. package/dist/proto.js +5 -0
  268. package/dist/protocol/appstate.js +37 -0
  269. package/dist/protocol/auth.js +15 -0
  270. package/dist/protocol/browser.js +45 -0
  271. package/dist/protocol/constants.js +46 -0
  272. package/dist/protocol/defaults.js +30 -0
  273. package/dist/protocol/dirty.js +29 -0
  274. package/dist/protocol/group.js +8 -0
  275. package/dist/protocol/index.js +53 -0
  276. package/dist/protocol/jid.js +107 -0
  277. package/dist/protocol/media.js +24 -0
  278. package/dist/protocol/message.js +19 -0
  279. package/dist/protocol/nodes.js +86 -0
  280. package/dist/protocol/notification.js +53 -0
  281. package/dist/protocol/stream.js +63 -0
  282. package/dist/retry/constants.js +23 -0
  283. package/dist/retry/index.js +19 -0
  284. package/dist/retry/outbound.js +88 -0
  285. package/dist/retry/parse.js +133 -0
  286. package/dist/retry/reason.js +53 -0
  287. package/dist/retry/replay.js +181 -0
  288. package/dist/retry/types.js +2 -0
  289. package/dist/signal/api/SignalDeviceSyncApi.js +189 -0
  290. package/dist/signal/api/SignalDigestSyncApi.js +183 -0
  291. package/dist/signal/api/SignalIdentitySyncApi.js +115 -0
  292. package/dist/signal/api/SignalMissingPreKeysSyncApi.js +145 -0
  293. package/dist/signal/api/SignalRotateKeyApi.js +63 -0
  294. package/dist/signal/api/SignalSessionSyncApi.js +191 -0
  295. package/dist/signal/api/codec.js +27 -0
  296. package/dist/signal/api/constants.js +12 -0
  297. package/dist/signal/api/prekeys.js +16 -0
  298. package/dist/signal/constants.js +19 -0
  299. package/dist/signal/crypto/WaAdvSignature.js +72 -0
  300. package/dist/signal/crypto/constants.js +11 -0
  301. package/dist/signal/group/SenderKeyChain.js +101 -0
  302. package/dist/signal/group/SenderKeyCodec.js +50 -0
  303. package/dist/signal/group/SenderKeyManager.js +180 -0
  304. package/dist/signal/index.js +29 -0
  305. package/dist/signal/registration/keygen.js +37 -0
  306. package/dist/signal/registration/utils.js +19 -0
  307. package/dist/signal/session/SignalProtocol.js +126 -0
  308. package/dist/signal/session/SignalRatchet.js +268 -0
  309. package/dist/signal/session/SignalSerializer.js +69 -0
  310. package/dist/signal/session/SignalSession.js +165 -0
  311. package/dist/signal/store/sqlite.js +324 -0
  312. package/dist/signal/types.js +2 -0
  313. package/dist/store/contracts/appstate.store.js +2 -0
  314. package/dist/store/contracts/auth.store.js +2 -0
  315. package/dist/store/contracts/contact.store.js +2 -0
  316. package/dist/store/contracts/device-list.store.js +2 -0
  317. package/dist/store/contracts/message.store.js +2 -0
  318. package/dist/store/contracts/participants.store.js +2 -0
  319. package/dist/store/contracts/retry.store.js +2 -0
  320. package/dist/store/contracts/sender-key.store.js +2 -0
  321. package/dist/store/contracts/signal.store.js +2 -0
  322. package/dist/store/contracts/thread.store.js +2 -0
  323. package/dist/store/createStore.js +281 -0
  324. package/dist/store/index.js +43 -0
  325. package/dist/store/noop.store.js +46 -0
  326. package/dist/store/providers/memory/appstate.store.js +105 -0
  327. package/dist/store/providers/memory/contact.store.js +27 -0
  328. package/dist/store/providers/memory/device-list.store.js +90 -0
  329. package/dist/store/providers/memory/message.store.js +44 -0
  330. package/dist/store/providers/memory/participants.store.js +65 -0
  331. package/dist/store/providers/memory/retry.store.js +75 -0
  332. package/dist/store/providers/memory/sender-key.store.js +92 -0
  333. package/dist/store/providers/memory/signal.store.js +174 -0
  334. package/dist/store/providers/memory/thread.store.js +38 -0
  335. package/dist/store/providers/sqlite/BaseSqliteStore.js +41 -0
  336. package/dist/store/providers/sqlite/appstate.store.js +173 -0
  337. package/dist/store/providers/sqlite/auth.store.js +180 -0
  338. package/dist/store/providers/sqlite/connection.js +276 -0
  339. package/dist/store/providers/sqlite/contact.store.js +65 -0
  340. package/dist/store/providers/sqlite/device-list.store.js +159 -0
  341. package/dist/store/providers/sqlite/message.store.js +123 -0
  342. package/dist/store/providers/sqlite/migrations.js +350 -0
  343. package/dist/store/providers/sqlite/participants.store.js +89 -0
  344. package/dist/store/providers/sqlite/retry.store.js +148 -0
  345. package/dist/store/providers/sqlite/sender-key.store.js +207 -0
  346. package/dist/store/providers/sqlite/signal.store.js +357 -0
  347. package/dist/store/providers/sqlite/thread.store.js +76 -0
  348. package/dist/store/types.js +2 -0
  349. package/dist/transport/WaComms.js +531 -0
  350. package/dist/transport/WaWebSocket.js +365 -0
  351. package/dist/transport/binary/constants.js +99 -0
  352. package/dist/transport/binary/decoder.js +279 -0
  353. package/dist/transport/binary/encoder.js +214 -0
  354. package/dist/transport/binary/index.js +23 -0
  355. package/dist/transport/binary/tokens.js +1283 -0
  356. package/dist/transport/index.js +18 -0
  357. package/dist/transport/keepalive/WaKeepAlive.js +145 -0
  358. package/dist/transport/node/WaNodeOrchestrator.js +147 -0
  359. package/dist/transport/node/WaNodeTransport.js +68 -0
  360. package/dist/transport/node/builders/accountSync.js +110 -0
  361. package/dist/transport/node/builders/group.js +52 -0
  362. package/dist/transport/node/builders/index.js +39 -0
  363. package/dist/transport/node/builders/media.js +13 -0
  364. package/dist/transport/node/builders/message.js +328 -0
  365. package/dist/transport/node/builders/pairing.js +137 -0
  366. package/dist/transport/node/builders/prekeys.js +107 -0
  367. package/dist/transport/node/builders/retry.js +119 -0
  368. package/dist/transport/node/helpers.js +46 -0
  369. package/dist/transport/node/query.js +59 -0
  370. package/dist/transport/node/xml.js +42 -0
  371. package/dist/transport/noise/WaClientPayload.js +166 -0
  372. package/dist/transport/noise/WaFrameCodec.js +125 -0
  373. package/dist/transport/noise/WaNoiseCert.js +77 -0
  374. package/dist/transport/noise/WaNoiseHandshake.js +61 -0
  375. package/dist/transport/noise/WaNoiseSession.js +326 -0
  376. package/dist/transport/noise/WaNoiseSocket.js +21 -0
  377. package/dist/transport/noise/constants.js +11 -0
  378. package/dist/transport/noise/types.js +2 -0
  379. package/dist/transport/stream/parse.js +97 -0
  380. package/dist/transport/types.js +2 -0
  381. package/dist/types/appstate/WaAppStateCrypto.d.ts +59 -0
  382. package/dist/types/appstate/WaAppStateSyncClient.d.ts +63 -0
  383. package/dist/types/appstate/WaAppStateSyncResponseParser.d.ts +12 -0
  384. package/dist/types/appstate/constants.d.ts +14 -0
  385. package/dist/types/appstate/index.d.ts +7 -0
  386. package/dist/types/appstate/store/sqlite.d.ts +21 -0
  387. package/dist/types/appstate/types.d.ts +66 -0
  388. package/dist/types/appstate/utils.d.ts +10 -0
  389. package/dist/types/auth/WaAuthClient.d.ts +61 -0
  390. package/dist/types/auth/flow/WaAuthCredentialsFlow.d.ts +14 -0
  391. package/dist/types/auth/index.d.ts +6 -0
  392. package/dist/types/auth/pairing/WaPairingCodeCrypto.d.ts +17 -0
  393. package/dist/types/auth/pairing/WaPairingFlow.d.ts +48 -0
  394. package/dist/types/auth/pairing/WaQrFlow.d.ts +23 -0
  395. package/dist/types/auth/pairing/constants.d.ts +2 -0
  396. package/dist/types/auth/types.d.ts +48 -0
  397. package/dist/types/client/WaClient.d.ts +97 -0
  398. package/dist/types/client/WaClientFactory.d.ts +83 -0
  399. package/dist/types/client/coordinators/WaGroupCoordinator.d.ts +48 -0
  400. package/dist/types/client/coordinators/WaIncomingNodeCoordinator.d.ts +60 -0
  401. package/dist/types/client/coordinators/WaMessageDispatchCoordinator.d.ts +90 -0
  402. package/dist/types/client/coordinators/WaPassiveTasksCoordinator.d.ts +43 -0
  403. package/dist/types/client/coordinators/WaRetryCoordinator.d.ts +61 -0
  404. package/dist/types/client/coordinators/WaStreamControlCoordinator.d.ts +17 -0
  405. package/dist/types/client/dirty.d.ts +17 -0
  406. package/dist/types/client/events/chat.d.ts +3 -0
  407. package/dist/types/client/events/group.d.ts +7 -0
  408. package/dist/types/client/history-sync.d.ts +17 -0
  409. package/dist/types/client/incoming.d.ts +35 -0
  410. package/dist/types/client/index.d.ts +2 -0
  411. package/dist/types/client/mailbox.d.ts +12 -0
  412. package/dist/types/client/messages.d.ts +17 -0
  413. package/dist/types/client/types.d.ts +235 -0
  414. package/dist/types/crypto/core/constants.d.ts +1 -0
  415. package/dist/types/crypto/core/encoding.d.ts +11 -0
  416. package/dist/types/crypto/core/hkdf.d.ts +8 -0
  417. package/dist/types/crypto/core/index.d.ts +11 -0
  418. package/dist/types/crypto/core/keys.d.ts +20 -0
  419. package/dist/types/crypto/core/nonce.d.ts +5 -0
  420. package/dist/types/crypto/core/primitives.d.ts +25 -0
  421. package/dist/types/crypto/core/random.d.ts +8 -0
  422. package/dist/types/crypto/curves/Ed25519.d.ts +7 -0
  423. package/dist/types/crypto/curves/X25519.d.ts +8 -0
  424. package/dist/types/crypto/curves/constants.d.ts +2 -0
  425. package/dist/types/crypto/curves/types.d.ts +10 -0
  426. package/dist/types/crypto/index.d.ts +3 -0
  427. package/dist/types/crypto/math/constants.d.ts +7 -0
  428. package/dist/types/crypto/math/edwards.d.ts +3 -0
  429. package/dist/types/crypto/math/le.d.ts +2 -0
  430. package/dist/types/crypto/math/mod.d.ts +5 -0
  431. package/dist/types/crypto/math/types.d.ts +6 -0
  432. package/dist/types/index.d.ts +10 -0
  433. package/dist/types/infra/log/ConsoleLogger.d.ts +11 -0
  434. package/dist/types/infra/log/PinoLogger.d.ts +30 -0
  435. package/dist/types/infra/log/types.d.ts +9 -0
  436. package/dist/types/infra/perf/BoundedTaskQueue.d.ts +19 -0
  437. package/dist/types/media/WaMediaCrypto.d.ts +12 -0
  438. package/dist/types/media/WaMediaTransferClient.d.ts +81 -0
  439. package/dist/types/media/conn.d.ts +3 -0
  440. package/dist/types/media/constants.d.ts +10 -0
  441. package/dist/types/media/index.d.ts +4 -0
  442. package/dist/types/media/types.d.ts +56 -0
  443. package/dist/types/message/WaMessageClient.d.ts +29 -0
  444. package/dist/types/message/ack.d.ts +5 -0
  445. package/dist/types/message/content.d.ts +4 -0
  446. package/dist/types/message/device-sent.d.ts +3 -0
  447. package/dist/types/message/incoming.d.ts +18 -0
  448. package/dist/types/message/index.d.ts +2 -0
  449. package/dist/types/message/padding.d.ts +2 -0
  450. package/dist/types/message/phash.d.ts +1 -0
  451. package/dist/types/message/types.d.ts +58 -0
  452. package/dist/types/proto.d.ts +2 -0
  453. package/dist/types/protocol/appstate.d.ts +34 -0
  454. package/dist/types/protocol/auth.d.ts +12 -0
  455. package/dist/types/protocol/browser.d.ts +22 -0
  456. package/dist/types/protocol/constants.d.ts +11 -0
  457. package/dist/types/protocol/defaults.d.ts +26 -0
  458. package/dist/types/protocol/dirty.d.ts +15 -0
  459. package/dist/types/protocol/group.d.ts +6 -0
  460. package/dist/types/protocol/index.d.ts +11 -0
  461. package/dist/types/protocol/jid.d.ts +19 -0
  462. package/dist/types/protocol/media.d.ts +15 -0
  463. package/dist/types/protocol/message.d.ts +16 -0
  464. package/dist/types/protocol/nodes.d.ts +83 -0
  465. package/dist/types/protocol/notification.d.ts +50 -0
  466. package/dist/types/protocol/stream.d.ts +60 -0
  467. package/dist/types/retry/constants.d.ts +21 -0
  468. package/dist/types/retry/index.d.ts +7 -0
  469. package/dist/types/retry/outbound.d.ts +4 -0
  470. package/dist/types/retry/parse.d.ts +3 -0
  471. package/dist/types/retry/reason.d.ts +2 -0
  472. package/dist/types/retry/replay.d.ts +30 -0
  473. package/dist/types/retry/types.d.ts +70 -0
  474. package/dist/types/signal/api/SignalDeviceSyncApi.d.ts +31 -0
  475. package/dist/types/signal/api/SignalDigestSyncApi.d.ts +27 -0
  476. package/dist/types/signal/api/SignalIdentitySyncApi.d.ts +26 -0
  477. package/dist/types/signal/api/SignalMissingPreKeysSyncApi.d.ts +39 -0
  478. package/dist/types/signal/api/SignalRotateKeyApi.d.ts +22 -0
  479. package/dist/types/signal/api/SignalSessionSyncApi.d.ts +38 -0
  480. package/dist/types/signal/api/codec.d.ts +3 -0
  481. package/dist/types/signal/api/constants.d.ts +9 -0
  482. package/dist/types/signal/api/prekeys.d.ts +6 -0
  483. package/dist/types/signal/constants.d.ts +14 -0
  484. package/dist/types/signal/crypto/WaAdvSignature.d.ts +7 -0
  485. package/dist/types/signal/crypto/constants.d.ts +5 -0
  486. package/dist/types/signal/group/SenderKeyChain.d.ts +11 -0
  487. package/dist/types/signal/group/SenderKeyCodec.d.ts +14 -0
  488. package/dist/types/signal/group/SenderKeyManager.d.ts +22 -0
  489. package/dist/types/signal/index.d.ts +12 -0
  490. package/dist/types/signal/registration/keygen.d.ts +5 -0
  491. package/dist/types/signal/registration/utils.d.ts +9 -0
  492. package/dist/types/signal/session/SignalProtocol.d.ts +22 -0
  493. package/dist/types/signal/session/SignalRatchet.d.ts +25 -0
  494. package/dist/types/signal/session/SignalSerializer.d.ts +6 -0
  495. package/dist/types/signal/session/SignalSession.d.ts +43 -0
  496. package/dist/types/signal/store/sqlite.d.ts +72 -0
  497. package/dist/types/signal/types.d.ts +110 -0
  498. package/dist/types/store/contracts/appstate.store.d.ts +22 -0
  499. package/dist/types/store/contracts/auth.store.d.ts +6 -0
  500. package/dist/types/store/contracts/contact.store.d.ts +14 -0
  501. package/dist/types/store/contracts/device-list.store.d.ts +16 -0
  502. package/dist/types/store/contracts/message.store.d.ts +18 -0
  503. package/dist/types/store/contracts/participants.store.d.ts +14 -0
  504. package/dist/types/store/contracts/retry.store.d.ts +11 -0
  505. package/dist/types/store/contracts/sender-key.store.d.ts +16 -0
  506. package/dist/types/store/contracts/signal.store.d.ts +31 -0
  507. package/dist/types/store/contracts/thread.store.d.ts +17 -0
  508. package/dist/types/store/createStore.d.ts +2 -0
  509. package/dist/types/store/index.d.ts +31 -0
  510. package/dist/types/store/noop.store.d.ts +10 -0
  511. package/dist/types/store/providers/memory/appstate.store.d.ts +21 -0
  512. package/dist/types/store/providers/memory/contact.store.d.ts +13 -0
  513. package/dist/types/store/providers/memory/device-list.store.d.ts +20 -0
  514. package/dist/types/store/providers/memory/message.store.d.ts +14 -0
  515. package/dist/types/store/providers/memory/participants.store.d.ts +18 -0
  516. package/dist/types/store/providers/memory/retry.store.d.ts +18 -0
  517. package/dist/types/store/providers/memory/sender-key.store.d.ts +28 -0
  518. package/dist/types/store/providers/memory/signal.store.d.ts +51 -0
  519. package/dist/types/store/providers/memory/thread.store.d.ts +14 -0
  520. package/dist/types/store/providers/sqlite/BaseSqliteStore.d.ts +12 -0
  521. package/dist/types/store/providers/sqlite/appstate.store.d.ts +15 -0
  522. package/dist/types/store/providers/sqlite/auth.store.d.ts +10 -0
  523. package/dist/types/store/providers/sqlite/connection.d.ts +10 -0
  524. package/dist/types/store/providers/sqlite/contact.store.d.ts +10 -0
  525. package/dist/types/store/providers/sqlite/device-list.store.d.ts +18 -0
  526. package/dist/types/store/providers/sqlite/message.store.d.ts +11 -0
  527. package/dist/types/store/providers/sqlite/migrations.d.ts +3 -0
  528. package/dist/types/store/providers/sqlite/participants.store.d.ts +13 -0
  529. package/dist/types/store/providers/sqlite/retry.store.d.ts +16 -0
  530. package/dist/types/store/providers/sqlite/sender-key.store.d.ts +25 -0
  531. package/dist/types/store/providers/sqlite/signal.store.d.ts +46 -0
  532. package/dist/types/store/providers/sqlite/thread.store.d.ts +11 -0
  533. package/dist/types/store/types.d.ts +103 -0
  534. package/dist/types/transport/WaComms.d.ts +61 -0
  535. package/dist/types/transport/WaWebSocket.d.ts +36 -0
  536. package/dist/types/transport/binary/constants.d.ts +49 -0
  537. package/dist/types/transport/binary/decoder.d.ts +3 -0
  538. package/dist/types/transport/binary/encoder.d.ts +3 -0
  539. package/dist/types/transport/binary/index.d.ts +4 -0
  540. package/dist/types/transport/binary/tokens.d.ts +11 -0
  541. package/dist/types/transport/index.d.ts +7 -0
  542. package/dist/types/transport/keepalive/WaKeepAlive.d.ts +39 -0
  543. package/dist/types/transport/node/WaNodeOrchestrator.d.ts +28 -0
  544. package/dist/types/transport/node/WaNodeTransport.d.ts +22 -0
  545. package/dist/types/transport/node/builders/accountSync.d.ts +11 -0
  546. package/dist/types/transport/node/builders/group.d.ts +16 -0
  547. package/dist/types/transport/node/builders/index.d.ts +7 -0
  548. package/dist/types/transport/node/builders/media.d.ts +2 -0
  549. package/dist/types/transport/node/builders/message.d.ts +52 -0
  550. package/dist/types/transport/node/builders/pairing.d.ts +18 -0
  551. package/dist/types/transport/node/builders/prekeys.d.ts +5 -0
  552. package/dist/types/transport/node/builders/retry.d.ts +18 -0
  553. package/dist/types/transport/node/helpers.d.ts +8 -0
  554. package/dist/types/transport/node/query.d.ts +10 -0
  555. package/dist/types/transport/node/xml.d.ts +2 -0
  556. package/dist/types/transport/noise/WaClientPayload.d.ts +3 -0
  557. package/dist/types/transport/noise/WaFrameCodec.d.ts +9 -0
  558. package/dist/types/transport/noise/WaNoiseCert.d.ts +1 -0
  559. package/dist/types/transport/noise/WaNoiseHandshake.d.ts +14 -0
  560. package/dist/types/transport/noise/WaNoiseSession.d.ts +33 -0
  561. package/dist/types/transport/noise/WaNoiseSocket.d.ts +10 -0
  562. package/dist/types/transport/noise/constants.d.ts +7 -0
  563. package/dist/types/transport/noise/types.d.ts +23 -0
  564. package/dist/types/transport/stream/parse.d.ts +23 -0
  565. package/dist/types/transport/types.d.ts +71 -0
  566. package/dist/types/util/async.d.ts +1 -0
  567. package/dist/types/util/base64.d.ts +4 -0
  568. package/dist/types/util/bytes.d.ts +28 -0
  569. package/dist/types/util/coercion.d.ts +8 -0
  570. package/dist/types/util/collections.d.ts +3 -0
  571. package/dist/types/util/primitives.d.ts +7 -0
  572. package/dist/types/util/runtime.d.ts +2 -0
  573. package/dist/types/util/signal-address.d.ts +2 -0
  574. package/dist/util/async.js +8 -0
  575. package/dist/util/base64.js +24 -0
  576. package/dist/util/bytes.js +291 -0
  577. package/dist/util/coercion.js +66 -0
  578. package/dist/util/collections.js +32 -0
  579. package/dist/util/primitives.js +37 -0
  580. package/dist/util/runtime.js +19 -0
  581. package/dist/util/signal-address.js +8 -0
  582. package/package.json +150 -0
  583. package/proto/index.d.ts +10861 -0
  584. package/proto/index.js +1 -0
  585. package/scripts/check-node-version.cjs +55 -0
@@ -0,0 +1,21 @@
1
+ import type { AppStateCollectionName, WaAppStateStoreData, WaAppStateSyncKey } from '../../../appstate/types';
2
+ import type { WaAppStateCollectionStateUpdate, WaAppStateCollectionStoreState, WaAppStateStore } from '../../contracts/appstate.store';
3
+ export interface WaAppStateMemoryStoreOptions {
4
+ readonly maxSyncKeys?: number;
5
+ readonly maxCollectionEntries?: number;
6
+ }
7
+ export declare class WaAppStateMemoryStore implements WaAppStateStore {
8
+ private readonly keys;
9
+ private readonly collections;
10
+ private readonly maxSyncKeys;
11
+ private readonly maxCollectionEntries;
12
+ constructor(initial?: WaAppStateStoreData, options?: WaAppStateMemoryStoreOptions);
13
+ exportData(): Promise<WaAppStateStoreData>;
14
+ upsertSyncKeys(keys: readonly WaAppStateSyncKey[]): Promise<number>;
15
+ getSyncKey(keyId: Uint8Array): Promise<WaAppStateSyncKey | null>;
16
+ getSyncKeyData(keyId: Uint8Array): Promise<Uint8Array | null>;
17
+ getActiveSyncKey(): Promise<WaAppStateSyncKey | null>;
18
+ getCollectionState(collection: AppStateCollectionName): Promise<WaAppStateCollectionStoreState>;
19
+ setCollectionStates(updates: readonly WaAppStateCollectionStateUpdate[]): Promise<void>;
20
+ clear(): Promise<void>;
21
+ }
@@ -0,0 +1,13 @@
1
+ import type { WaContactStore as Contract, WaStoredContactRecord } from '../../contracts/contact.store';
2
+ export interface WaContactMemoryStoreOptions {
3
+ readonly maxContacts?: number;
4
+ }
5
+ export declare class WaContactMemoryStore implements Contract {
6
+ private readonly contacts;
7
+ private readonly maxContacts;
8
+ constructor(options?: WaContactMemoryStoreOptions);
9
+ upsert(record: WaStoredContactRecord): Promise<void>;
10
+ getByJid(jid: string): Promise<WaStoredContactRecord | null>;
11
+ deleteByJid(jid: string): Promise<number>;
12
+ clear(): Promise<void>;
13
+ }
@@ -0,0 +1,20 @@
1
+ import type { WaDeviceListSnapshot, WaDeviceListStore } from '../../contracts/device-list.store';
2
+ export interface WaDeviceListMemoryStoreOptions {
3
+ readonly maxUsers?: number;
4
+ }
5
+ export declare class WaDeviceListMemoryStore implements WaDeviceListStore {
6
+ private readonly records;
7
+ private readonly ttlMs;
8
+ private readonly maxUsers;
9
+ private readonly cleanupTimer;
10
+ constructor(ttlMs?: number, options?: WaDeviceListMemoryStoreOptions);
11
+ getTtlMs(): number;
12
+ upsertUserDevices(snapshot: WaDeviceListSnapshot): Promise<void>;
13
+ upsertUserDevicesBatch(snapshots: readonly WaDeviceListSnapshot[]): Promise<void>;
14
+ getUserDevices(userJid: string, nowMs?: number): Promise<WaDeviceListSnapshot | null>;
15
+ getUserDevicesBatch(userJids: readonly string[], nowMs?: number): Promise<readonly (WaDeviceListSnapshot | null)[]>;
16
+ deleteUserDevices(userJid: string): Promise<number>;
17
+ cleanupExpired(nowMs: number): Promise<number>;
18
+ clear(): Promise<void>;
19
+ destroy(): Promise<void>;
20
+ }
@@ -0,0 +1,14 @@
1
+ import type { WaMessageStore as Contract, WaStoredMessageRecord } from '../../contracts/message.store';
2
+ export interface WaMessageMemoryStoreOptions {
3
+ readonly maxMessages?: number;
4
+ }
5
+ export declare class WaMessageMemoryStore implements Contract {
6
+ private readonly messages;
7
+ private readonly maxMessages;
8
+ constructor(options?: WaMessageMemoryStoreOptions);
9
+ upsert(record: WaStoredMessageRecord): Promise<void>;
10
+ getById(id: string): Promise<WaStoredMessageRecord | null>;
11
+ listByThread(threadJid: string, limit?: number, beforeTimestampMs?: number): Promise<readonly WaStoredMessageRecord[]>;
12
+ deleteById(id: string): Promise<number>;
13
+ clear(): Promise<void>;
14
+ }
@@ -0,0 +1,18 @@
1
+ import type { WaParticipantsSnapshot, WaParticipantsStore } from '../../contracts/participants.store';
2
+ export interface WaParticipantsMemoryStoreOptions {
3
+ readonly maxGroups?: number;
4
+ }
5
+ export declare class WaParticipantsMemoryStore implements WaParticipantsStore {
6
+ private readonly records;
7
+ private readonly ttlMs;
8
+ private readonly maxGroups;
9
+ private readonly cleanupTimer;
10
+ constructor(ttlMs?: number, options?: WaParticipantsMemoryStoreOptions);
11
+ getTtlMs(): number;
12
+ upsertGroupParticipants(snapshot: WaParticipantsSnapshot): Promise<void>;
13
+ getGroupParticipants(groupJid: string, nowMs?: number): Promise<WaParticipantsSnapshot | null>;
14
+ deleteGroupParticipants(groupJid: string): Promise<number>;
15
+ cleanupExpired(nowMs: number): Promise<number>;
16
+ clear(): Promise<void>;
17
+ destroy(): Promise<void>;
18
+ }
@@ -0,0 +1,18 @@
1
+ import type { WaRetryOutboundMessageRecord, WaRetryOutboundState } from '../../../retry/types';
2
+ import type { WaRetryStore } from '../../contracts/retry.store';
3
+ export declare class WaRetryMemoryStore implements WaRetryStore {
4
+ private readonly outboundMessages;
5
+ private readonly inboundCounters;
6
+ private readonly ttlMs;
7
+ private readonly cleanupTimer;
8
+ constructor(ttlMs?: number);
9
+ getTtlMs(): number;
10
+ upsertOutboundMessage(record: WaRetryOutboundMessageRecord): Promise<void>;
11
+ getOutboundMessage(messageId: string): Promise<WaRetryOutboundMessageRecord | null>;
12
+ updateOutboundMessageState(messageId: string, state: WaRetryOutboundState, updatedAtMs: number, expiresAtMs: number): Promise<void>;
13
+ incrementInboundCounter(messageId: string, requesterJid: string, _updatedAtMs: number, expiresAtMs: number): Promise<number>;
14
+ cleanupExpired(nowMs: number): Promise<number>;
15
+ clear(): Promise<void>;
16
+ destroy(): Promise<void>;
17
+ private counterKey;
18
+ }
@@ -0,0 +1,28 @@
1
+ import type { SenderKeyDistributionRecord, SenderKeyRecord, SignalAddress } from '../../../signal/types';
2
+ import type { WaSenderKeyStore as WaSenderKeyStoreContract } from '../../contracts/sender-key.store';
3
+ export interface WaSenderKeyMemoryStoreOptions {
4
+ readonly maxSenderKeys?: number;
5
+ readonly maxSenderDistributions?: number;
6
+ }
7
+ export declare class SenderKeyMemoryStore implements WaSenderKeyStoreContract {
8
+ private readonly senderKeys;
9
+ private readonly senderDistributions;
10
+ private readonly maxSenderKeys;
11
+ private readonly maxSenderDistributions;
12
+ constructor(options?: WaSenderKeyMemoryStoreOptions);
13
+ upsertSenderKey(record: SenderKeyRecord): Promise<void>;
14
+ upsertSenderKeyDistribution(record: SenderKeyDistributionRecord): Promise<void>;
15
+ upsertSenderKeyDistributions(records: readonly SenderKeyDistributionRecord[]): Promise<void>;
16
+ getGroupSenderKeyList(groupId: string): Promise<{
17
+ readonly skList: readonly SenderKeyRecord[];
18
+ readonly skDistribList: readonly SenderKeyDistributionRecord[];
19
+ }>;
20
+ getDeviceSenderKey(groupId: string, sender: SignalAddress): Promise<SenderKeyRecord | null>;
21
+ getDeviceSenderKeyDistribution(groupId: string, sender: SignalAddress): Promise<SenderKeyDistributionRecord | null>;
22
+ getDeviceSenderKeyDistributions(groupId: string, senders: readonly SignalAddress[]): Promise<readonly (SenderKeyDistributionRecord | null)[]>;
23
+ deleteDeviceSenderKey(target: SignalAddress, groupId?: string): Promise<number>;
24
+ markForgetSenderKey(groupId: string, participants: readonly SignalAddress[]): Promise<number>;
25
+ clear(): Promise<void>;
26
+ private deleteMatching;
27
+ private makeKey;
28
+ }
@@ -0,0 +1,51 @@
1
+ import type { PreKeyRecord, RegistrationInfo, SignalAddress, SignalSessionRecord, SignedPreKeyRecord } from '../../../signal/types';
2
+ import type { WaSignalStore as WaSignalStoreContract } from '../../contracts/signal.store';
3
+ export interface WaSignalMemoryStoreOptions {
4
+ readonly maxPreKeys?: number;
5
+ readonly maxSessions?: number;
6
+ readonly maxRemoteIdentities?: number;
7
+ }
8
+ export declare class WaSignalMemoryStore implements WaSignalStoreContract {
9
+ private registrationInfo;
10
+ private signedPreKey;
11
+ private signedPreKeyRotationTs;
12
+ private readonly preKeys;
13
+ private readonly uploadedPreKeys;
14
+ private serverHasPreKeys;
15
+ private readonly signalSessions;
16
+ private readonly remoteIdentities;
17
+ private nextPreKeyId;
18
+ private readonly maxPreKeys;
19
+ private readonly maxSessions;
20
+ private readonly maxRemoteIdentities;
21
+ constructor(options?: WaSignalMemoryStoreOptions);
22
+ getRegistrationInfo(): Promise<RegistrationInfo | null>;
23
+ setRegistrationInfo(info: RegistrationInfo): Promise<void>;
24
+ getSignedPreKey(): Promise<SignedPreKeyRecord | null>;
25
+ setSignedPreKey(record: SignedPreKeyRecord): Promise<void>;
26
+ getSignedPreKeyById(keyId: number): Promise<SignedPreKeyRecord | null>;
27
+ setSignedPreKeyRotationTs(value: number | null): Promise<void>;
28
+ getSignedPreKeyRotationTs(): Promise<number | null>;
29
+ putPreKey(record: PreKeyRecord): Promise<void>;
30
+ getOrGenPreKeys(count: number, generator: (keyId: number) => PreKeyRecord | Promise<PreKeyRecord>): Promise<readonly PreKeyRecord[]>;
31
+ getPreKeyById(keyId: number): Promise<PreKeyRecord | null>;
32
+ getPreKeysById(keyIds: readonly number[]): Promise<readonly (PreKeyRecord | null)[]>;
33
+ consumePreKeyById(keyId: number): Promise<PreKeyRecord | null>;
34
+ getOrGenSinglePreKey(generator: (keyId: number) => PreKeyRecord | Promise<PreKeyRecord>): Promise<PreKeyRecord>;
35
+ markKeyAsUploaded(keyId: number): Promise<void>;
36
+ setServerHasPreKeys(value: boolean): Promise<void>;
37
+ getServerHasPreKeys(): Promise<boolean>;
38
+ hasSession(address: SignalAddress): Promise<boolean>;
39
+ hasSessions(addresses: readonly SignalAddress[]): Promise<readonly boolean[]>;
40
+ getSession(address: SignalAddress): Promise<SignalSessionRecord | null>;
41
+ setSession(address: SignalAddress, session: SignalSessionRecord): Promise<void>;
42
+ deleteSession(address: SignalAddress): Promise<void>;
43
+ getRemoteIdentity(address: SignalAddress): Promise<Uint8Array | null>;
44
+ setRemoteIdentity(address: SignalAddress, identityKey: Uint8Array): Promise<void>;
45
+ setRemoteIdentities(entries: readonly {
46
+ readonly address: SignalAddress;
47
+ readonly identityKey: Uint8Array;
48
+ }[]): Promise<void>;
49
+ clear(): Promise<void>;
50
+ private addUploadedPreKey;
51
+ }
@@ -0,0 +1,14 @@
1
+ import type { WaStoredThreadRecord, WaThreadStore as Contract } from '../../contracts/thread.store';
2
+ export interface WaThreadMemoryStoreOptions {
3
+ readonly maxThreads?: number;
4
+ }
5
+ export declare class WaThreadMemoryStore implements Contract {
6
+ private readonly threads;
7
+ private readonly maxThreads;
8
+ constructor(options?: WaThreadMemoryStoreOptions);
9
+ upsert(record: WaStoredThreadRecord): Promise<void>;
10
+ getByJid(jid: string): Promise<WaStoredThreadRecord | null>;
11
+ list(limit?: number): Promise<readonly WaStoredThreadRecord[]>;
12
+ deleteByJid(jid: string): Promise<number>;
13
+ clear(): Promise<void>;
14
+ }
@@ -0,0 +1,12 @@
1
+ import { type WaSqliteConnection } from '../../providers/sqlite/connection';
2
+ import { type WaSqliteMigrationDomain } from '../../providers/sqlite/migrations';
3
+ import type { WaSqliteStorageOptions } from '../../types';
4
+ export declare abstract class BaseSqliteStore {
5
+ protected readonly options: WaSqliteStorageOptions;
6
+ private readonly migrationDomains;
7
+ private connectionPromise;
8
+ protected constructor(options: WaSqliteStorageOptions, migrationDomains: readonly WaSqliteMigrationDomain[]);
9
+ protected getConnection(): Promise<WaSqliteConnection>;
10
+ protected withTransaction<T>(run: (connection: WaSqliteConnection) => Promise<T> | T): Promise<T>;
11
+ destroy(): Promise<void>;
12
+ }
@@ -0,0 +1,15 @@
1
+ import type { AppStateCollectionName, WaAppStateSyncKey, WaAppStateStoreData } from '../../../appstate/types';
2
+ import type { WaAppStateCollectionStateUpdate, WaAppStateCollectionStoreState, WaAppStateStore } from '../../contracts/appstate.store';
3
+ import { BaseSqliteStore } from '../../providers/sqlite/BaseSqliteStore';
4
+ import type { WaSqliteStorageOptions } from '../../types';
5
+ export declare class WaAppStateSqliteStore extends BaseSqliteStore implements WaAppStateStore {
6
+ constructor(options: WaSqliteStorageOptions);
7
+ exportData(): Promise<WaAppStateStoreData>;
8
+ upsertSyncKeys(keys: readonly WaAppStateSyncKey[]): Promise<number>;
9
+ getSyncKey(keyId: Uint8Array): Promise<WaAppStateSyncKey | null>;
10
+ getSyncKeyData(keyId: Uint8Array): Promise<Uint8Array | null>;
11
+ getActiveSyncKey(): Promise<WaAppStateSyncKey | null>;
12
+ getCollectionState(collection: AppStateCollectionName): Promise<WaAppStateCollectionStoreState>;
13
+ setCollectionStates(updates: readonly WaAppStateCollectionStateUpdate[]): Promise<void>;
14
+ clear(): Promise<void>;
15
+ }
@@ -0,0 +1,10 @@
1
+ import type { WaAuthCredentials } from '../../../auth/types';
2
+ import type { WaAuthStore } from '../../contracts/auth.store';
3
+ import { BaseSqliteStore } from '../../providers/sqlite/BaseSqliteStore';
4
+ import type { WaSqliteStorageOptions } from '../../types';
5
+ export declare class WaAuthSqliteStore extends BaseSqliteStore implements WaAuthStore {
6
+ constructor(options: WaSqliteStorageOptions);
7
+ load(): Promise<WaAuthCredentials | null>;
8
+ save(credentials: WaAuthCredentials): Promise<void>;
9
+ clear(): Promise<void>;
10
+ }
@@ -0,0 +1,10 @@
1
+ import type { WaSqliteDriver, WaSqliteStorageOptions } from '../../types';
2
+ export interface WaSqliteConnection {
3
+ readonly driver: Exclude<WaSqliteDriver, 'auto'>;
4
+ exec(sql: string): void;
5
+ run(sql: string, params?: readonly unknown[]): void;
6
+ get<T extends Record<string, unknown>>(sql: string, params?: readonly unknown[]): T | null;
7
+ all<T extends Record<string, unknown>>(sql: string, params?: readonly unknown[]): readonly T[];
8
+ close(): void;
9
+ }
10
+ export declare function openSqliteConnection(options: WaSqliteStorageOptions): Promise<WaSqliteConnection>;
@@ -0,0 +1,10 @@
1
+ import type { WaContactStore as Contract, WaStoredContactRecord } from '../../contracts/contact.store';
2
+ import { BaseSqliteStore } from '../../providers/sqlite/BaseSqliteStore';
3
+ import type { WaSqliteStorageOptions } from '../../types';
4
+ export declare class WaContactSqliteStore extends BaseSqliteStore implements Contract {
5
+ constructor(options: WaSqliteStorageOptions);
6
+ upsert(record: WaStoredContactRecord): Promise<void>;
7
+ getByJid(jid: string): Promise<WaStoredContactRecord | null>;
8
+ deleteByJid(jid: string): Promise<number>;
9
+ clear(): Promise<void>;
10
+ }
@@ -0,0 +1,18 @@
1
+ import type { WaDeviceListSnapshot, WaDeviceListStore } from '../../contracts/device-list.store';
2
+ import { BaseSqliteStore } from '../../providers/sqlite/BaseSqliteStore';
3
+ import type { WaSqliteStorageOptions } from '../../types';
4
+ export declare class WaDeviceListSqliteStore extends BaseSqliteStore implements WaDeviceListStore {
5
+ private readonly ttlMs;
6
+ private readonly batchSize;
7
+ constructor(options: WaSqliteStorageOptions, ttlMs?: number, batchSize?: number);
8
+ getTtlMs(): number;
9
+ upsertUserDevices(snapshot: WaDeviceListSnapshot): Promise<void>;
10
+ upsertUserDevicesBatch(snapshots: readonly WaDeviceListSnapshot[]): Promise<void>;
11
+ getUserDevices(userJid: string, nowMs?: number): Promise<WaDeviceListSnapshot | null>;
12
+ getUserDevicesBatch(userJids: readonly string[], nowMs?: number): Promise<readonly (WaDeviceListSnapshot | null)[]>;
13
+ deleteUserDevices(userJid: string): Promise<number>;
14
+ cleanupExpired(nowMs: number): Promise<number>;
15
+ clear(): Promise<void>;
16
+ private upsertUserDevicesRow;
17
+ private deleteUserDevicesByJids;
18
+ }
@@ -0,0 +1,11 @@
1
+ import type { WaMessageStore as Contract, WaStoredMessageRecord } from '../../contracts/message.store';
2
+ import { BaseSqliteStore } from '../../providers/sqlite/BaseSqliteStore';
3
+ import type { WaSqliteStorageOptions } from '../../types';
4
+ export declare class WaMessageSqliteStore extends BaseSqliteStore implements Contract {
5
+ constructor(options: WaSqliteStorageOptions);
6
+ upsert(record: WaStoredMessageRecord): Promise<void>;
7
+ getById(id: string): Promise<WaStoredMessageRecord | null>;
8
+ listByThread(threadJid: string, limit?: number, beforeTimestampMs?: number): Promise<readonly WaStoredMessageRecord[]>;
9
+ deleteById(id: string): Promise<number>;
10
+ clear(): Promise<void>;
11
+ }
@@ -0,0 +1,3 @@
1
+ import type { WaSqliteConnection } from '../../providers/sqlite/connection';
2
+ export type WaSqliteMigrationDomain = 'auth' | 'signal' | 'senderKey' | 'appState' | 'retry' | 'participants' | 'deviceList' | 'mailbox';
3
+ export declare function ensureSqliteMigrations(db: WaSqliteConnection, domains: readonly WaSqliteMigrationDomain[]): Promise<void>;
@@ -0,0 +1,13 @@
1
+ import type { WaParticipantsSnapshot, WaParticipantsStore } from '../../contracts/participants.store';
2
+ import { BaseSqliteStore } from '../../providers/sqlite/BaseSqliteStore';
3
+ import type { WaSqliteStorageOptions } from '../../types';
4
+ export declare class WaParticipantsSqliteStore extends BaseSqliteStore implements WaParticipantsStore {
5
+ private readonly ttlMs;
6
+ constructor(options: WaSqliteStorageOptions, ttlMs?: number);
7
+ getTtlMs(): number;
8
+ upsertGroupParticipants(snapshot: WaParticipantsSnapshot): Promise<void>;
9
+ getGroupParticipants(groupJid: string, nowMs?: number): Promise<WaParticipantsSnapshot | null>;
10
+ deleteGroupParticipants(groupJid: string): Promise<number>;
11
+ cleanupExpired(nowMs: number): Promise<number>;
12
+ clear(): Promise<void>;
13
+ }
@@ -0,0 +1,16 @@
1
+ import type { WaRetryOutboundMessageRecord, WaRetryOutboundState } from '../../../retry/types';
2
+ import type { WaRetryStore } from '../../contracts/retry.store';
3
+ import { BaseSqliteStore } from '../../providers/sqlite/BaseSqliteStore';
4
+ import type { WaSqliteStorageOptions } from '../../types';
5
+ export declare class WaRetrySqliteStore extends BaseSqliteStore implements WaRetryStore {
6
+ private readonly ttlMs;
7
+ constructor(options: WaSqliteStorageOptions, ttlMs?: number);
8
+ getTtlMs(): number;
9
+ upsertOutboundMessage(record: WaRetryOutboundMessageRecord): Promise<void>;
10
+ getOutboundMessage(messageId: string): Promise<WaRetryOutboundMessageRecord | null>;
11
+ updateOutboundMessageState(messageId: string, state: WaRetryOutboundState, updatedAtMs: number, expiresAtMs: number): Promise<void>;
12
+ incrementInboundCounter(messageId: string, requesterJid: string, updatedAtMs: number, expiresAtMs: number): Promise<number>;
13
+ cleanupExpired(nowMs: number): Promise<number>;
14
+ clear(): Promise<void>;
15
+ private countRows;
16
+ }
@@ -0,0 +1,25 @@
1
+ import type { SenderKeyDistributionRecord, SenderKeyRecord, SignalAddress } from '../../../signal/types';
2
+ import type { WaSenderKeyStore as WaSenderKeyStoreContract } from '../../contracts/sender-key.store';
3
+ import { BaseSqliteStore } from '../../providers/sqlite/BaseSqliteStore';
4
+ import type { WaSqliteStorageOptions } from '../../types';
5
+ export declare class SenderKeySqliteStore extends BaseSqliteStore implements WaSenderKeyStoreContract {
6
+ private readonly distributionBatchSize;
7
+ constructor(options: WaSqliteStorageOptions, distributionBatchSize?: number);
8
+ upsertSenderKey(record: SenderKeyRecord): Promise<void>;
9
+ upsertSenderKeyDistribution(record: SenderKeyDistributionRecord): Promise<void>;
10
+ upsertSenderKeyDistributions(records: readonly SenderKeyDistributionRecord[]): Promise<void>;
11
+ getGroupSenderKeyList(groupId: string): Promise<{
12
+ readonly skList: readonly SenderKeyRecord[];
13
+ readonly skDistribList: readonly SenderKeyDistributionRecord[];
14
+ }>;
15
+ getDeviceSenderKey(groupId: string, sender: SignalAddress): Promise<SenderKeyRecord | null>;
16
+ getDeviceSenderKeyDistribution(groupId: string, sender: SignalAddress): Promise<SenderKeyDistributionRecord | null>;
17
+ getDeviceSenderKeyDistributions(groupId: string, senders: readonly SignalAddress[]): Promise<readonly (SenderKeyDistributionRecord | null)[]>;
18
+ deleteDeviceSenderKey(target: SignalAddress, groupId?: string): Promise<number>;
19
+ markForgetSenderKey(groupId: string, participants: readonly SignalAddress[]): Promise<number>;
20
+ clear(): Promise<void>;
21
+ private countDelete;
22
+ private upsertSenderKeyDistributionRow;
23
+ private distributionRowKey;
24
+ private distributionTargetKey;
25
+ }
@@ -0,0 +1,46 @@
1
+ import type { PreKeyRecord, RegistrationInfo, SignalAddress, SignalSessionRecord, SignedPreKeyRecord } from '../../../signal/types';
2
+ import type { WaSignalStore as WaSignalStoreContract } from '../../contracts/signal.store';
3
+ import { BaseSqliteStore } from '../../providers/sqlite/BaseSqliteStore';
4
+ import type { WaSqliteStorageOptions } from '../../types';
5
+ interface WaSignalSqliteStoreOptions {
6
+ readonly preKeyBatchSize?: number;
7
+ readonly hasSessionBatchSize?: number;
8
+ }
9
+ export declare class WaSignalSqliteStore extends BaseSqliteStore implements WaSignalStoreContract {
10
+ private readonly preKeyBatchSize;
11
+ private readonly hasSessionBatchSize;
12
+ constructor(options: WaSqliteStorageOptions, storeOptions?: WaSignalSqliteStoreOptions);
13
+ getRegistrationInfo(): Promise<RegistrationInfo | null>;
14
+ setRegistrationInfo(info: RegistrationInfo): Promise<void>;
15
+ getSignedPreKey(): Promise<SignedPreKeyRecord | null>;
16
+ setSignedPreKey(record: SignedPreKeyRecord): Promise<void>;
17
+ getSignedPreKeyById(keyId: number): Promise<SignedPreKeyRecord | null>;
18
+ setSignedPreKeyRotationTs(value: number | null): Promise<void>;
19
+ getSignedPreKeyRotationTs(): Promise<number | null>;
20
+ putPreKey(record: PreKeyRecord): Promise<void>;
21
+ getOrGenPreKeys(count: number, generator: (keyId: number) => PreKeyRecord | Promise<PreKeyRecord>): Promise<readonly PreKeyRecord[]>;
22
+ getPreKeyById(keyId: number): Promise<PreKeyRecord | null>;
23
+ getPreKeysById(keyIds: readonly number[]): Promise<readonly (PreKeyRecord | null)[]>;
24
+ consumePreKeyById(keyId: number): Promise<PreKeyRecord | null>;
25
+ getOrGenSinglePreKey(generator: (keyId: number) => PreKeyRecord | Promise<PreKeyRecord>): Promise<PreKeyRecord>;
26
+ markKeyAsUploaded(keyId: number): Promise<void>;
27
+ setServerHasPreKeys(value: boolean): Promise<void>;
28
+ getServerHasPreKeys(): Promise<boolean>;
29
+ hasSession(address: SignalAddress): Promise<boolean>;
30
+ hasSessions(addresses: readonly SignalAddress[]): Promise<readonly boolean[]>;
31
+ getSession(address: SignalAddress): Promise<SignalSessionRecord | null>;
32
+ setSession(address: SignalAddress, session: SignalSessionRecord): Promise<void>;
33
+ deleteSession(address: SignalAddress): Promise<void>;
34
+ getRemoteIdentity(address: SignalAddress): Promise<Uint8Array | null>;
35
+ setRemoteIdentity(address: SignalAddress, identityKey: Uint8Array): Promise<void>;
36
+ setRemoteIdentities(entries: readonly {
37
+ readonly address: SignalAddress;
38
+ readonly identityKey: Uint8Array;
39
+ }[]): Promise<void>;
40
+ clear(): Promise<void>;
41
+ private upsertPreKey;
42
+ private ensureMetaRow;
43
+ private getMeta;
44
+ private upsertRemoteIdentity;
45
+ }
46
+ export {};
@@ -0,0 +1,11 @@
1
+ import type { WaStoredThreadRecord, WaThreadStore as Contract } from '../../contracts/thread.store';
2
+ import { BaseSqliteStore } from '../../providers/sqlite/BaseSqliteStore';
3
+ import type { WaSqliteStorageOptions } from '../../types';
4
+ export declare class WaThreadSqliteStore extends BaseSqliteStore implements Contract {
5
+ constructor(options: WaSqliteStorageOptions);
6
+ upsert(record: WaStoredThreadRecord): Promise<void>;
7
+ getByJid(jid: string): Promise<WaStoredThreadRecord | null>;
8
+ list(limit?: number): Promise<readonly WaStoredThreadRecord[]>;
9
+ deleteByJid(jid: string): Promise<number>;
10
+ clear(): Promise<void>;
11
+ }
@@ -0,0 +1,103 @@
1
+ import type { WaAppStateStore } from './contracts/appstate.store';
2
+ import type { WaAuthStore } from './contracts/auth.store';
3
+ import type { WaContactStore } from './contracts/contact.store';
4
+ import type { WaDeviceListStore } from './contracts/device-list.store';
5
+ import type { WaMessageStore } from './contracts/message.store';
6
+ import type { WaParticipantsStore } from './contracts/participants.store';
7
+ import type { WaRetryStore } from './contracts/retry.store';
8
+ import type { WaSenderKeyStore } from './contracts/sender-key.store';
9
+ import type { WaSignalStore } from './contracts/signal.store';
10
+ 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
+ }
18
+ export interface WaStoreSession {
19
+ readonly auth: WaAuthStore;
20
+ readonly signal: WaSignalStore;
21
+ readonly senderKey: WaSenderKeyStore;
22
+ readonly appState: WaAppStateStore;
23
+ readonly retry: WaRetryStore;
24
+ readonly participants: WaParticipantsStore;
25
+ readonly deviceList: WaDeviceListStore;
26
+ readonly messages: WaMessageStore;
27
+ readonly threads: WaThreadStore;
28
+ readonly contacts: WaContactStore;
29
+ destroyCaches(): Promise<void>;
30
+ destroy(): Promise<void>;
31
+ }
32
+ export interface WaStore {
33
+ session(sessionId: string): WaStoreSession;
34
+ destroyCaches(): Promise<void>;
35
+ destroy(): Promise<void>;
36
+ }
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;
55
+ }
56
+ export interface WaStoreSqliteBatchSizeSelection {
57
+ readonly deviceList?: number;
58
+ readonly senderKeyDistribution?: number;
59
+ readonly signalPreKey?: number;
60
+ readonly signalHasSession?: number;
61
+ }
62
+ export interface WaStoreMemoryLimitSelection {
63
+ readonly appStateSyncKeys?: number;
64
+ readonly appStateCollectionEntries?: number;
65
+ readonly signalPreKeys?: number;
66
+ readonly signalSessions?: number;
67
+ readonly signalRemoteIdentities?: number;
68
+ readonly senderKeys?: number;
69
+ readonly senderDistributions?: number;
70
+ readonly participantsGroups?: number;
71
+ readonly deviceListUsers?: number;
72
+ readonly messages?: number;
73
+ readonly threads?: number;
74
+ 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;
103
+ }
@@ -0,0 +1,61 @@
1
+ import type { Logger } from '../infra/log/types';
2
+ import type { WaCommsConfig, WaCommsState } from './types';
3
+ type StanzaHandler = (payload: Uint8Array) => void | Promise<void>;
4
+ type InflateFrame = (compressed: Uint8Array) => Uint8Array | Promise<Uint8Array>;
5
+ export declare class WaComms {
6
+ private readonly config;
7
+ private readonly logger;
8
+ private readonly socket;
9
+ private started;
10
+ private connected;
11
+ private handlingRequests;
12
+ private preventRetry;
13
+ private reconnectAttempts;
14
+ private reconnectTimer;
15
+ private waiters;
16
+ private stanzaHandler;
17
+ private inflateFrame;
18
+ private pendingFrames;
19
+ private pendingFramesByteLength;
20
+ private readonly pendingFramesMaxCount;
21
+ private readonly pendingFramesMaxBytes;
22
+ private pendingFramesOverflowClosing;
23
+ private resumeInFlight;
24
+ private resumeHandshakeFailures;
25
+ private usedResumeHandshake;
26
+ private noiseSession;
27
+ private lastServerStaticKey;
28
+ private frameProcessingQueue;
29
+ private readonly frameHandlerQueue;
30
+ constructor(config: WaCommsConfig, logger?: Logger);
31
+ private applyRoutingInfoToSocketConfig;
32
+ startComms(handleStanza: StanzaHandler, inflateFrame?: InflateFrame): void;
33
+ waitForConnection(timeoutMs?: number): Promise<void>;
34
+ startHandlingRequests(): void;
35
+ stopComms(): Promise<void>;
36
+ closeSocketAndResume(): Promise<void>;
37
+ closeSocketAndPreventRetry(): Promise<void>;
38
+ sendFrame(payload: Uint8Array): Promise<void>;
39
+ getCommsState(): Readonly<WaCommsState>;
40
+ getServerStaticKey(): Uint8Array | null;
41
+ private openSocket;
42
+ private onSocketClosed;
43
+ private onSocketMessage;
44
+ private processSocketPayload;
45
+ private onDecodedFrame;
46
+ private onSocketOpened;
47
+ private flushPendingFrames;
48
+ private routeDecodedFrames;
49
+ private clearPendingFrames;
50
+ private tryQueuePendingFrames;
51
+ private schedulePendingFramesOverflowClose;
52
+ private scheduleDecodedFrame;
53
+ private scheduleReconnect;
54
+ private clearReconnectTimer;
55
+ private removeWaiter;
56
+ private withStickyRoutingCookie;
57
+ private buildNoiseConfigForAttempt;
58
+ private resetConnectionState;
59
+ private drainWaiters;
60
+ }
61
+ export {};
@@ -0,0 +1,36 @@
1
+ import type { Logger } from '../infra/log/types';
2
+ import type { SocketCloseInfo, SocketOpenInfo, WaSocketConfig, WaSocketHandlers } from './types';
3
+ export declare class WaWebSocket {
4
+ private readonly config;
5
+ private readonly socketUrls;
6
+ private readonly logger;
7
+ private readonly webSocketCtor;
8
+ private readonly socketRuntime;
9
+ private readonly connectingSockets;
10
+ private handlers;
11
+ private socket;
12
+ private closeWaiter;
13
+ constructor(config: WaSocketConfig, logger?: Logger);
14
+ setHandlers(handlers: WaSocketHandlers): void;
15
+ isOpen(): boolean;
16
+ isConnecting(): boolean;
17
+ getReadyState(): number;
18
+ open(): Promise<SocketOpenInfo>;
19
+ close(code?: number, reason?: string): Promise<SocketCloseInfo | null>;
20
+ send(data: string | ArrayBuffer | Uint8Array): Promise<void>;
21
+ private openSingle;
22
+ private openConcurrently;
23
+ private bindRuntimeHandlers;
24
+ private handleMessage;
25
+ private normalizePayload;
26
+ private createPendingSocket;
27
+ private bindPendingSocket;
28
+ private settlePendingSocket;
29
+ private releasePendingSocket;
30
+ private activatePendingSocket;
31
+ private toCloseInfo;
32
+ private handleRuntimeError;
33
+ private handleRuntimeClose;
34
+ private closeSocketSafe;
35
+ private createRawSocket;
36
+ }