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,49 @@
1
+ export declare const LIST_EMPTY = 0;
2
+ export declare const STREAM_END = 2;
3
+ export declare const DICTIONARY_0 = 236;
4
+ export declare const DICTIONARY_3 = 239;
5
+ export declare const JID_INTEROP = 245;
6
+ export declare const JID_FB = 246;
7
+ export declare const JID_U = 247;
8
+ export declare const LIST_8 = 248;
9
+ export declare const LIST_16 = 249;
10
+ export declare const JID_PAIR = 250;
11
+ export declare const HEX_8 = 251;
12
+ export declare const BINARY_8 = 252;
13
+ export declare const BINARY_20 = 253;
14
+ export declare const BINARY_32 = 254;
15
+ export declare const NIBBLE_8 = 255;
16
+ export declare const NIBBLE_ALPHABET: readonly string[];
17
+ export declare const HEX_ALPHABET: readonly string[];
18
+ export declare const SINGLE_BYTE_TOKEN_MAP: ReadonlyMap<string, number>;
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
+ }>;
@@ -0,0 +1,3 @@
1
+ import type { BinaryNode } from '../types';
2
+ export declare function decodeBinaryNode(data: Uint8Array): BinaryNode;
3
+ export declare function decodeBinaryNodeStanza(stanza: Uint8Array): Promise<BinaryNode>;
@@ -0,0 +1,3 @@
1
+ import type { BinaryNode } from '../types';
2
+ export declare function encodeBinaryNode(node: BinaryNode): Uint8Array;
3
+ export declare function encodeBinaryNodeStanza(node: BinaryNode): Uint8Array;
@@ -0,0 +1,4 @@
1
+ export * from '../binary/tokens';
2
+ export * from '../binary/encoder';
3
+ export * from '../binary/decoder';
4
+ export { WAP_DECODE_CONSTANTS as WapDecodeConstants, WAP_ENCODE_CONSTANTS as WapEncodeConstants } from '../binary/constants';
@@ -0,0 +1,11 @@
1
+ /**
2
+ * WhatsApp WAP dictionary tokens (dict version 3).
3
+ * Source: WAWeb deobfuscated WAWapDict.js
4
+ */
5
+ export declare const DICT_VERSION = 3;
6
+ export declare const SINGLE_BYTE_TOKENS: readonly string[];
7
+ export declare const DICTIONARY_0_TOKENS: readonly string[];
8
+ export declare const DICTIONARY_1_TOKENS: readonly string[];
9
+ export declare const DICTIONARY_2_TOKENS: readonly string[];
10
+ export declare const DICTIONARY_3_TOKENS: readonly string[];
11
+ export declare const DICTIONARIES: readonly (readonly string[])[];
@@ -0,0 +1,7 @@
1
+ export type { BinaryNode, RawWebSocket, RawWebSocketConstructor, SocketCloseInfo, SocketOpenInfo, WaCommsConfig, WaCommsState, WaNoiseConfig, WaSocketConfig, WaSocketHandlers } from './types';
2
+ export { WaComms } from './WaComms';
3
+ export { WaWebSocket } from './WaWebSocket';
4
+ export { WaKeepAlive } from './keepalive/WaKeepAlive';
5
+ export { WaNodeOrchestrator } from './node/WaNodeOrchestrator';
6
+ export { WaNodeTransport } from './node/WaNodeTransport';
7
+ export { assertIqResult, buildIqNode, parseIqError, queryWithContext } from './node/query';
@@ -0,0 +1,39 @@
1
+ import type { Logger } from '../../infra/log/types';
2
+ import type { BinaryNode } from '../types';
3
+ import type { WaComms } from '../WaComms';
4
+ interface WaKeepAliveOptions {
5
+ readonly logger: Logger;
6
+ readonly nodeOrchestrator: {
7
+ hasPending(): boolean;
8
+ query(node: BinaryNode, timeoutMs?: number): Promise<BinaryNode>;
9
+ };
10
+ readonly getComms: () => WaComms | null;
11
+ readonly intervalMs?: number;
12
+ readonly timeoutMs?: number;
13
+ readonly hostDomain?: string;
14
+ readonly jitterRatio?: number;
15
+ readonly minJitterMs?: number;
16
+ }
17
+ export declare class WaKeepAlive {
18
+ private readonly logger;
19
+ private readonly nodeOrchestrator;
20
+ private readonly getCommsFn;
21
+ private readonly intervalMs;
22
+ private readonly timeoutMs;
23
+ private readonly hostDomain;
24
+ private readonly jitterRatio;
25
+ private readonly minJitterMs;
26
+ private timer;
27
+ private generation;
28
+ private inFlight;
29
+ constructor(options: WaKeepAliveOptions);
30
+ start(): void;
31
+ stop(): void;
32
+ private schedule;
33
+ private run;
34
+ private normalizeJitterRatio;
35
+ private normalizeMinJitterMs;
36
+ private computeNextDelayMs;
37
+ private clearTimer;
38
+ }
39
+ export {};
@@ -0,0 +1,28 @@
1
+ import type { Logger } from '../../infra/log/types';
2
+ import type { BinaryNode } from '../types';
3
+ interface WaNodeOrchestratorOptions {
4
+ readonly logger: Logger;
5
+ readonly sendNode: (node: BinaryNode) => Promise<void>;
6
+ readonly defaultTimeoutMs?: number;
7
+ readonly hostDomain?: string;
8
+ }
9
+ export declare class WaNodeOrchestrator {
10
+ private readonly logger;
11
+ private readonly sendNodeFn;
12
+ private readonly defaultTimeoutMs;
13
+ private readonly hostDomain;
14
+ private stanzaPrefix;
15
+ private stanzaCounter;
16
+ private readonly pendingQueries;
17
+ constructor(options: WaNodeOrchestratorOptions);
18
+ hasPending(): boolean;
19
+ clearPending(reason: Error): void;
20
+ tryResolvePending(node: BinaryNode): boolean;
21
+ handleIncomingNode(node: BinaryNode): Promise<boolean>;
22
+ sendNode(node: BinaryNode): Promise<void>;
23
+ query(node: BinaryNode, timeoutMs?: number): Promise<BinaryNode>;
24
+ private withAutoId;
25
+ private getStanzaPrefix;
26
+ private generateStanzaPrefix;
27
+ }
28
+ export {};
@@ -0,0 +1,22 @@
1
+ import { EventEmitter } from 'node:events';
2
+ import type { Logger } from '../../infra/log/types';
3
+ import type { BinaryNode } from '../types';
4
+ import type { WaComms } from '../WaComms';
5
+ interface NodeTransportEventMap {
6
+ readonly frame_in: (frame: Uint8Array) => void;
7
+ readonly frame_out: (frame: Uint8Array) => void;
8
+ readonly node_in: (node: BinaryNode, frame: Uint8Array) => void;
9
+ readonly node_out: (node: BinaryNode, frame: Uint8Array) => void;
10
+ readonly decode_error: (error: Error, frame: Uint8Array) => void;
11
+ }
12
+ export declare class WaNodeTransport extends EventEmitter {
13
+ private readonly logger;
14
+ private comms;
15
+ constructor(logger?: Logger);
16
+ on<K extends keyof NodeTransportEventMap>(event: K, listener: NodeTransportEventMap[K]): this;
17
+ bindComms(comms: WaComms | null): void;
18
+ sendNode(node: BinaryNode): Promise<void>;
19
+ dispatchIncomingFrame(frame: Uint8Array, onNode: (node: BinaryNode) => Promise<void> | void): Promise<void>;
20
+ private shouldIncludeTraceXml;
21
+ }
22
+ export {};
@@ -0,0 +1,11 @@
1
+ import type { BinaryNode } from '../../types';
2
+ export declare function buildAccountDevicesSyncIq(userJids: readonly string[], sid: string): BinaryNode;
3
+ export declare function buildAccountPictureSyncIq(meJid: string): BinaryNode;
4
+ export declare function buildAccountPrivacySyncIq(): BinaryNode;
5
+ export declare function buildAccountBlocklistSyncIq(): BinaryNode;
6
+ export declare function buildGroupsDirtySyncIq(): BinaryNode;
7
+ export declare function buildNewsletterMetadataSyncIq(): BinaryNode;
8
+ export declare function buildClearDirtyBitsIq(dirtyBits: readonly {
9
+ readonly type: string;
10
+ readonly timestamp: number;
11
+ }[]): BinaryNode;
@@ -0,0 +1,16 @@
1
+ import type { BinaryNode } from '../../types';
2
+ interface BuildCreateGroupIqInput {
3
+ readonly subject: string;
4
+ readonly participants: readonly string[];
5
+ readonly description?: string;
6
+ }
7
+ export declare function buildCreateGroupIq(input: BuildCreateGroupIqInput): BinaryNode;
8
+ type GroupParticipantAction = 'add' | 'remove' | 'promote' | 'demote';
9
+ interface BuildGroupParticipantChangeIqInput {
10
+ readonly groupJid: string;
11
+ readonly action: GroupParticipantAction;
12
+ readonly participants: readonly string[];
13
+ }
14
+ export declare function buildGroupParticipantChangeIq(input: BuildGroupParticipantChangeIqInput): BinaryNode;
15
+ export declare function buildLeaveGroupIq(groupJids: readonly string[]): BinaryNode;
16
+ export {};
@@ -0,0 +1,7 @@
1
+ export { buildAccountBlocklistSyncIq, buildAccountDevicesSyncIq, buildAccountPictureSyncIq, buildAccountPrivacySyncIq, buildClearDirtyBitsIq, buildGroupsDirtySyncIq, buildNewsletterMetadataSyncIq } from '../../node/builders/accountSync';
2
+ export { buildCompanionFinishRequestNode, buildCompanionHelloRequestNode, buildGetCountryCodeRequestNode, buildIqResultNode, buildNotificationAckNode } from '../../node/builders/pairing';
3
+ export { buildMediaConnIq } from '../../node/builders/media';
4
+ export { buildDirectMessageFanoutNode, buildGroupDirectMessageNode, buildGroupRetryMessageNode, buildGroupSenderKeyMessageNode, buildInboundDeliveryReceiptNode, buildInboundMessageAckNode, buildInboundReceiptAckNode, buildInboundRetryReceiptNode, buildInboundRetryReceiptAckNode } from '../../node/builders/message';
5
+ export { buildRetryReceiptNode } from '../../node/builders/retry';
6
+ export { buildMissingPreKeysFetchIq, buildPreKeyUploadIq, buildSignedPreKeyRotateIq } from '../../node/builders/prekeys';
7
+ export { buildCreateGroupIq, buildGroupParticipantChangeIq, buildLeaveGroupIq } from '../../node/builders/group';
@@ -0,0 +1,2 @@
1
+ import type { BinaryNode } from '../../types';
2
+ export declare function buildMediaConnIq(): BinaryNode;
@@ -0,0 +1,52 @@
1
+ import type { BinaryNode } from '../../types';
2
+ interface EncryptedParticipant {
3
+ readonly jid: string;
4
+ readonly encType: 'msg' | 'pkmsg';
5
+ readonly ciphertext: Uint8Array;
6
+ }
7
+ interface BuildDirectMessageFanoutNodeInput {
8
+ readonly to: string;
9
+ readonly type: string;
10
+ readonly id?: string;
11
+ readonly participants: readonly EncryptedParticipant[];
12
+ readonly deviceIdentity?: Uint8Array;
13
+ }
14
+ interface BuildGroupSenderKeyMessageNodeInput {
15
+ readonly to: string;
16
+ readonly type: string;
17
+ readonly groupCiphertext: Uint8Array;
18
+ readonly id?: string;
19
+ readonly phash?: string;
20
+ readonly addressingMode?: 'pn' | 'lid';
21
+ readonly participants: readonly EncryptedParticipant[];
22
+ readonly deviceIdentity?: Uint8Array;
23
+ }
24
+ interface BuildGroupDirectMessageNodeInput {
25
+ readonly to: string;
26
+ readonly type: string;
27
+ readonly id?: string;
28
+ readonly phash?: string;
29
+ readonly addressingMode?: 'pn' | 'lid';
30
+ readonly participants: readonly EncryptedParticipant[];
31
+ readonly deviceIdentity?: Uint8Array;
32
+ }
33
+ interface BuildGroupRetryMessageNodeInput {
34
+ readonly to: string;
35
+ readonly type: string;
36
+ readonly id: string;
37
+ readonly requesterJid: string;
38
+ readonly addressingMode: 'pn' | 'lid';
39
+ readonly encType: 'msg' | 'pkmsg';
40
+ readonly ciphertext: Uint8Array;
41
+ readonly deviceIdentity?: Uint8Array;
42
+ }
43
+ export declare function buildDirectMessageFanoutNode(input: BuildDirectMessageFanoutNodeInput): BinaryNode;
44
+ export declare function buildGroupSenderKeyMessageNode(input: BuildGroupSenderKeyMessageNodeInput): BinaryNode;
45
+ export declare function buildGroupDirectMessageNode(input: BuildGroupDirectMessageNodeInput): BinaryNode;
46
+ export declare function buildInboundMessageAckNode(messageNode: BinaryNode, id: string, to: string, meJid: string | null | undefined): BinaryNode;
47
+ export declare function buildInboundDeliveryReceiptNode(messageNode: BinaryNode, id: string, to: string): BinaryNode;
48
+ export declare function buildInboundRetryReceiptNode(messageNode: BinaryNode, id: string, to: string, meJid?: string | null, retryCount?: number): BinaryNode;
49
+ export declare function buildInboundRetryReceiptAckNode(receiptNode: BinaryNode): BinaryNode;
50
+ export declare function buildInboundReceiptAckNode(receiptNode: BinaryNode): BinaryNode;
51
+ export declare function buildGroupRetryMessageNode(input: BuildGroupRetryMessageNodeInput): BinaryNode;
52
+ export {};
@@ -0,0 +1,18 @@
1
+ import type { BinaryNode } from '../../types';
2
+ export declare function buildCompanionHelloRequestNode(args: {
3
+ readonly phoneJid: string;
4
+ readonly shouldShowPushNotification: boolean;
5
+ readonly wrappedCompanionEphemeralPub: Uint8Array;
6
+ readonly companionServerAuthKeyPub: Uint8Array;
7
+ readonly companionPlatformId: string;
8
+ readonly companionPlatformDisplay: string;
9
+ }): BinaryNode;
10
+ export declare function buildGetCountryCodeRequestNode(): BinaryNode;
11
+ export declare function buildCompanionFinishRequestNode(args: {
12
+ readonly phoneJid: string;
13
+ readonly wrappedKeyBundle: Uint8Array;
14
+ readonly companionIdentityPublic: Uint8Array;
15
+ readonly ref: Uint8Array;
16
+ }): BinaryNode;
17
+ export declare function buildNotificationAckNode(node: BinaryNode, typeOverride?: string): BinaryNode;
18
+ export declare function buildIqResultNode(iqNode: BinaryNode): BinaryNode;
@@ -0,0 +1,5 @@
1
+ import type { SignalMissingPreKeysTarget } from '../../../signal/api/SignalMissingPreKeysSyncApi';
2
+ import type { PreKeyRecord, RegistrationInfo, SignedPreKeyRecord } from '../../../signal/types';
3
+ export declare function buildPreKeyUploadIq(registrationInfo: RegistrationInfo, signedPreKey: SignedPreKeyRecord, preKeys: readonly PreKeyRecord[]): import("../..").BinaryNode;
4
+ export declare function buildSignedPreKeyRotateIq(signedPreKey: SignedPreKeyRecord): import("../..").BinaryNode;
5
+ export declare function buildMissingPreKeysFetchIq(users: readonly SignalMissingPreKeysTarget[]): import("../..").BinaryNode;
@@ -0,0 +1,18 @@
1
+ import type { WaRetryKeyBundle } from '../../../retry/types';
2
+ import type { BinaryNode } from '../../types';
3
+ interface BuildRetryReceiptNodeInput {
4
+ readonly stanzaId: string;
5
+ readonly to: string;
6
+ readonly participant?: string;
7
+ readonly recipient?: string;
8
+ readonly from?: string;
9
+ readonly originalMsgId: string;
10
+ readonly retryCount: number;
11
+ readonly t: string;
12
+ readonly registrationId: number;
13
+ readonly error?: number;
14
+ readonly categoryPeer?: boolean;
15
+ readonly keys?: WaRetryKeyBundle;
16
+ }
17
+ export declare function buildRetryReceiptNode(input: BuildRetryReceiptNodeInput): BinaryNode;
18
+ export {};
@@ -0,0 +1,8 @@
1
+ import type { BinaryNode } from '../types';
2
+ export declare function getNodeChildren(node: BinaryNode): readonly BinaryNode[];
3
+ export declare function findNodeChild(node: BinaryNode, tag: string): BinaryNode | undefined;
4
+ export declare function getFirstNodeChild(node: BinaryNode): BinaryNode | undefined;
5
+ export declare function getNodeChildrenByTag(node: BinaryNode, tag: string): readonly BinaryNode[];
6
+ export declare function hasNodeChild(node: BinaryNode, tag: string): boolean;
7
+ export declare function decodeNodeContentUtf8OrBytes(value: BinaryNode['content'], field: string): Uint8Array;
8
+ export declare function decodeNodeContentBase64OrBytes(value: BinaryNode['content'], field: string): Uint8Array;
@@ -0,0 +1,10 @@
1
+ import type { Logger } from '../../infra/log/types';
2
+ import type { BinaryNode } from '../types';
3
+ export declare function buildIqNode(type: 'get' | 'set', to: string, xmlns: string, content?: BinaryNode['content'], attrs?: Readonly<Record<string, string>>): BinaryNode;
4
+ export declare function parseIqError(node: BinaryNode): {
5
+ readonly code: string;
6
+ readonly text: string;
7
+ readonly numericCode?: number;
8
+ };
9
+ export declare function assertIqResult(node: BinaryNode, context: string): void;
10
+ export declare function queryWithContext(query: (node: BinaryNode, timeoutMs?: number) => Promise<BinaryNode>, logger: Logger, context: string, node: BinaryNode, timeoutMs: number, contextData?: Readonly<Record<string, unknown>>): Promise<BinaryNode>;
@@ -0,0 +1,2 @@
1
+ import type { BinaryNode } from '../types';
2
+ export declare function formatBinaryNodeAsXml(node: BinaryNode): string;
@@ -0,0 +1,3 @@
1
+ import type { WaLoginPayloadConfig, WaRegistrationPayloadConfig } from '../noise/types';
2
+ export declare function buildLoginPayload(config: WaLoginPayloadConfig): Uint8Array;
3
+ export declare function buildRegistrationPayload(config: WaRegistrationPayloadConfig): Uint8Array;
@@ -0,0 +1,9 @@
1
+ export declare class WaFrameCodec {
2
+ private readonly introFrame;
3
+ private readonly maxFrameLength;
4
+ private introSent;
5
+ private buffered;
6
+ constructor(introFrame?: Uint8Array, maxFrameLength?: number);
7
+ encodeFrame(frame: Uint8Array): Uint8Array;
8
+ pushWireChunk(chunk: Uint8Array): readonly Uint8Array[];
9
+ }
@@ -0,0 +1 @@
1
+ export declare function verifyNoiseCertificateChain(certificateChain: Uint8Array, serverStatic: Uint8Array): Promise<void>;
@@ -0,0 +1,14 @@
1
+ import { WaNoiseSocket } from '../noise/WaNoiseSocket';
2
+ export declare class WaNoiseHandshake {
3
+ private handshakeHash;
4
+ private chainingKey;
5
+ private cipherKey;
6
+ private nonce;
7
+ constructor();
8
+ start(protocolName: Uint8Array, prologue: Uint8Array): Promise<void>;
9
+ authenticate(data: Uint8Array): Promise<void>;
10
+ mixIntoKey(keyMaterial: Uint8Array): Promise<void>;
11
+ encrypt(plaintext: Uint8Array): Promise<Uint8Array>;
12
+ decrypt(ciphertext: Uint8Array): Promise<Uint8Array>;
13
+ finish(): Promise<WaNoiseSocket>;
14
+ }
@@ -0,0 +1,33 @@
1
+ import type { Logger } from '../../infra/log/types';
2
+ import type { WaNoiseConfig } from '../types';
3
+ export declare class WaNoiseSession {
4
+ private readonly sendWire;
5
+ private readonly logger;
6
+ private readonly writeQueue;
7
+ private readonly readQueue;
8
+ private frameCodec;
9
+ private handshakeInbox;
10
+ private handshakeWaiter;
11
+ private handshakeRejecter;
12
+ private pendingDecryptedFrames;
13
+ private closedError;
14
+ private noiseSocket;
15
+ private serverStaticKey;
16
+ private readonly handshakeFrameTimeoutMs;
17
+ constructor(sendWire: (payload: Uint8Array) => Promise<void>, logger?: Logger);
18
+ start(config: WaNoiseConfig): Promise<void>;
19
+ encryptFrame(frame: Uint8Array): Promise<Uint8Array>;
20
+ pushWireChunk(chunk: Uint8Array): Promise<readonly Uint8Array[]>;
21
+ onSocketClosed(error?: Error): void;
22
+ reset(): void;
23
+ getServerStaticKey(): Uint8Array | null;
24
+ private fullHandshake;
25
+ private resumeHandshake;
26
+ private tryResumeHandshakeWithIk;
27
+ private resumeHandshakeWithFallback;
28
+ private continueFullHandshake;
29
+ private sendHandshakeFrame;
30
+ private sendAndReceiveHandshakeFrame;
31
+ private waitHandshakeFrame;
32
+ private decodeBufferedPostHandshakeFrames;
33
+ }
@@ -0,0 +1,10 @@
1
+ import { type CryptoKey } from '@crypto';
2
+ export declare class WaNoiseSocket {
3
+ private readonly encryptKey;
4
+ private readonly decryptKey;
5
+ private writeCounter;
6
+ private readCounter;
7
+ constructor(encryptKey: CryptoKey, decryptKey: CryptoKey);
8
+ encrypt(frame: Uint8Array, additionalData?: Uint8Array): Promise<Uint8Array>;
9
+ decrypt(frame: Uint8Array, additionalData?: Uint8Array): Promise<Uint8Array>;
10
+ }
@@ -0,0 +1,7 @@
1
+ export declare const DEFAULT_VERSION_BASE = "2.3000.1034748654";
2
+ export declare const WA_PROTO_HEADER: Uint8Array<ArrayBuffer>;
3
+ export declare const NOISE_XX_NAME: NodeJS.NonSharedUint8Array;
4
+ export declare const NOISE_IK_NAME: NodeJS.NonSharedUint8Array;
5
+ export declare const NOISE_XX_FALLBACK_NAME: NodeJS.NonSharedUint8Array;
6
+ export declare const ROOT_CA_SERIAL = 0;
7
+ export declare const ROOT_CA_PUBLIC_KEY_HEX = "142375574d0a587166aae71ebe516437c4a28b73e3695c6ce1f7f9545da8ee6b";
@@ -0,0 +1,23 @@
1
+ import type { Proto } from '../..';
2
+ import type { RegistrationInfo, SignedPreKeyRecord } from '../../signal/types';
3
+ export interface WaPayloadCommonConfig {
4
+ readonly passive?: boolean;
5
+ readonly pull?: boolean;
6
+ readonly versionBase?: string;
7
+ readonly deviceBrowser?: string;
8
+ readonly deviceOsDisplayName?: string;
9
+ readonly userAgent?: typeof Proto.ClientPayload.prototype.userAgent;
10
+ readonly webInfo?: typeof Proto.ClientPayload.prototype.webInfo;
11
+ }
12
+ export interface WaLoginPayloadConfig extends WaPayloadCommonConfig {
13
+ readonly username: number;
14
+ readonly device?: number;
15
+ readonly lidDbMigrated?: boolean;
16
+ }
17
+ export interface WaRegistrationPayloadConfig extends WaPayloadCommonConfig {
18
+ readonly registrationInfo: RegistrationInfo;
19
+ readonly signedPreKey: SignedPreKeyRecord;
20
+ readonly buildHash?: Uint8Array;
21
+ readonly deviceProps?: Uint8Array;
22
+ readonly requireFullSync?: boolean;
23
+ }
@@ -0,0 +1,23 @@
1
+ import type { WaSuccessPersistAttributes } from '../../auth/types';
2
+ import type { BinaryNode } from '../types';
3
+ export type WaStreamControlNodeResult = {
4
+ readonly kind: 'xmlstreamend';
5
+ } | {
6
+ readonly kind: 'stream_error_code';
7
+ readonly code: number;
8
+ } | {
9
+ readonly kind: 'stream_error_replaced';
10
+ } | {
11
+ readonly kind: 'stream_error_device_removed';
12
+ } | {
13
+ readonly kind: 'stream_error_ack';
14
+ readonly id?: string;
15
+ } | {
16
+ readonly kind: 'stream_error_xml_not_well_formed';
17
+ } | {
18
+ readonly kind: 'stream_error_other';
19
+ };
20
+ export declare function parseStreamControlNode(node: BinaryNode): WaStreamControlNodeResult | null;
21
+ export declare function parseOptionalInt(value: string | undefined): number | undefined;
22
+ export declare function parseCompanionEncStatic(value: string | undefined, onError?: (error: Error) => void): Uint8Array | undefined;
23
+ export declare function parseSuccessPersistAttributes(node: BinaryNode, onCompanionParseError?: (error: Error) => void): WaSuccessPersistAttributes;
@@ -0,0 +1,71 @@
1
+ import type { SignalKeyPair } from '../crypto/curves/types';
2
+ import type { WaLoginPayloadConfig, WaRegistrationPayloadConfig } from './noise/types';
3
+ export interface BinaryNode {
4
+ readonly tag: string;
5
+ readonly attrs: Readonly<Record<string, string>>;
6
+ readonly content?: Uint8Array | string | readonly BinaryNode[];
7
+ }
8
+ export interface SocketOpenInfo {
9
+ readonly openedAt: number;
10
+ }
11
+ export interface SocketCloseInfo {
12
+ readonly code: number;
13
+ readonly reason: string;
14
+ readonly wasClean: boolean;
15
+ }
16
+ export interface WaSocketConfig {
17
+ readonly url?: string;
18
+ readonly urls?: readonly string[];
19
+ readonly protocols?: readonly string[];
20
+ readonly headers?: Readonly<Record<string, string>>;
21
+ readonly timeoutIntervalMs?: number;
22
+ }
23
+ export interface WaSocketHandlers {
24
+ readonly onOpen?: (info: SocketOpenInfo) => void | Promise<void>;
25
+ readonly onClose?: (info: SocketCloseInfo) => void | Promise<void>;
26
+ readonly onError?: (error: Error) => void | Promise<void>;
27
+ readonly onMessage?: (payload: Uint8Array) => void | Promise<void>;
28
+ }
29
+ export interface WaCommsConfig extends WaSocketConfig {
30
+ readonly connectTimeoutMs?: number;
31
+ readonly reconnectIntervalMs?: number;
32
+ readonly maxReconnectAttempts?: number;
33
+ readonly noise: WaNoiseConfig;
34
+ }
35
+ export interface WaCommsState {
36
+ readonly started: boolean;
37
+ readonly connected: boolean;
38
+ readonly handlingRequests: boolean;
39
+ readonly reconnectAttempts: number;
40
+ }
41
+ export interface WaNoiseConfig {
42
+ readonly clientStaticKeyPair: SignalKeyPair;
43
+ readonly isRegistered: boolean;
44
+ readonly loginPayload?: Uint8Array | (() => Uint8Array | Promise<Uint8Array>);
45
+ readonly registrationPayload?: Uint8Array | (() => Uint8Array | Promise<Uint8Array>);
46
+ readonly loginPayloadConfig?: WaLoginPayloadConfig;
47
+ readonly registrationPayloadConfig?: WaRegistrationPayloadConfig;
48
+ readonly serverStaticKey?: Uint8Array;
49
+ readonly routingInfo?: Uint8Array;
50
+ readonly protocolHeader?: Uint8Array;
51
+ readonly verifyCertificateChain?: boolean;
52
+ }
53
+ export interface WebSocketEventLike {
54
+ readonly code?: number;
55
+ readonly reason?: string;
56
+ readonly wasClean?: boolean;
57
+ readonly data?: unknown;
58
+ }
59
+ export interface RawWebSocket {
60
+ binaryType: string;
61
+ readyState: number;
62
+ onopen: ((event: WebSocketEventLike) => void) | null;
63
+ onclose: ((event: WebSocketEventLike) => void) | null;
64
+ onerror: ((event: WebSocketEventLike) => void) | null;
65
+ onmessage: ((event: WebSocketEventLike) => void) | null;
66
+ close(code?: number, reason?: string): void;
67
+ send(data: string | ArrayBuffer | Uint8Array): void;
68
+ }
69
+ export type RawWebSocketConstructor = new (url: string, protocols?: string | readonly string[], options?: {
70
+ headers?: Readonly<Record<string, string>>;
71
+ }) => RawWebSocket;
@@ -0,0 +1 @@
1
+ export declare function delay(ms: number): Promise<void>;
@@ -0,0 +1,4 @@
1
+ import { bytesToBase64, bytesToBase64UrlSafe } from './bytes';
2
+ export { bytesToBase64, bytesToBase64UrlSafe };
3
+ export declare function base64ToBytes(value: string, field: string, requireNonEmpty?: boolean): Uint8Array;
4
+ export declare function decodeProtoBytes(value: Uint8Array | string | null | undefined, field: string): Uint8Array;
@@ -0,0 +1,28 @@
1
+ import type { Readable } from 'node:stream';
2
+ export declare const TEXT_ENCODER: import("../util").TextEncoder;
3
+ export declare const TEXT_DECODER: import("../util").TextDecoder;
4
+ export declare const EMPTY_BYTES: Readonly<Uint8Array<ArrayBuffer>>;
5
+ /**
6
+ * Encodes a Uint8Array to a hex string
7
+ */
8
+ export declare function bytesToHex(value: Uint8Array): string;
9
+ /**
10
+ * Decodes a hex string to a Uint8Array
11
+ */
12
+ export declare function hexToBytes(value: string): Uint8Array;
13
+ export declare function bytesToBase64(value: Uint8Array): string;
14
+ export declare function base64ToBytes(value: string): Uint8Array;
15
+ /**
16
+ * Encodes a Uint8Array to a base64url string (URL-safe, no padding)
17
+ */
18
+ export declare function bytesToBase64UrlSafe(value: Uint8Array): string;
19
+ export declare function concatBytes(parts: readonly Uint8Array[]): Uint8Array;
20
+ export declare function toBytesView(value: Uint8Array | ArrayBuffer | ArrayBufferView): Uint8Array;
21
+ export declare function toChunkBytes(chunk: unknown): Uint8Array;
22
+ export declare function uint8TimingSafeEqual(left: Uint8Array, right: Uint8Array): boolean;
23
+ export declare function uint8Equal(a: Uint8Array, b: Uint8Array): boolean;
24
+ export declare function removeAt<T>(items: readonly T[], index: number): T[];
25
+ export declare function intToBytes(byteLength: number, value: number): Uint8Array;
26
+ export declare function readAllBytes(stream: Readable, options?: {
27
+ readonly maxBytes?: number;
28
+ }): Promise<Uint8Array>;
@@ -0,0 +1,8 @@
1
+ export declare function asNumber(value: unknown, field: string): number;
2
+ export declare function asOptionalNumber(value: unknown, field?: string): number | undefined;
3
+ export declare function asString(value: unknown, field: string): string;
4
+ export declare function asOptionalString(value: unknown, field?: string): string | undefined;
5
+ export declare function asBytes(value: unknown, field: string): Uint8Array;
6
+ export declare function asOptionalBytes(value: unknown, field?: string): Uint8Array | undefined;
7
+ export declare function toBoolOrUndef(value: unknown): boolean | undefined;
8
+ export declare function resolvePositive(value: number | undefined, fallback: number, name: string): number;
@@ -0,0 +1,3 @@
1
+ export declare function resolveCleanupIntervalMs(ttlMs: number, maxIntervalMs?: number): number;
2
+ export declare function normalizeQueryLimit(limit: number | undefined, defaultLimit: number): number;
3
+ export declare function setBoundedMapEntry<K, V>(map: Map<K, V>, key: K, value: V, maxEntries: number, onEvict?: (key: K, value: V) => void): void;
@@ -0,0 +1,7 @@
1
+ export declare function toError(value: unknown): Error;
2
+ export declare function toSafeNumber(value: number | {
3
+ toNumber?: () => number;
4
+ } | null | undefined, field: string): number;
5
+ export declare function longToNumber(value: number | {
6
+ toNumber(): number;
7
+ } | null | undefined): number;
@@ -0,0 +1,2 @@
1
+ export declare function getRuntimeOsDisplayName(): string;
2
+ export declare function isBunRuntime(): boolean;
@@ -0,0 +1,2 @@
1
+ import type { SignalAddress } from '../signal/types';
2
+ export declare function signalAddressKey(address: SignalAddress): string;
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.delay = delay;
4
+ function delay(ms) {
5
+ return new Promise((resolve) => {
6
+ setTimeout(resolve, ms);
7
+ });
8
+ }