zapo-js 0.2.0 → 1.0.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 (863) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +103 -179
  3. package/dist/appstate/{WaAppStateCrypto.js → crypto/WaAppStateCrypto.js} +79 -62
  4. package/dist/appstate/index.js +8 -7
  5. package/dist/appstate/{encoding.js → parsers/encoding.js} +11 -4
  6. package/dist/appstate/{WaAppStateSyncResponseParser.js → parsers/response-parser.js} +20 -8
  7. package/dist/appstate/{WaAppStateSyncClient.js → sync/WaAppStateSyncClient.js} +246 -88
  8. package/dist/appstate/utils.js +16 -0
  9. package/dist/appstate-spec.js +89 -0
  10. package/dist/auth/WaAuthClient.js +117 -13
  11. package/dist/auth/credentials-flow.js +207 -0
  12. package/dist/auth/pairing/WaPairingFlow.js +53 -47
  13. package/dist/auth/pairing/pairing-code-crypto.js +91 -0
  14. package/dist/client/WaClient.js +369 -460
  15. package/dist/client/WaClientFactory.js +377 -93
  16. package/dist/client/connection/WaConnectionManager.js +31 -11
  17. package/dist/client/coordinators/WaAbPropsCoordinator.js +140 -0
  18. package/dist/client/coordinators/WaAppStateMutationCoordinator.js +663 -143
  19. package/dist/client/coordinators/WaBotCoordinator.js +345 -0
  20. package/dist/client/coordinators/WaBroadcastListCoordinator.js +20 -0
  21. package/dist/client/coordinators/WaBusinessCoordinator.js +81 -180
  22. package/dist/client/coordinators/WaEmailCoordinator.js +64 -0
  23. package/dist/client/coordinators/WaGroupCoordinator.js +529 -52
  24. package/dist/client/coordinators/WaIncomingNodeCoordinator.js +130 -20
  25. package/dist/client/coordinators/WaLowLevelCoordinator.js +41 -0
  26. package/dist/client/coordinators/WaMessageCoordinator.js +365 -0
  27. package/dist/client/coordinators/WaMessageDispatchCoordinator.js +724 -216
  28. package/dist/client/coordinators/WaNewsletterCoordinator.js +18 -0
  29. package/dist/client/coordinators/WaOfflineResumeCoordinator.js +114 -0
  30. package/dist/client/coordinators/WaPassiveTasksCoordinator.js +53 -22
  31. package/dist/client/coordinators/WaPresenceCoordinator.js +21 -0
  32. package/dist/client/coordinators/WaPrivacyCoordinator.js +7 -5
  33. package/dist/client/coordinators/WaProfileCoordinator.js +223 -50
  34. package/dist/client/coordinators/WaRetryCoordinator.js +256 -123
  35. package/dist/client/coordinators/WaStatusCoordinator.js +49 -0
  36. package/dist/client/coordinators/WaStreamControlCoordinator.js +6 -6
  37. package/dist/client/coordinators/WaTrustedContactTokenCoordinator.js +29 -10
  38. package/dist/client/events/abprops.js +43 -0
  39. package/dist/client/events/appstate-mutation.js +133 -0
  40. package/dist/client/events/business.js +375 -0
  41. package/dist/client/events/call.js +58 -0
  42. package/dist/client/events/chatstate.js +23 -0
  43. package/dist/client/events/devices.js +15 -16
  44. package/dist/client/{dirty.js → events/dirty.js} +34 -20
  45. package/dist/client/events/group.js +13 -24
  46. package/dist/client/events/identity.js +2 -1
  47. package/dist/client/events/incoming.js +502 -0
  48. package/dist/client/events/mex-notification.js +181 -0
  49. package/dist/client/events/picture.js +33 -0
  50. package/dist/client/events/presence.js +44 -0
  51. package/dist/client/events/privacy-token.js +1 -2
  52. package/dist/client/events/receipt.js +26 -0
  53. package/dist/client/events/registration.js +42 -0
  54. package/dist/client/media.js +400 -0
  55. package/dist/client/messaging/fanout.js +9 -10
  56. package/dist/client/messaging/{participants.js → group-metadata.js} +73 -35
  57. package/dist/client/messaging/ignore-key.js +132 -0
  58. package/dist/client/messaging/key-protocol.js +3 -17
  59. package/dist/client/messaging/link-preview.js +159 -0
  60. package/dist/client/messaging/messages.js +671 -0
  61. package/dist/client/newsletter/admin.js +165 -0
  62. package/dist/client/newsletter/content.js +253 -0
  63. package/dist/client/newsletter/discovery.js +115 -0
  64. package/dist/client/newsletter/messaging.js +197 -0
  65. package/dist/client/newsletter/mex.js +41 -0
  66. package/dist/client/newsletter/parse.js +217 -0
  67. package/dist/client/persistence/WriteBehindPersistence.js +31 -4
  68. package/dist/client/{history-sync.js → persistence/history-sync.js} +125 -18
  69. package/dist/client/persistence/mailbox.js +104 -0
  70. package/dist/client/tokens/cs-token.js +11 -17
  71. package/dist/crypto/core/hkdf.js +12 -12
  72. package/dist/crypto/core/index.js +9 -8
  73. package/dist/crypto/core/keys.js +1 -8
  74. package/dist/crypto/core/nonce.js +12 -12
  75. package/dist/crypto/core/primitives.js +123 -93
  76. package/dist/crypto/core/random.js +9 -9
  77. package/dist/crypto/core/xeddsa.js +59 -0
  78. package/dist/crypto/curves/Ed25519.js +32 -21
  79. package/dist/crypto/curves/X25519.js +71 -17
  80. package/dist/crypto/curves/constants.js +3 -1
  81. package/dist/crypto/math/constants.js +1 -2
  82. package/dist/crypto/math/mod.js +0 -33
  83. package/dist/esm/appstate/{WaAppStateCrypto.js → crypto/WaAppStateCrypto.js} +72 -55
  84. package/dist/esm/appstate/index.js +5 -5
  85. package/dist/esm/appstate/{encoding.js → parsers/encoding.js} +11 -4
  86. package/dist/esm/appstate/{WaAppStateSyncResponseParser.js → parsers/response-parser.js} +20 -8
  87. package/dist/esm/appstate/{WaAppStateSyncClient.js → sync/WaAppStateSyncClient.js} +235 -76
  88. package/dist/esm/appstate/utils.js +16 -0
  89. package/dist/esm/appstate-spec.js +79 -0
  90. package/dist/esm/auth/WaAuthClient.js +114 -10
  91. package/dist/esm/auth/credentials-flow.js +202 -0
  92. package/dist/esm/auth/pairing/WaPairingFlow.js +52 -46
  93. package/dist/esm/auth/pairing/pairing-code-crypto.js +85 -0
  94. package/dist/esm/client/WaClient.js +372 -463
  95. package/dist/esm/client/WaClientFactory.js +380 -96
  96. package/dist/esm/client/connection/WaConnectionManager.js +31 -11
  97. package/dist/esm/client/coordinators/WaAbPropsCoordinator.js +136 -0
  98. package/dist/esm/client/coordinators/WaAppStateMutationCoordinator.js +665 -145
  99. package/dist/esm/client/coordinators/WaBotCoordinator.js +342 -0
  100. package/dist/esm/client/coordinators/WaBroadcastListCoordinator.js +17 -0
  101. package/dist/esm/client/coordinators/WaBusinessCoordinator.js +78 -177
  102. package/dist/esm/client/coordinators/WaEmailCoordinator.js +61 -0
  103. package/dist/esm/client/coordinators/WaGroupCoordinator.js +532 -55
  104. package/dist/esm/client/coordinators/WaIncomingNodeCoordinator.js +132 -22
  105. package/dist/esm/client/coordinators/WaLowLevelCoordinator.js +38 -0
  106. package/dist/esm/client/coordinators/WaMessageCoordinator.js +361 -0
  107. package/dist/esm/client/coordinators/WaMessageDispatchCoordinator.js +719 -211
  108. package/dist/esm/client/coordinators/WaNewsletterCoordinator.js +13 -0
  109. package/dist/esm/client/coordinators/WaOfflineResumeCoordinator.js +110 -0
  110. package/dist/esm/client/coordinators/WaPassiveTasksCoordinator.js +54 -23
  111. package/dist/esm/client/coordinators/WaPresenceCoordinator.js +18 -0
  112. package/dist/esm/client/coordinators/WaPrivacyCoordinator.js +7 -5
  113. package/dist/esm/client/coordinators/WaProfileCoordinator.js +226 -53
  114. package/dist/esm/client/coordinators/WaRetryCoordinator.js +258 -125
  115. package/dist/esm/client/coordinators/WaStatusCoordinator.js +46 -0
  116. package/dist/esm/client/coordinators/WaStreamControlCoordinator.js +6 -6
  117. package/dist/esm/client/coordinators/WaTrustedContactTokenCoordinator.js +31 -12
  118. package/dist/esm/client/events/abprops.js +40 -0
  119. package/dist/esm/client/events/appstate-mutation.js +130 -0
  120. package/dist/esm/client/events/business.js +370 -0
  121. package/dist/esm/client/events/call.js +55 -0
  122. package/dist/esm/client/events/chatstate.js +20 -0
  123. package/dist/esm/client/events/devices.js +15 -16
  124. package/dist/esm/client/{dirty.js → events/dirty.js} +34 -20
  125. package/dist/esm/client/events/group.js +14 -25
  126. package/dist/esm/client/events/identity.js +2 -1
  127. package/dist/esm/client/events/incoming.js +487 -0
  128. package/dist/esm/client/events/mex-notification.js +178 -0
  129. package/dist/esm/client/events/picture.js +30 -0
  130. package/dist/esm/client/events/presence.js +41 -0
  131. package/dist/esm/client/events/privacy-token.js +1 -2
  132. package/dist/esm/client/events/receipt.js +23 -0
  133. package/dist/esm/client/events/registration.js +39 -0
  134. package/dist/esm/client/media.js +384 -0
  135. package/dist/esm/client/messaging/fanout.js +10 -11
  136. package/dist/esm/client/messaging/{participants.js → group-metadata.js} +72 -34
  137. package/dist/esm/client/messaging/ignore-key.js +126 -0
  138. package/dist/esm/client/messaging/key-protocol.js +3 -17
  139. package/dist/esm/client/messaging/link-preview.js +156 -0
  140. package/dist/esm/client/messaging/messages.js +667 -0
  141. package/dist/esm/client/newsletter/admin.js +162 -0
  142. package/dist/esm/client/newsletter/content.js +249 -0
  143. package/dist/esm/client/newsletter/discovery.js +112 -0
  144. package/dist/esm/client/newsletter/messaging.js +194 -0
  145. package/dist/esm/client/newsletter/mex.js +37 -0
  146. package/dist/esm/client/newsletter/parse.js +200 -0
  147. package/dist/esm/client/persistence/WriteBehindPersistence.js +31 -4
  148. package/dist/esm/client/{history-sync.js → persistence/history-sync.js} +124 -18
  149. package/dist/esm/client/persistence/mailbox.js +101 -0
  150. package/dist/esm/client/tokens/cs-token.js +12 -18
  151. package/dist/esm/crypto/core/hkdf.js +14 -14
  152. package/dist/esm/crypto/core/index.js +3 -2
  153. package/dist/esm/crypto/core/keys.js +1 -7
  154. package/dist/esm/crypto/core/nonce.js +11 -11
  155. package/dist/esm/crypto/core/primitives.js +121 -88
  156. package/dist/esm/crypto/core/random.js +8 -7
  157. package/dist/esm/crypto/core/xeddsa.js +55 -0
  158. package/dist/esm/crypto/curves/Ed25519.js +35 -24
  159. package/dist/esm/crypto/curves/X25519.js +74 -20
  160. package/dist/esm/crypto/curves/constants.js +2 -0
  161. package/dist/esm/crypto/math/constants.js +1 -2
  162. package/dist/esm/crypto/math/mod.js +0 -32
  163. package/dist/esm/index.js +7 -2
  164. package/dist/esm/infra/log/ConsoleLogger.js +30 -6
  165. package/dist/esm/infra/log/PinoLogger.js +64 -0
  166. package/dist/esm/infra/log/types.js +4 -2
  167. package/dist/esm/infra/perf/BackgroundQueue.js +55 -13
  168. package/dist/esm/infra/perf/StoreLock.js +7 -4
  169. package/dist/esm/media/constants.js +35 -2
  170. package/dist/esm/media/crypto/WaMediaCrypto.js +374 -0
  171. package/dist/esm/media/index.js +4 -3
  172. package/dist/esm/media/processor.js +1 -0
  173. package/dist/esm/media/sticker/sticker-pack.js +133 -0
  174. package/dist/esm/media/{WaMediaTransferClient.js → transfer/WaMediaTransferClient.js} +84 -196
  175. package/dist/esm/media/{conn.js → transfer/conn.js} +10 -5
  176. package/dist/esm/message/WaMessageClient.js +46 -15
  177. package/dist/esm/message/addons/link-preview/builder.js +36 -0
  178. package/dist/esm/message/addons/link-preview/detect.js +55 -0
  179. package/dist/esm/message/addons/link-preview/fetcher.js +391 -0
  180. package/dist/esm/message/addons/link-preview/types.js +1 -0
  181. package/dist/esm/message/context-info.js +123 -0
  182. package/dist/esm/message/crypto/addon-crypto.js +244 -0
  183. package/dist/esm/message/{icdc.js → crypto/icdc.js} +11 -13
  184. package/dist/esm/message/crypto/phash.js +133 -0
  185. package/dist/esm/message/{reporting-token.js → crypto/reporting-token.js} +7 -7
  186. package/dist/esm/message/{use-case-secret.js → crypto/use-case-secret.js} +21 -4
  187. package/dist/esm/message/{content.js → encode/content.js} +183 -8
  188. package/dist/esm/message/encode/media-payload.js +42 -0
  189. package/dist/esm/message/{padding.js → encode/padding.js} +9 -3
  190. package/dist/esm/message/index.js +2 -2
  191. package/dist/esm/message/kinds/bot.js +111 -0
  192. package/dist/esm/message/kinds/newsletter.js +244 -0
  193. package/dist/esm/message/kinds/sticker-pack.js +29 -0
  194. package/dist/esm/message/{ack.js → primitives/ack.js} +8 -1
  195. package/dist/esm/message/primitives/incoming.js +511 -0
  196. package/dist/esm/message/primitives/peer-data-operation.js +93 -0
  197. package/dist/esm/mex.js +1 -0
  198. package/dist/esm/protocol/abprops.js +169 -0
  199. package/dist/esm/protocol/appstate.js +6 -30
  200. package/dist/esm/protocol/auth.js +3 -2
  201. package/dist/esm/protocol/bot.js +77 -0
  202. package/dist/esm/protocol/browser.js +22 -0
  203. package/dist/esm/protocol/business.js +19 -0
  204. package/dist/esm/protocol/call.js +48 -0
  205. package/dist/esm/protocol/constants.js +10 -2
  206. package/dist/esm/protocol/defaults.js +3 -0
  207. package/dist/esm/protocol/email.js +30 -0
  208. package/dist/esm/protocol/index.js +1 -1
  209. package/dist/esm/protocol/jid.js +142 -11
  210. package/dist/esm/protocol/media.js +25 -12
  211. package/dist/esm/protocol/message.js +4 -1
  212. package/dist/esm/protocol/newsletter.js +61 -0
  213. package/dist/esm/protocol/nodes.js +26 -2
  214. package/dist/esm/protocol/notification.js +24 -2
  215. package/dist/esm/protocol/presence.js +13 -0
  216. package/dist/esm/protocol/status.js +6 -0
  217. package/dist/esm/retry/codec.js +5 -0
  218. package/dist/esm/retry/parse.js +20 -38
  219. package/dist/esm/retry/reason.js +6 -1
  220. package/dist/esm/retry/replay.js +131 -37
  221. package/dist/esm/retry/tracker.js +4 -8
  222. package/dist/esm/signal/api/SignalDeviceSyncApi.js +71 -21
  223. package/dist/esm/signal/api/SignalDigestSyncApi.js +15 -8
  224. package/dist/esm/signal/api/SignalIdentitySyncApi.js +13 -4
  225. package/dist/esm/signal/api/SignalMissingPreKeysSyncApi.js +24 -63
  226. package/dist/esm/signal/api/SignalRotateKeyApi.js +10 -0
  227. package/dist/esm/signal/api/SignalSessionSyncApi.js +23 -51
  228. package/dist/esm/signal/api/codec.js +52 -1
  229. package/dist/esm/signal/api/prekeys.js +4 -0
  230. package/dist/esm/signal/attestation/WaAdvSignature.js +17 -0
  231. package/dist/esm/signal/{crypto → attestation}/constants.js +0 -4
  232. package/dist/esm/signal/constants.js +3 -0
  233. package/dist/esm/signal/encoding.js +6 -332
  234. package/dist/esm/signal/group/SenderKeyChain.js +20 -35
  235. package/dist/esm/signal/group/SenderKeyCodec.js +5 -6
  236. package/dist/esm/signal/group/SenderKeyManager.js +37 -17
  237. package/dist/esm/signal/group/encoding.js +96 -0
  238. package/dist/esm/signal/index.js +4 -1
  239. package/dist/esm/signal/registration/encoding.js +34 -0
  240. package/dist/esm/signal/registration/keygen.js +12 -3
  241. package/dist/esm/signal/registration/utils.js +8 -2
  242. package/dist/esm/signal/session/SignalProtocol.js +129 -26
  243. package/dist/esm/signal/session/SignalRatchet.js +46 -64
  244. package/dist/esm/signal/session/SignalSerializer.js +5 -6
  245. package/dist/esm/signal/session/SignalSession.js +14 -19
  246. package/dist/esm/signal/session/encoding.js +173 -0
  247. package/dist/esm/signal/session/resolver.js +144 -35
  248. package/dist/esm/store/cache/identity.cache.js +75 -0
  249. package/dist/esm/store/cache/privacy-token.cache.js +57 -0
  250. package/dist/esm/store/cache/sender-key.cache.js +101 -0
  251. package/dist/esm/store/cache/session.cache.js +92 -0
  252. package/dist/esm/store/contracts/group-metadata.store.js +1 -0
  253. package/dist/esm/store/contracts/identity.store.js +1 -0
  254. package/dist/esm/store/contracts/message-secret.store.js +1 -0
  255. package/dist/esm/store/contracts/pre-key.store.js +1 -0
  256. package/dist/esm/store/contracts/session.store.js +1 -0
  257. package/dist/esm/store/createStore.js +129 -39
  258. package/dist/esm/store/index.js +15 -10
  259. package/dist/esm/store/locks/contact.lock.js +1 -0
  260. package/dist/esm/store/locks/device-list.lock.js +1 -0
  261. package/dist/esm/store/locks/group-metadata.lock.js +20 -0
  262. package/dist/esm/store/locks/identity.lock.js +16 -0
  263. package/dist/esm/store/locks/message-secret.lock.js +17 -0
  264. package/dist/esm/store/locks/pre-key.lock.js +27 -0
  265. package/dist/esm/store/locks/session.lock.js +19 -0
  266. package/dist/esm/store/locks/signal.lock.js +0 -24
  267. package/dist/esm/store/{providers/memory → memory}/appstate.store.js +5 -5
  268. package/dist/esm/store/memory/auth.store.js +24 -0
  269. package/dist/esm/store/memory/contact.store.js +79 -0
  270. package/dist/esm/store/memory/device-list.store.js +103 -0
  271. package/dist/esm/store/{providers/memory/participants.store.js → memory/group-metadata.store.js} +24 -12
  272. package/dist/esm/store/memory/identity.store.js +31 -0
  273. package/dist/esm/store/memory/message-secret.store.js +90 -0
  274. package/dist/esm/store/{providers/memory → memory}/message.store.js +2 -2
  275. package/dist/esm/store/memory/pre-key.store.js +97 -0
  276. package/dist/esm/store/{providers/memory → memory}/privacy-token.store.js +1 -1
  277. package/dist/esm/store/{providers/memory → memory}/retry.store.js +49 -14
  278. package/dist/esm/store/{providers/memory → memory}/sender-key.store.js +3 -3
  279. package/dist/esm/store/memory/session.store.js +45 -0
  280. package/dist/esm/store/memory/signal.store.js +36 -0
  281. package/dist/esm/store/{providers/memory → memory}/thread.store.js +2 -2
  282. package/dist/esm/store/noop.store.js +26 -4
  283. package/dist/esm/transport/WaComms.js +18 -8
  284. package/dist/esm/transport/WaWebSocket.js +41 -9
  285. package/dist/esm/transport/binary/constants.js +10 -4
  286. package/dist/esm/transport/binary/decoder.js +21 -15
  287. package/dist/esm/transport/binary/encoder.js +96 -21
  288. package/dist/esm/transport/binary/tokens.js +12 -12
  289. package/dist/esm/transport/index.js +7 -0
  290. package/dist/esm/transport/keepalive/WaKeepAlive.js +35 -12
  291. package/dist/esm/transport/node/WaMobileTcpSocket.js +120 -0
  292. package/dist/esm/transport/node/WaNodeOrchestrator.js +26 -13
  293. package/dist/esm/transport/node/WaNodeTransport.js +13 -0
  294. package/dist/esm/transport/node/builders/abprops.js +20 -0
  295. package/dist/esm/transport/node/builders/account-sync.js +7 -15
  296. package/dist/esm/transport/node/builders/bot.js +38 -0
  297. package/dist/esm/transport/node/builders/business.js +30 -30
  298. package/dist/esm/transport/node/builders/chatstate.js +28 -0
  299. package/dist/esm/transport/node/builders/community.js +53 -0
  300. package/dist/esm/transport/node/builders/device.js +11 -0
  301. package/dist/esm/transport/node/builders/email.js +66 -0
  302. package/dist/esm/transport/node/builders/global.js +1 -1
  303. package/dist/esm/transport/node/builders/group.js +114 -4
  304. package/dist/esm/transport/node/builders/media.js +2 -2
  305. package/dist/esm/transport/node/builders/message.js +83 -49
  306. package/dist/esm/transport/node/builders/newsletter.js +176 -0
  307. package/dist/esm/transport/node/builders/offline.js +14 -0
  308. package/dist/esm/transport/node/builders/passive.js +7 -0
  309. package/dist/esm/transport/node/builders/prekeys.js +40 -43
  310. package/dist/esm/transport/node/builders/presence.js +39 -0
  311. package/dist/esm/transport/node/builders/privacy-token.js +19 -23
  312. package/dist/esm/transport/node/builders/privacy.js +6 -6
  313. package/dist/esm/transport/node/builders/profile.js +28 -8
  314. package/dist/esm/transport/node/builders/retry.js +1 -1
  315. package/dist/esm/transport/node/builders/tos.js +58 -0
  316. package/dist/esm/transport/node/builders/usync.js +51 -2
  317. package/dist/esm/transport/node/helpers.js +27 -1
  318. package/dist/esm/transport/node/mex/argo-decoder.js +152 -0
  319. package/dist/esm/transport/node/mex/client.js +105 -0
  320. package/dist/esm/transport/node/query.js +17 -0
  321. package/dist/esm/transport/node/usync.js +12 -0
  322. package/dist/esm/transport/noise/WaClientPayload.js +23 -18
  323. package/dist/esm/transport/noise/WaFrameCodec.js +2 -2
  324. package/dist/esm/transport/noise/WaMobileClientPayload.js +58 -0
  325. package/dist/esm/transport/noise/WaNoiseCert.js +14 -27
  326. package/dist/esm/transport/noise/WaNoiseHandshake.js +27 -25
  327. package/dist/esm/transport/noise/WaNoiseSession.js +48 -67
  328. package/dist/esm/transport/noise/WaNoiseSocket.js +19 -13
  329. package/dist/esm/transport/noise/constants.js +0 -1
  330. package/dist/esm/transport/proxy.js +5 -0
  331. package/dist/esm/transport/stream/parse.js +3 -7
  332. package/dist/esm/transport/wa-web-version-fetcher.js +91 -0
  333. package/dist/esm/util/async.js +4 -0
  334. package/dist/esm/util/bytes.js +37 -2
  335. package/dist/esm/util/clock.js +15 -0
  336. package/dist/esm/util/coercion.js +45 -3
  337. package/dist/esm/util/collections.js +11 -0
  338. package/dist/esm/util/index.js +2 -2
  339. package/dist/esm/util/primitives.js +19 -0
  340. package/dist/esm/util/runtime.js +5 -0
  341. package/dist/esm/version-spec.js +1 -0
  342. package/dist/index.js +31 -1
  343. package/dist/infra/log/ConsoleLogger.js +30 -6
  344. package/dist/infra/log/PinoLogger.js +64 -0
  345. package/dist/infra/log/types.js +4 -2
  346. package/dist/infra/perf/BackgroundQueue.js +55 -13
  347. package/dist/infra/perf/StoreLock.js +7 -4
  348. package/dist/media/constants.js +36 -3
  349. package/dist/media/crypto/WaMediaCrypto.js +378 -0
  350. package/dist/media/index.js +9 -4
  351. package/dist/media/processor.js +2 -0
  352. package/dist/media/sticker/sticker-pack.js +136 -0
  353. package/dist/media/{WaMediaTransferClient.js → transfer/WaMediaTransferClient.js} +87 -229
  354. package/dist/media/{conn.js → transfer/conn.js} +10 -5
  355. package/dist/message/WaMessageClient.js +46 -15
  356. package/dist/message/addons/link-preview/builder.js +39 -0
  357. package/dist/message/addons/link-preview/detect.js +58 -0
  358. package/dist/message/addons/link-preview/fetcher.js +394 -0
  359. package/dist/message/addons/link-preview/types.js +2 -0
  360. package/dist/message/context-info.js +129 -0
  361. package/dist/message/crypto/addon-crypto.js +254 -0
  362. package/dist/message/{icdc.js → crypto/icdc.js} +11 -13
  363. package/dist/message/crypto/phash.js +136 -0
  364. package/dist/message/{reporting-token.js → crypto/reporting-token.js} +7 -7
  365. package/dist/message/{use-case-secret.js → crypto/use-case-secret.js} +21 -4
  366. package/dist/message/{content.js → encode/content.js} +200 -7
  367. package/dist/message/encode/media-payload.js +45 -0
  368. package/dist/message/{padding.js → encode/padding.js} +9 -3
  369. package/dist/message/index.js +2 -2
  370. package/dist/message/kinds/bot.js +120 -0
  371. package/dist/message/kinds/newsletter.js +248 -0
  372. package/dist/message/kinds/sticker-pack.js +34 -0
  373. package/dist/message/{ack.js → primitives/ack.js} +8 -1
  374. package/dist/message/{incoming.js → primitives/incoming.js} +225 -38
  375. package/dist/message/primitives/peer-data-operation.js +96 -0
  376. package/dist/mex.js +6 -0
  377. package/dist/proto.js +1 -1
  378. package/dist/protocol/abprops.js +173 -0
  379. package/dist/protocol/appstate.js +7 -31
  380. package/dist/protocol/auth.js +3 -2
  381. package/dist/protocol/bot.js +81 -0
  382. package/dist/protocol/browser.js +23 -0
  383. package/dist/protocol/business.js +22 -0
  384. package/dist/protocol/call.js +51 -0
  385. package/dist/protocol/constants.js +51 -3
  386. package/dist/protocol/defaults.js +3 -0
  387. package/dist/protocol/email.js +33 -0
  388. package/dist/protocol/index.js +12 -3
  389. package/dist/protocol/jid.js +148 -11
  390. package/dist/protocol/media.js +25 -12
  391. package/dist/protocol/message.js +4 -1
  392. package/dist/protocol/newsletter.js +64 -0
  393. package/dist/protocol/nodes.js +26 -2
  394. package/dist/protocol/notification.js +25 -3
  395. package/dist/protocol/presence.js +16 -0
  396. package/dist/protocol/status.js +9 -0
  397. package/dist/retry/codec.js +5 -0
  398. package/dist/retry/parse.js +16 -34
  399. package/dist/retry/reason.js +6 -1
  400. package/dist/retry/replay.js +129 -35
  401. package/dist/retry/tracker.js +3 -7
  402. package/dist/signal/api/SignalDeviceSyncApi.js +69 -19
  403. package/dist/signal/api/SignalDigestSyncApi.js +14 -7
  404. package/dist/signal/api/SignalIdentitySyncApi.js +13 -4
  405. package/dist/signal/api/SignalMissingPreKeysSyncApi.js +21 -60
  406. package/dist/signal/api/SignalRotateKeyApi.js +10 -0
  407. package/dist/signal/api/SignalSessionSyncApi.js +20 -48
  408. package/dist/signal/api/codec.js +52 -0
  409. package/dist/signal/api/prekeys.js +4 -0
  410. package/dist/signal/attestation/WaAdvSignature.js +26 -0
  411. package/dist/signal/{crypto → attestation}/constants.js +1 -5
  412. package/dist/signal/constants.js +4 -1
  413. package/dist/signal/encoding.js +5 -341
  414. package/dist/signal/group/SenderKeyChain.js +19 -34
  415. package/dist/signal/group/SenderKeyCodec.js +4 -5
  416. package/dist/signal/group/SenderKeyManager.js +36 -16
  417. package/dist/signal/group/encoding.js +101 -0
  418. package/dist/signal/index.js +13 -10
  419. package/dist/signal/registration/encoding.js +39 -0
  420. package/dist/signal/registration/keygen.js +11 -2
  421. package/dist/signal/registration/utils.js +8 -2
  422. package/dist/signal/session/SignalProtocol.js +128 -25
  423. package/dist/signal/session/SignalRatchet.js +41 -60
  424. package/dist/signal/session/SignalSerializer.js +5 -6
  425. package/dist/signal/session/SignalSession.js +13 -19
  426. package/dist/signal/session/encoding.js +183 -0
  427. package/dist/signal/session/resolver.js +144 -35
  428. package/dist/store/cache/identity.cache.js +78 -0
  429. package/dist/store/cache/privacy-token.cache.js +60 -0
  430. package/dist/store/cache/sender-key.cache.js +104 -0
  431. package/dist/store/cache/session.cache.js +95 -0
  432. package/dist/store/contracts/group-metadata.store.js +2 -0
  433. package/dist/store/contracts/identity.store.js +2 -0
  434. package/dist/store/contracts/message-secret.store.js +2 -0
  435. package/dist/store/contracts/pre-key.store.js +2 -0
  436. package/dist/store/contracts/session.store.js +2 -0
  437. package/dist/store/createStore.js +128 -38
  438. package/dist/store/index.js +22 -12
  439. package/dist/store/locks/contact.lock.js +1 -0
  440. package/dist/store/locks/device-list.lock.js +1 -0
  441. package/dist/store/locks/group-metadata.lock.js +23 -0
  442. package/dist/store/locks/identity.lock.js +19 -0
  443. package/dist/store/locks/message-secret.lock.js +20 -0
  444. package/dist/store/locks/pre-key.lock.js +30 -0
  445. package/dist/store/locks/session.lock.js +22 -0
  446. package/dist/store/locks/signal.lock.js +0 -24
  447. package/dist/store/{providers/memory → memory}/appstate.store.js +5 -5
  448. package/dist/store/memory/auth.store.js +28 -0
  449. package/dist/store/memory/contact.store.js +83 -0
  450. package/dist/store/memory/device-list.store.js +107 -0
  451. package/dist/store/{providers/memory/participants.store.js → memory/group-metadata.store.js} +26 -14
  452. package/dist/store/memory/identity.store.js +35 -0
  453. package/dist/store/memory/message-secret.store.js +94 -0
  454. package/dist/store/{providers/memory → memory}/message.store.js +2 -2
  455. package/dist/store/memory/pre-key.store.js +101 -0
  456. package/dist/store/{providers/memory → memory}/privacy-token.store.js +1 -1
  457. package/dist/store/{providers/memory → memory}/retry.store.js +49 -14
  458. package/dist/store/{providers/memory → memory}/sender-key.store.js +3 -3
  459. package/dist/store/memory/session.store.js +49 -0
  460. package/dist/store/memory/signal.store.js +40 -0
  461. package/dist/store/{providers/memory → memory}/thread.store.js +2 -2
  462. package/dist/store/noop.store.js +27 -5
  463. package/dist/transport/WaComms.js +18 -8
  464. package/dist/transport/WaWebSocket.js +41 -9
  465. package/dist/transport/binary/constants.js +11 -5
  466. package/dist/transport/binary/decoder.js +24 -18
  467. package/dist/transport/binary/encoder.js +109 -34
  468. package/dist/transport/binary/tokens.js +12 -12
  469. package/dist/transport/index.js +19 -1
  470. package/dist/transport/keepalive/WaKeepAlive.js +35 -12
  471. package/dist/transport/node/WaMobileTcpSocket.js +124 -0
  472. package/dist/transport/node/WaNodeOrchestrator.js +25 -12
  473. package/dist/transport/node/WaNodeTransport.js +13 -0
  474. package/dist/transport/node/builders/abprops.js +23 -0
  475. package/dist/transport/node/builders/account-sync.js +7 -16
  476. package/dist/transport/node/builders/bot.js +43 -0
  477. package/dist/transport/node/builders/business.js +31 -31
  478. package/dist/transport/node/builders/chatstate.js +31 -0
  479. package/dist/transport/node/builders/community.js +59 -0
  480. package/dist/transport/node/builders/device.js +14 -0
  481. package/dist/transport/node/builders/email.js +73 -0
  482. package/dist/transport/node/builders/global.js +1 -1
  483. package/dist/transport/node/builders/group.js +121 -3
  484. package/dist/transport/node/builders/media.js +1 -1
  485. package/dist/transport/node/builders/message.js +84 -49
  486. package/dist/transport/node/builders/newsletter.js +183 -0
  487. package/dist/transport/node/builders/offline.js +17 -0
  488. package/dist/transport/node/builders/passive.js +10 -0
  489. package/dist/transport/node/builders/prekeys.js +38 -41
  490. package/dist/transport/node/builders/presence.js +43 -0
  491. package/dist/transport/node/builders/privacy-token.js +18 -22
  492. package/dist/transport/node/builders/privacy.js +5 -5
  493. package/dist/transport/node/builders/profile.js +30 -7
  494. package/dist/transport/node/builders/retry.js +1 -1
  495. package/dist/transport/node/builders/tos.js +63 -0
  496. package/dist/transport/node/builders/usync.js +52 -1
  497. package/dist/transport/node/helpers.js +28 -1
  498. package/dist/transport/node/mex/argo-decoder.js +189 -0
  499. package/dist/transport/node/mex/client.js +109 -0
  500. package/dist/transport/node/query.js +17 -0
  501. package/dist/transport/node/usync.js +13 -0
  502. package/dist/transport/noise/WaClientPayload.js +22 -17
  503. package/dist/transport/noise/WaFrameCodec.js +1 -1
  504. package/dist/transport/noise/WaMobileClientPayload.js +61 -0
  505. package/dist/transport/noise/WaNoiseCert.js +13 -26
  506. package/dist/transport/noise/WaNoiseHandshake.js +25 -23
  507. package/dist/transport/noise/WaNoiseSession.js +47 -66
  508. package/dist/transport/noise/WaNoiseSocket.js +18 -12
  509. package/dist/transport/noise/constants.js +1 -2
  510. package/dist/transport/proxy.js +5 -0
  511. package/dist/transport/stream/parse.js +3 -7
  512. package/dist/transport/wa-web-version-fetcher.js +94 -0
  513. package/dist/types/appstate/constants.d.ts +1 -1
  514. package/dist/types/appstate/{WaAppStateCrypto.d.ts → crypto/WaAppStateCrypto.d.ts} +29 -9
  515. package/dist/types/appstate/index.d.ts +5 -5
  516. package/dist/types/appstate/{encoding.d.ts → parsers/encoding.d.ts} +8 -1
  517. package/dist/types/appstate/{WaAppStateSyncResponseParser.d.ts → parsers/response-parser.d.ts} +13 -3
  518. package/dist/types/appstate/sync/WaAppStateSyncClient.d.ts +105 -0
  519. package/dist/types/appstate/types.d.ts +1 -1
  520. package/dist/types/appstate/utils.d.ts +17 -1
  521. package/dist/types/appstate-spec.d.ts +24 -0
  522. package/dist/types/auth/WaAuthClient.d.ts +95 -3
  523. package/dist/types/auth/credentials-flow.d.ts +21 -0
  524. package/dist/types/auth/pairing/WaPairingFlow.d.ts +3 -2
  525. package/dist/types/auth/pairing/{WaPairingCodeCrypto.d.ts → pairing-code-crypto.d.ts} +5 -1
  526. package/dist/types/auth/types.d.ts +88 -1
  527. package/dist/types/client/WaClient.d.ts +183 -65
  528. package/dist/types/client/WaClientFactory.d.ts +40 -9
  529. package/dist/types/client/connection/WaConnectionManager.d.ts +4 -2
  530. package/dist/types/client/connection/WaReceiptQueue.d.ts +1 -1
  531. package/dist/types/client/coordinators/WaAbPropsCoordinator.d.ts +26 -0
  532. package/dist/types/client/coordinators/WaAppStateMutationCoordinator.d.ts +215 -5
  533. package/dist/types/client/coordinators/WaBotCoordinator.d.ts +117 -0
  534. package/dist/types/client/coordinators/WaBroadcastListCoordinator.d.ts +39 -0
  535. package/dist/types/client/coordinators/WaBusinessCoordinator.d.ts +45 -44
  536. package/dist/types/client/coordinators/WaEmailCoordinator.d.ts +40 -0
  537. package/dist/types/client/coordinators/WaGroupCoordinator.d.ts +311 -9
  538. package/dist/types/client/coordinators/WaIncomingNodeCoordinator.d.ts +16 -4
  539. package/dist/types/client/coordinators/WaLowLevelCoordinator.d.ts +47 -0
  540. package/dist/types/client/coordinators/WaMessageCoordinator.d.ts +232 -0
  541. package/dist/types/client/coordinators/WaMessageDispatchCoordinator.d.ts +65 -29
  542. package/dist/types/client/coordinators/WaNewsletterCoordinator.d.ts +13 -0
  543. package/dist/types/client/coordinators/WaOfflineResumeCoordinator.d.ts +31 -0
  544. package/dist/types/client/coordinators/WaPassiveTasksCoordinator.d.ts +15 -3
  545. package/dist/types/client/coordinators/WaPresenceCoordinator.d.ts +27 -0
  546. package/dist/types/client/coordinators/WaPrivacyCoordinator.d.ts +28 -1
  547. package/dist/types/client/coordinators/WaProfileCoordinator.d.ts +117 -2
  548. package/dist/types/client/coordinators/WaRetryCoordinator.d.ts +23 -15
  549. package/dist/types/client/coordinators/WaStatusCoordinator.d.ts +42 -0
  550. package/dist/types/client/coordinators/WaTrustedContactTokenCoordinator.d.ts +16 -2
  551. package/dist/types/client/events/abprops.d.ts +15 -0
  552. package/dist/types/client/events/appstate-mutation.d.ts +3 -0
  553. package/dist/types/client/events/business.d.ts +10 -0
  554. package/dist/types/client/events/call.d.ts +31 -0
  555. package/dist/types/client/events/chatstate.d.ts +9 -0
  556. package/dist/types/client/events/devices.d.ts +5 -4
  557. package/dist/types/client/{dirty.d.ts → events/dirty.d.ts} +7 -4
  558. package/dist/types/client/events/group.d.ts +2 -1
  559. package/dist/types/client/events/identity.d.ts +2 -1
  560. package/dist/types/client/events/incoming.d.ts +65 -0
  561. package/dist/types/client/events/mex-notification.d.ts +6 -0
  562. package/dist/types/client/events/picture.d.ts +8 -0
  563. package/dist/types/client/events/presence.d.ts +28 -0
  564. package/dist/types/client/events/receipt.d.ts +14 -0
  565. package/dist/types/client/events/registration.d.ts +18 -0
  566. package/dist/types/client/index.d.ts +1 -1
  567. package/dist/types/client/media.d.ts +65 -0
  568. package/dist/types/client/messaging/fanout.d.ts +2 -2
  569. package/dist/types/client/messaging/group-metadata.d.ts +19 -0
  570. package/dist/types/client/messaging/ignore-key.d.ts +11 -0
  571. package/dist/types/client/messaging/key-protocol.d.ts +9 -7
  572. package/dist/types/client/messaging/link-preview.d.ts +19 -0
  573. package/dist/types/client/messaging/messages.d.ts +28 -0
  574. package/dist/types/client/newsletter/admin.d.ts +71 -0
  575. package/dist/types/client/newsletter/content.d.ts +42 -0
  576. package/dist/types/client/newsletter/discovery.d.ts +33 -0
  577. package/dist/types/client/newsletter/messaging.d.ts +66 -0
  578. package/dist/types/client/newsletter/mex.d.ts +14 -0
  579. package/dist/types/client/newsletter/parse.d.ts +19 -0
  580. package/dist/types/client/newsletter/types.d.ts +190 -0
  581. package/dist/types/client/persistence/WriteBehindPersistence.d.ts +13 -2
  582. package/dist/types/client/persistence/history-sync.d.ts +29 -0
  583. package/dist/types/client/persistence/mailbox.d.ts +12 -0
  584. package/dist/types/client/tokens/cs-token.d.ts +1 -3
  585. package/dist/types/client/types.d.ts +926 -55
  586. package/dist/types/crypto/core/hkdf.d.ts +10 -2
  587. package/dist/types/crypto/core/index.d.ts +3 -2
  588. package/dist/types/crypto/core/keys.d.ts +0 -4
  589. package/dist/types/crypto/core/nonce.d.ts +4 -5
  590. package/dist/types/crypto/core/primitives.d.ts +31 -20
  591. package/dist/types/crypto/core/random.d.ts +7 -1
  592. package/dist/types/crypto/core/xeddsa.d.ts +11 -0
  593. package/dist/types/crypto/curves/Ed25519.d.ts +7 -1
  594. package/dist/types/crypto/curves/X25519.d.ts +20 -1
  595. package/dist/types/crypto/curves/constants.d.ts +4 -2
  596. package/dist/types/crypto/curves/types.d.ts +0 -5
  597. package/dist/types/crypto/index.d.ts +1 -0
  598. package/dist/types/crypto/math/constants.d.ts +0 -1
  599. package/dist/types/crypto/math/mod.d.ts +0 -1
  600. package/dist/types/index.d.ts +32 -5
  601. package/dist/types/infra/log/ConsoleLogger.d.ts +19 -2
  602. package/dist/types/infra/log/PinoLogger.d.ts +56 -2
  603. package/dist/types/infra/log/types.d.ts +6 -0
  604. package/dist/types/infra/perf/BackgroundQueue.d.ts +19 -0
  605. package/dist/types/infra/perf/StoreLock.d.ts +1 -0
  606. package/dist/types/media/constants.d.ts +9 -2
  607. package/dist/types/media/crypto/WaMediaCrypto.d.ts +59 -0
  608. package/dist/types/media/index.d.ts +7 -4
  609. package/dist/types/media/processor.d.ts +50 -0
  610. package/dist/types/media/sticker/sticker-pack.d.ts +6 -0
  611. package/dist/types/media/{WaMediaTransferClient.d.ts → transfer/WaMediaTransferClient.d.ts} +33 -12
  612. package/dist/types/media/transfer/conn.d.ts +7 -0
  613. package/dist/types/media/types.d.ts +10 -5
  614. package/dist/types/message/WaMessageClient.d.ts +14 -0
  615. package/dist/types/message/addons/link-preview/builder.d.ts +13 -0
  616. package/dist/types/message/addons/link-preview/detect.d.ts +5 -0
  617. package/dist/types/message/addons/link-preview/fetcher.d.ts +13 -0
  618. package/dist/types/message/addons/link-preview/types.d.ts +51 -0
  619. package/dist/types/message/context-info.d.ts +66 -0
  620. package/dist/types/message/crypto/addon-crypto.d.ts +78 -0
  621. package/dist/types/message/{icdc.d.ts → crypto/icdc.d.ts} +6 -6
  622. package/dist/types/message/{phash.d.ts → crypto/phash.d.ts} +1 -1
  623. package/dist/types/message/{reporting-token.d.ts → crypto/reporting-token.d.ts} +2 -2
  624. package/dist/types/message/{use-case-secret.d.ts → crypto/use-case-secret.d.ts} +17 -1
  625. package/dist/types/message/encode/content.d.ts +43 -0
  626. package/dist/types/message/{device-sent.d.ts → encode/device-sent.d.ts} +1 -1
  627. package/dist/types/message/encode/media-payload.d.ts +12 -0
  628. package/dist/types/message/index.d.ts +2 -2
  629. package/dist/types/message/kinds/bot.d.ts +31 -0
  630. package/dist/types/message/kinds/newsletter.d.ts +12 -0
  631. package/dist/types/message/kinds/sticker-pack.d.ts +6 -0
  632. package/dist/types/message/{ack.d.ts → primitives/ack.d.ts} +1 -1
  633. package/dist/types/message/primitives/incoming.d.ts +21 -0
  634. package/dist/types/message/primitives/peer-data-operation.d.ts +23 -0
  635. package/dist/types/message/types.d.ts +218 -28
  636. package/dist/types/mex.d.ts +2 -0
  637. package/dist/types/proto.d.ts +2 -2
  638. package/dist/types/protocol/abprops.d.ts +151 -0
  639. package/dist/types/protocol/appstate.d.ts +4 -49
  640. package/dist/types/protocol/auth.d.ts +2 -2
  641. package/dist/types/protocol/bot.d.ts +45 -0
  642. package/dist/types/protocol/browser.d.ts +9 -0
  643. package/dist/types/protocol/business.d.ts +21 -0
  644. package/dist/types/protocol/call.d.ts +44 -0
  645. package/dist/types/protocol/constants.d.ts +20 -3
  646. package/dist/types/protocol/defaults.d.ts +3 -0
  647. package/dist/types/protocol/email.d.ts +32 -0
  648. package/dist/types/protocol/group.d.ts +1 -1
  649. package/dist/types/protocol/index.d.ts +2 -1
  650. package/dist/types/protocol/jid.d.ts +79 -0
  651. package/dist/types/protocol/media.d.ts +21 -13
  652. package/dist/types/protocol/message.d.ts +4 -0
  653. package/dist/types/protocol/newsletter.d.ts +65 -0
  654. package/dist/types/protocol/nodes.d.ts +24 -0
  655. package/dist/types/protocol/notification.d.ts +22 -0
  656. package/dist/types/protocol/presence.d.ts +16 -0
  657. package/dist/types/protocol/status.d.ts +7 -0
  658. package/dist/types/protocol/stream.d.ts +1 -0
  659. package/dist/types/retry/codec.d.ts +5 -0
  660. package/dist/types/retry/index.d.ts +1 -1
  661. package/dist/types/retry/parse.d.ts +9 -0
  662. package/dist/types/retry/reason.d.ts +6 -1
  663. package/dist/types/retry/replay.d.ts +19 -5
  664. package/dist/types/retry/tracker.d.ts +10 -3
  665. package/dist/types/retry/types.d.ts +3 -8
  666. package/dist/types/signal/api/SignalDeviceSyncApi.d.ts +20 -0
  667. package/dist/types/signal/api/SignalDigestSyncApi.d.ts +13 -0
  668. package/dist/types/signal/api/SignalIdentitySyncApi.d.ts +12 -3
  669. package/dist/types/signal/api/SignalMissingPreKeysSyncApi.d.ts +8 -0
  670. package/dist/types/signal/api/SignalRotateKeyApi.d.ts +10 -0
  671. package/dist/types/signal/api/SignalSessionSyncApi.d.ts +13 -0
  672. package/dist/types/signal/api/codec.d.ts +20 -0
  673. package/dist/types/signal/api/constants.d.ts +1 -1
  674. package/dist/types/signal/api/prekeys.d.ts +4 -0
  675. package/dist/types/signal/{crypto → attestation}/WaAdvSignature.d.ts +2 -4
  676. package/dist/types/signal/attestation/constants.d.ts +4 -0
  677. package/dist/types/signal/constants.d.ts +7 -4
  678. package/dist/types/signal/encoding.d.ts +6 -62
  679. package/dist/types/signal/group/SenderKeyChain.d.ts +2 -2
  680. package/dist/types/signal/group/SenderKeyManager.d.ts +24 -2
  681. package/dist/types/signal/group/encoding.d.ts +25 -0
  682. package/dist/types/signal/index.d.ts +4 -1
  683. package/dist/types/signal/registration/encoding.d.ts +30 -0
  684. package/dist/types/signal/registration/keygen.d.ts +10 -0
  685. package/dist/types/signal/registration/utils.d.ts +7 -1
  686. package/dist/types/signal/session/SignalProtocol.d.ts +66 -2
  687. package/dist/types/signal/session/SignalRatchet.d.ts +2 -3
  688. package/dist/types/signal/session/SignalSerializer.d.ts +2 -1
  689. package/dist/types/signal/session/SignalSession.d.ts +0 -1
  690. package/dist/types/signal/session/encoding.d.ts +28 -0
  691. package/dist/types/signal/session/resolver.d.ts +18 -2
  692. package/dist/types/signal/types.d.ts +16 -4
  693. package/dist/types/store/cache/identity.cache.d.ts +15 -0
  694. package/dist/types/store/cache/privacy-token.cache.d.ts +15 -0
  695. package/dist/types/store/cache/sender-key.cache.d.ts +18 -0
  696. package/dist/types/store/cache/session.cache.d.ts +23 -0
  697. package/dist/types/store/contracts/contact.store.d.ts +14 -0
  698. package/dist/types/store/contracts/device-list.store.d.ts +13 -0
  699. package/dist/types/store/contracts/group-metadata.store.d.ts +14 -0
  700. package/dist/types/store/contracts/identity.store.d.ts +11 -0
  701. package/dist/types/store/contracts/message-secret.store.d.ts +16 -0
  702. package/dist/types/store/contracts/message.store.d.ts +0 -2
  703. package/dist/types/store/contracts/pre-key.store.d.ts +13 -0
  704. package/dist/types/store/contracts/session.store.d.ts +14 -0
  705. package/dist/types/store/contracts/signal.store.d.ts +1 -34
  706. package/dist/types/store/createStore.d.ts +54 -2
  707. package/dist/types/store/index.d.ts +22 -13
  708. package/dist/types/store/locks/group-metadata.lock.d.ts +2 -0
  709. package/dist/types/store/locks/identity.lock.d.ts +3 -0
  710. package/dist/types/store/locks/message-secret.lock.d.ts +3 -0
  711. package/dist/types/store/locks/pre-key.lock.d.ts +3 -0
  712. package/dist/types/store/locks/session.lock.d.ts +3 -0
  713. package/dist/types/store/{providers/memory → memory}/appstate.store.d.ts +2 -2
  714. package/dist/types/store/memory/auth.store.d.ts +18 -0
  715. package/dist/types/store/{providers/memory → memory}/contact.store.d.ts +6 -1
  716. package/dist/types/store/{providers/memory → memory}/device-list.store.d.ts +15 -2
  717. package/dist/types/store/memory/group-metadata.store.d.ts +27 -0
  718. package/dist/types/store/memory/identity.store.d.ts +18 -0
  719. package/dist/types/store/memory/message-secret.store.d.ts +31 -0
  720. package/dist/types/store/{providers/memory → memory}/message.store.d.ts +1 -1
  721. package/dist/types/store/memory/pre-key.store.d.ts +23 -0
  722. package/dist/types/store/{providers/memory → memory}/privacy-token.store.d.ts +1 -1
  723. package/dist/types/store/{providers/memory → memory}/retry.store.d.ts +23 -4
  724. package/dist/types/store/{providers/memory → memory}/sender-key.store.d.ts +2 -2
  725. package/dist/types/store/memory/session.store.d.ts +21 -0
  726. package/dist/types/store/memory/signal.store.d.ts +16 -0
  727. package/dist/types/store/{providers/memory → memory}/thread.store.d.ts +1 -1
  728. package/dist/types/store/noop.store.d.ts +6 -2
  729. package/dist/types/store/types.d.ts +271 -7
  730. package/dist/types/transport/WaComms.d.ts +5 -0
  731. package/dist/types/transport/WaWebSocket.d.ts +6 -0
  732. package/dist/types/transport/binary/constants.d.ts +8 -2
  733. package/dist/types/transport/binary/decoder.d.ts +5 -0
  734. package/dist/types/transport/binary/encoder.d.ts +5 -0
  735. package/dist/types/transport/binary/tokens.d.ts +6 -6
  736. package/dist/types/transport/index.d.ts +9 -0
  737. package/dist/types/transport/keepalive/WaKeepAlive.d.ts +11 -1
  738. package/dist/types/transport/node/WaMobileTcpSocket.d.ts +24 -0
  739. package/dist/types/transport/node/WaNodeOrchestrator.d.ts +11 -2
  740. package/dist/types/transport/node/WaNodeTransport.d.ts +13 -0
  741. package/dist/types/transport/node/builders/abprops.d.ts +5 -0
  742. package/dist/types/transport/node/builders/account-sync.d.ts +1 -2
  743. package/dist/types/transport/node/builders/bot.d.ts +4 -0
  744. package/dist/types/transport/node/builders/business.d.ts +21 -4
  745. package/dist/types/transport/node/builders/chatstate.d.ts +11 -0
  746. package/dist/types/transport/node/builders/community.d.ts +17 -0
  747. package/dist/types/transport/node/builders/device.d.ts +2 -0
  748. package/dist/types/transport/node/builders/email.d.ts +11 -0
  749. package/dist/types/transport/node/builders/group.d.ts +44 -2
  750. package/dist/types/transport/node/builders/message.d.ts +11 -6
  751. package/dist/types/transport/node/builders/newsletter.d.ts +73 -0
  752. package/dist/types/transport/node/builders/offline.d.ts +2 -0
  753. package/dist/types/transport/node/builders/passive.d.ts +3 -0
  754. package/dist/types/transport/node/builders/prekeys.d.ts +4 -3
  755. package/dist/types/transport/node/builders/presence.d.ts +13 -0
  756. package/dist/types/transport/node/builders/profile.d.ts +3 -0
  757. package/dist/types/transport/node/builders/tos.d.ts +12 -0
  758. package/dist/types/transport/node/builders/usync.d.ts +16 -0
  759. package/dist/types/transport/node/helpers.d.ts +3 -1
  760. package/dist/types/transport/node/mex/argo-decoder.d.ts +11 -0
  761. package/dist/types/transport/node/mex/client.d.ts +29 -0
  762. package/dist/types/transport/node/query.d.ts +19 -1
  763. package/dist/types/transport/node/usync.d.ts +3 -0
  764. package/dist/types/transport/noise/WaMobileClientPayload.d.ts +34 -0
  765. package/dist/types/transport/noise/WaNoiseCert.d.ts +12 -1
  766. package/dist/types/transport/noise/WaNoiseHandshake.d.ts +12 -6
  767. package/dist/types/transport/noise/WaNoiseSession.d.ts +1 -1
  768. package/dist/types/transport/noise/WaNoiseSocket.d.ts +12 -6
  769. package/dist/types/transport/noise/constants.d.ts +4 -5
  770. package/dist/types/transport/proxy.d.ts +5 -0
  771. package/dist/types/transport/types.d.ts +15 -0
  772. package/dist/types/transport/wa-web-version-fetcher.d.ts +44 -0
  773. package/dist/types/util/async.d.ts +4 -0
  774. package/dist/types/util/bytes.d.ts +36 -1
  775. package/dist/types/util/clock.d.ts +6 -0
  776. package/dist/types/util/coercion.d.ts +25 -0
  777. package/dist/types/util/collections.d.ts +8 -0
  778. package/dist/types/util/index.d.ts +2 -2
  779. package/dist/types/util/primitives.d.ts +11 -0
  780. package/dist/types/util/runtime.d.ts +5 -0
  781. package/dist/types/version-spec.d.ts +1 -0
  782. package/dist/util/async.js +4 -0
  783. package/dist/util/bytes.js +37 -2
  784. package/dist/util/clock.js +18 -0
  785. package/dist/util/coercion.js +48 -3
  786. package/dist/util/collections.js +12 -0
  787. package/dist/util/index.js +7 -1
  788. package/dist/util/primitives.js +20 -0
  789. package/dist/util/runtime.js +5 -0
  790. package/dist/version-spec.js +5 -0
  791. package/package.json +37 -11
  792. package/spec/appstate/index.d.ts +188 -0
  793. package/spec/appstate/index.js +850 -0
  794. package/spec/mex/index.d.ts +4172 -0
  795. package/spec/mex/index.js +261 -0
  796. package/spec/proto/index.d.ts +16305 -0
  797. package/spec/proto/index.js +1 -0
  798. package/spec/version/index.d.ts +4 -0
  799. package/spec/version/index.js +9 -0
  800. package/spec/version/version.json +3 -0
  801. package/dist/auth/flow/WaAuthCredentialsFlow.js +0 -130
  802. package/dist/auth/pairing/WaPairingCodeCrypto.js +0 -77
  803. package/dist/auth/pairing/constants.js +0 -5
  804. package/dist/client/connection/WaKeyShareCoordinator.js +0 -63
  805. package/dist/client/events/chat.js +0 -227
  806. package/dist/client/incoming.js +0 -269
  807. package/dist/client/mailbox.js +0 -50
  808. package/dist/client/messages.js +0 -228
  809. package/dist/esm/auth/flow/WaAuthCredentialsFlow.js +0 -125
  810. package/dist/esm/auth/pairing/WaPairingCodeCrypto.js +0 -73
  811. package/dist/esm/auth/pairing/constants.js +0 -2
  812. package/dist/esm/client/connection/WaKeyShareCoordinator.js +0 -59
  813. package/dist/esm/client/events/chat.js +0 -224
  814. package/dist/esm/client/incoming.js +0 -260
  815. package/dist/esm/client/mailbox.js +0 -47
  816. package/dist/esm/client/messages.js +0 -224
  817. package/dist/esm/media/WaMediaCrypto.js +0 -304
  818. package/dist/esm/message/addon-crypto.js +0 -59
  819. package/dist/esm/message/incoming.js +0 -325
  820. package/dist/esm/message/phash.js +0 -27
  821. package/dist/esm/signal/crypto/WaAdvSignature.js +0 -64
  822. package/dist/esm/store/locks/participants.lock.js +0 -20
  823. package/dist/esm/store/providers/memory/contact.store.js +0 -28
  824. package/dist/esm/store/providers/memory/device-list.store.js +0 -64
  825. package/dist/esm/store/providers/memory/signal.store.js +0 -199
  826. package/dist/esm/transport/node/builders/index.js +0 -11
  827. package/dist/media/WaMediaCrypto.js +0 -308
  828. package/dist/message/addon-crypto.js +0 -65
  829. package/dist/message/phash.js +0 -30
  830. package/dist/signal/crypto/WaAdvSignature.js +0 -76
  831. package/dist/store/locks/participants.lock.js +0 -23
  832. package/dist/store/providers/memory/contact.store.js +0 -32
  833. package/dist/store/providers/memory/device-list.store.js +0 -68
  834. package/dist/store/providers/memory/signal.store.js +0 -203
  835. package/dist/transport/node/builders/index.js +0 -51
  836. package/dist/types/appstate/WaAppStateSyncClient.d.ts +0 -66
  837. package/dist/types/auth/flow/WaAuthCredentialsFlow.d.ts +0 -14
  838. package/dist/types/auth/pairing/constants.d.ts +0 -2
  839. package/dist/types/client/connection/WaKeyShareCoordinator.d.ts +0 -14
  840. package/dist/types/client/events/chat.d.ts +0 -3
  841. package/dist/types/client/history-sync.d.ts +0 -20
  842. package/dist/types/client/incoming.d.ts +0 -37
  843. package/dist/types/client/mailbox.d.ts +0 -10
  844. package/dist/types/client/messages.d.ts +0 -16
  845. package/dist/types/client/messaging/participants.d.ts +0 -13
  846. package/dist/types/media/WaMediaCrypto.d.ts +0 -13
  847. package/dist/types/media/conn.d.ts +0 -3
  848. package/dist/types/message/addon-crypto.d.ts +0 -25
  849. package/dist/types/message/content.d.ts +0 -12
  850. package/dist/types/message/incoming.d.ts +0 -18
  851. package/dist/types/signal/crypto/constants.d.ts +0 -5
  852. package/dist/types/store/contracts/participants.store.d.ts +0 -13
  853. package/dist/types/store/locks/participants.lock.d.ts +0 -2
  854. package/dist/types/store/providers/memory/participants.store.d.ts +0 -17
  855. package/dist/types/store/providers/memory/signal.store.d.ts +0 -58
  856. package/dist/types/transport/node/builders/index.d.ts +0 -11
  857. package/proto/index.d.ts +0 -10903
  858. package/proto/index.js +0 -1
  859. /package/dist/{store/contracts/participants.store.js → client/newsletter/types.js} +0 -0
  860. /package/dist/esm/{store/contracts/participants.store.js → client/newsletter/types.js} +0 -0
  861. /package/dist/esm/message/{device-sent.js → encode/device-sent.js} +0 -0
  862. /package/dist/message/{device-sent.js → encode/device-sent.js} +0 -0
  863. /package/dist/types/message/{padding.d.ts → encode/padding.d.ts} +0 -0
@@ -0,0 +1,23 @@
1
+ import type { WaAuthCredentials } from '../../auth/types';
2
+ import type { PublishProtocolMessageToDeviceFn } from '../../client/messaging/key-protocol';
3
+ import type { WaIncomingProtocolMessageEvent } from '../../client/types';
4
+ import type { Logger } from '../../infra/log/types';
5
+ import { type Proto } from '../..';
6
+ export interface PeerDataOperationRequesterOptions {
7
+ readonly logger: Logger;
8
+ readonly publishProtocolMessageToDevice: PublishProtocolMessageToDeviceFn;
9
+ readonly getCurrentCredentials: () => WaAuthCredentials | null;
10
+ readonly generateOutgoingMessageId: () => Promise<string>;
11
+ readonly subscribeToProtocolMessage: (handler: (event: WaIncomingProtocolMessageEvent) => void) => () => void;
12
+ readonly defaultTimeoutMs?: number;
13
+ readonly maxPending?: number;
14
+ }
15
+ export interface PeerDataOperationRequester {
16
+ readonly request: (type: Proto.Message.PeerDataOperationRequestType, body: Proto.Message.IPeerDataOperationRequestMessage, options?: {
17
+ readonly timeoutMs?: number;
18
+ }) => Promise<readonly Proto.Message.PeerDataOperationRequestResponseMessage.IPeerDataOperationResult[]>;
19
+ readonly send: (type: Proto.Message.PeerDataOperationRequestType, body: Proto.Message.IPeerDataOperationRequestMessage) => Promise<{
20
+ readonly messageId: string;
21
+ }>;
22
+ }
23
+ export declare function createPeerDataOperationRequester(options: PeerDataOperationRequesterOptions): PeerDataOperationRequester;
@@ -1,5 +1,8 @@
1
1
  import type { Readable } from 'node:stream';
2
+ import type { WaLinkPreviewOverride } from './addons/link-preview/types';
3
+ import type { WaSendContextInfo } from './context-info';
2
4
  import type { Proto } from '..';
5
+ import type { WaOutboundReceiptType } from '../protocol/message';
3
6
  import type { BinaryNode } from '../transport/types';
4
7
  export interface WaMessagePublishOptions {
5
8
  readonly ackTimeoutMs?: number;
@@ -20,50 +23,235 @@ export interface WaMessagePublishResult {
20
23
  readonly attempts: number;
21
24
  readonly ackNode: BinaryNode;
22
25
  readonly ack: WaMessageAckMetadata;
26
+ readonly upload?: WaMessageUploadInfo;
23
27
  }
24
- type MediaInput = Uint8Array | ArrayBuffer | Readable;
28
+ export interface WaMessageUploadInfo {
29
+ readonly url: string;
30
+ readonly directPath: string;
31
+ readonly fileSha256: Uint8Array;
32
+ readonly fileLength: number;
33
+ readonly metadataUrl?: string;
34
+ }
35
+ export interface WaMessageBuildResult {
36
+ readonly message: Proto.IMessage;
37
+ readonly upload?: WaMessageUploadInfo;
38
+ }
39
+ type MediaInput = Uint8Array | ArrayBuffer | Readable | string;
40
+ type MediaFieldsFilledByBuilder = 'url' | 'mimetype' | 'fileSha256' | 'fileLength' | 'mediaKey' | 'fileEncSha256' | 'directPath' | 'mediaKeyTimestamp' | 'streamingSidecar' | 'metadataUrl' | 'contextInfo';
41
+ type UserMediaFields<T> = {
42
+ readonly [K in keyof Omit<T, MediaFieldsFilledByBuilder>]?: T[K];
43
+ };
25
44
  interface WaSendMediaBase {
26
45
  readonly media: MediaInput;
27
- readonly mimetype: string;
46
+ /**
47
+ * Mime type of the media. Optional when a {@link WaMediaProcessor} with
48
+ * `detectMimetype` is configured (e.g. `@zapo-js/media-utils` with
49
+ * `file-type` installed): the builder infers it from the input. Required
50
+ * otherwise; a missing mimetype throws at build time.
51
+ */
52
+ readonly mimetype?: string;
28
53
  readonly fileLength?: number;
54
+ readonly contextInfo?: WaSendContextInfo;
55
+ }
56
+ export interface WaSendTextMessage {
57
+ readonly type: 'text';
58
+ readonly text: string;
59
+ readonly contextInfo?: WaSendContextInfo;
60
+ /**
61
+ * Link preview control: `undefined` follows the global `linkPreview.enabled`
62
+ * default; `false` disables; `true` forces auto-fetch; an object skips the
63
+ * fetch and uses the provided fields directly.
64
+ */
65
+ readonly linkPreview?: boolean | WaLinkPreviewOverride;
66
+ }
67
+ /**
68
+ * A message key in the protobuf {@link Proto.IMessageKey} shape, used to target
69
+ * an existing message (reply / edit / reaction / revoke / pin / keep). Every
70
+ * field is filled on a received `message` event's `key`, so they are required
71
+ * here (and assignable to the looser `Proto.IMessageKey`). When sending, the
72
+ * builder forces `remoteJid` to the recipient and drops `participant` in 1:1
73
+ * chats.
74
+ */
75
+ export interface WaMessageKey {
76
+ readonly remoteJid: string;
77
+ readonly id: string;
78
+ readonly fromMe: boolean;
79
+ /** The author - set in groups/broadcasts; omitted in 1:1 (the author is `remoteJid`). */
80
+ readonly participant?: string;
81
+ }
82
+ /**
83
+ * A received `message` event passed verbatim as a target. Its `key` (a
84
+ * {@link WaMessageKey}, the same shape the event exposes) is what gets used;
85
+ * `rawNode` - always present on real events - discriminates it from an explicit
86
+ * {@link WaMessageKey}.
87
+ */
88
+ export interface WaMessageRef {
89
+ readonly key?: WaMessageKey;
90
+ readonly rawNode: unknown;
91
+ }
92
+ /** An explicit {@link WaMessageKey}, or a received `message` event ({@link WaMessageRef}). */
93
+ export type WaMessageTargetInput = WaMessageKey | WaMessageRef;
94
+ export interface WaSendReactionMessage {
95
+ readonly type: 'reaction';
96
+ /** Emoji to attach. Pass an empty string to revoke an existing reaction. */
97
+ readonly emoji: string;
98
+ /** An explicit {@link WaMessageKey} or a received `message` event passed verbatim. */
99
+ readonly target: WaMessageTargetInput;
100
+ /** Defaults to `Date.now()` when omitted. */
101
+ readonly senderTimestampMs?: number;
102
+ }
103
+ export interface WaSendRevokeMessage {
104
+ readonly type: 'revoke';
105
+ /** An explicit {@link WaMessageKey} or a received `message` event passed verbatim. */
106
+ readonly target: WaMessageTargetInput;
107
+ }
108
+ export interface WaSendPinMessage {
109
+ readonly type: 'pin' | 'unpin';
110
+ /** An explicit {@link WaMessageKey} or a received `message` event passed verbatim. */
111
+ readonly target: WaMessageTargetInput;
112
+ readonly senderTimestampMs?: number;
113
+ /**
114
+ * Pin expiry in seconds. wa-web's UI offers three presets: 86_400 (24h),
115
+ * 604_800 (7d), 2_592_000 (30d). Defaults to 86_400 on `pin` and is
116
+ * ignored on `unpin`. Without it the receiving clients drop the pin
117
+ * silently, so this is effectively required to make the pin visible.
118
+ */
119
+ readonly durationSecs?: number;
120
+ }
121
+ export interface WaSendEditKey {
122
+ /** Id of the message being edited (`fromMe` is forced true, `remoteJid` is the recipient). */
123
+ readonly id: string;
124
+ /** Required in groups when the original message uses lid/pn addressing on the participant. */
125
+ readonly participant?: string;
126
+ /** Defaults to `Date.now()` when omitted. */
127
+ readonly timestampMs?: number;
128
+ }
129
+ export interface WaSendKeepMessage {
130
+ readonly type: 'keep' | 'unkeep';
131
+ /** An explicit {@link WaMessageKey} or a received `message` event passed verbatim. */
132
+ readonly target: WaMessageTargetInput;
133
+ /** Defaults to `Date.now()` when omitted. */
134
+ readonly timestampMs?: number;
135
+ }
136
+ export interface WaSendPollOptionInput {
137
+ readonly name: string;
29
138
  }
30
- interface WaSendImageMessage extends WaSendMediaBase {
139
+ export interface WaSendPollMessage {
140
+ readonly type: 'poll';
141
+ readonly name: string;
142
+ /** Option names (strings) or `{ name }` objects. Order matters for vote hashing. */
143
+ readonly options: readonly (string | WaSendPollOptionInput)[];
144
+ /** How many options a voter may pick. Defaults to 1. */
145
+ readonly selectableCount?: number;
146
+ readonly allowAddOption?: boolean;
147
+ readonly hideParticipantName?: boolean;
148
+ readonly contextInfo?: WaSendContextInfo;
149
+ }
150
+ export interface WaSendPollParent {
151
+ /** Id of the original poll creation message. */
152
+ readonly id: string;
153
+ readonly fromMe: boolean;
154
+ /** Group participant jid; required outside 1:1 chats. */
155
+ readonly participant?: string;
156
+ /** Author of the original poll (parentMsgOriginalSender for the use-case secret). */
157
+ readonly authorJid: string;
158
+ /** The poll's `messageContextInfo.messageSecret` (32 bytes). */
159
+ readonly messageSecret: Uint8Array;
160
+ }
161
+ export interface WaSendPollVoteMessage {
162
+ readonly type: 'poll-vote';
163
+ readonly poll: WaSendPollParent;
164
+ /** Option names exactly as they appeared in the poll. Hashed with SHA-256 internally. */
165
+ readonly selectedOptionNames: readonly string[];
166
+ /** Defaults to `Date.now()` when omitted. */
167
+ readonly senderTimestampMs?: number;
168
+ }
169
+ export interface WaSendEventLocation {
170
+ readonly latitude: number;
171
+ readonly longitude: number;
172
+ readonly name?: string;
173
+ readonly address?: string;
174
+ }
175
+ export interface WaSendEventMessage {
176
+ readonly type: 'event';
177
+ readonly name: string;
178
+ readonly description?: string;
179
+ /** Unix seconds. */
180
+ readonly startTime: number;
181
+ /** Unix seconds. */
182
+ readonly endTime?: number;
183
+ readonly location?: WaSendEventLocation;
184
+ readonly joinLink?: string;
185
+ readonly extraGuestsAllowed?: boolean;
186
+ readonly isScheduleCall?: boolean;
187
+ readonly isCanceled?: boolean;
188
+ readonly hasReminder?: boolean;
189
+ /** Reminder offset in seconds before `startTime`. */
190
+ readonly reminderOffsetSec?: number;
191
+ readonly contextInfo?: WaSendContextInfo;
192
+ }
193
+ export type WaSendEventResponseType = 'going' | 'not_going' | 'maybe';
194
+ export interface WaSendEventParent {
195
+ /** Id of the original event creation message. */
196
+ readonly id: string;
197
+ readonly fromMe: boolean;
198
+ readonly participant?: string;
199
+ /** Creator of the event (parentMsgOriginalSender for the use-case secret). */
200
+ readonly authorJid: string;
201
+ /** The event's `messageContextInfo.messageSecret` (32 bytes). */
202
+ readonly messageSecret: Uint8Array;
203
+ }
204
+ export interface WaSendEventResponseMessage {
205
+ readonly type: 'event-response';
206
+ readonly event: WaSendEventParent;
207
+ readonly response: WaSendEventResponseType;
208
+ readonly extraGuestCount?: number;
209
+ /** Defaults to `Date.now()` when omitted. */
210
+ readonly timestampMs?: number;
211
+ }
212
+ interface WaSendImageMessage extends WaSendMediaBase, UserMediaFields<Proto.Message.IImageMessage> {
31
213
  readonly type: 'image';
32
- readonly caption?: string;
33
- readonly width?: number;
34
- readonly height?: number;
35
214
  }
36
- interface WaSendVideoMessage extends WaSendMediaBase {
215
+ interface WaSendVideoMessage extends WaSendMediaBase, UserMediaFields<Proto.Message.IVideoMessage> {
37
216
  readonly type: 'video';
38
- readonly caption?: string;
39
- readonly gifPlayback?: boolean;
40
- readonly seconds?: number;
41
- readonly width?: number;
42
- readonly height?: number;
43
217
  }
44
- interface WaSendPtvMessage extends WaSendMediaBase {
218
+ interface WaSendPtvMessage extends WaSendMediaBase, UserMediaFields<Proto.Message.IVideoMessage> {
45
219
  readonly type: 'ptv';
46
- readonly seconds?: number;
47
- readonly width?: number;
48
- readonly height?: number;
49
220
  }
50
- interface WaSendAudioMessage extends WaSendMediaBase {
221
+ interface WaSendAudioMessage extends WaSendMediaBase, UserMediaFields<Proto.Message.IAudioMessage> {
51
222
  readonly type: 'audio';
52
- readonly ptt?: boolean;
53
- readonly seconds?: number;
54
223
  }
55
- interface WaSendDocumentMessage extends WaSendMediaBase {
224
+ interface WaSendDocumentMessage extends WaSendMediaBase, UserMediaFields<Proto.Message.IDocumentMessage> {
56
225
  readonly type: 'document';
57
- readonly caption?: string;
58
- readonly fileName?: string;
59
226
  }
60
- interface WaSendStickerMessage extends WaSendMediaBase {
227
+ interface WaSendStickerMessage extends WaSendMediaBase, UserMediaFields<Proto.Message.IStickerMessage> {
61
228
  readonly type: 'sticker';
62
- readonly width?: number;
63
- readonly height?: number;
64
229
  }
65
- export type WaSendMediaMessage = WaSendImageMessage | WaSendVideoMessage | WaSendPtvMessage | WaSendAudioMessage | WaSendDocumentMessage | WaSendStickerMessage;
66
- export type WaSendMessageContent = string | Proto.IMessage | WaSendMediaMessage;
230
+ export interface WaSendStickerPackStickerInput {
231
+ readonly media: Uint8Array | string;
232
+ readonly fileName: string;
233
+ readonly emojis: readonly string[];
234
+ readonly isAnimated?: boolean;
235
+ readonly isLottie?: boolean;
236
+ readonly mimetype?: string;
237
+ }
238
+ export interface WaSendStickerPackTrayIcon {
239
+ readonly media: Uint8Array | string;
240
+ readonly fileName: string;
241
+ }
242
+ type StickerPackBuilderFilled = 'stickers' | 'trayIconFileName' | 'thumbnailDirectPath' | 'thumbnailSha256' | 'thumbnailEncSha256' | 'stickerPackSize' | 'imageDataHash' | 'stickerPackOrigin';
243
+ export interface WaSendStickerPackMessage extends UserMediaFields<Omit<Proto.Message.IStickerPackMessage, StickerPackBuilderFilled | 'stickerPackId' | 'name' | 'publisher'>> {
244
+ readonly type: 'sticker-pack';
245
+ readonly stickerPackId: string;
246
+ readonly name: string;
247
+ readonly publisher: string;
248
+ readonly stickers: readonly WaSendStickerPackStickerInput[];
249
+ readonly trayIcon: WaSendStickerPackTrayIcon;
250
+ readonly coverThumbnail?: Uint8Array | string;
251
+ readonly contextInfo?: WaSendContextInfo;
252
+ }
253
+ export type WaSendMediaMessage = WaSendImageMessage | WaSendVideoMessage | WaSendPtvMessage | WaSendAudioMessage | WaSendDocumentMessage | WaSendStickerMessage | WaSendStickerPackMessage;
254
+ export type WaSendMessageContent = string | WaSendTextMessage | WaSendReactionMessage | WaSendRevokeMessage | WaSendPinMessage | WaSendKeepMessage | WaSendPollMessage | WaSendPollVoteMessage | WaSendEventMessage | WaSendEventResponseMessage | Proto.IMessage | WaSendMediaMessage;
67
255
  export interface WaEncryptedMessageInput {
68
256
  readonly to: string;
69
257
  readonly encType: 'msg' | 'pkmsg' | 'skmsg';
@@ -84,7 +272,7 @@ export interface WaEncryptedMessageInput {
84
272
  export interface WaSendReceiptInput {
85
273
  readonly to: string;
86
274
  readonly id: string;
87
- readonly type?: string;
275
+ readonly type?: WaOutboundReceiptType;
88
276
  readonly participant?: string;
89
277
  readonly recipient?: string;
90
278
  readonly category?: string;
@@ -94,4 +282,6 @@ export interface WaSendReceiptInput {
94
282
  readonly listIds?: readonly string[];
95
283
  readonly content?: readonly BinaryNode[];
96
284
  }
285
+ export type WaSendReceiptOptions = Omit<WaSendReceiptInput, 'to' | 'id' | 'listIds'>;
286
+ export type WaSendReceiptEventOptions = Omit<WaSendReceiptOptions, 'participant'>;
97
287
  export {};
@@ -0,0 +1,2 @@
1
+ export { WA_MEX_PERSIST_IDS, WA_MEX_OPERATION_SCHEMAS } from '../spec/mex';
2
+ export type { WaMexPersistId, WaMexOperationSchema, WaMexOperationVariables, WaMexOperationResponses } from '../spec/mex';
@@ -1,2 +1,2 @@
1
- export { waproto as proto } from '../proto';
2
- export type { waproto as Proto } from '../proto';
1
+ export { waproto as proto } from '../spec/proto';
2
+ export type { waproto as Proto } from '../spec/proto';
@@ -0,0 +1,151 @@
1
+ export declare const WA_ABPROPS_PROTOCOL_VERSION = "1";
2
+ export declare const WA_ABPROPS_REFRESH_BOUNDS: Readonly<{
3
+ readonly MIN_S: 600;
4
+ readonly MAX_S: 604800;
5
+ readonly DEFAULT_S: 86400;
6
+ }>;
7
+ export type AbPropType = 'bool' | 'int' | 'string';
8
+ export type AbPropValue = boolean | number | string;
9
+ export interface AbPropConfigEntry {
10
+ readonly configCode: number;
11
+ readonly type: AbPropType;
12
+ readonly defaultValue: AbPropValue;
13
+ }
14
+ export declare const AB_PROP_CONFIGS: Readonly<{
15
+ readonly syncd_key_max_use_days: AbPropConfigEntry;
16
+ readonly syncd_wait_for_key_timeout_days: AbPropConfigEntry;
17
+ readonly syncd_sentinel_timeout_seconds: AbPropConfigEntry;
18
+ readonly syncd_inline_mutations_max_count: AbPropConfigEntry;
19
+ readonly syncd_patch_protobuf_max_size: AbPropConfigEntry;
20
+ readonly syncd_additional_mutations_count: AbPropConfigEntry;
21
+ readonly syncd_periodic_sync_days: AbPropConfigEntry;
22
+ readonly syncd_mutation_and_bundle_logging: AbPropConfigEntry;
23
+ readonly wa_web_enable_syncd_key_persistence_only_after_server_ack: AbPropConfigEntry;
24
+ readonly web_request_missing_keys_for_removes: AbPropConfigEntry;
25
+ readonly web_syncd_max_mutations_to_process_during_resume: AbPropConfigEntry;
26
+ readonly web_syncd_fatal_fields_from_L1104589PRV2: AbPropConfigEntry;
27
+ readonly web_enable_improved_bulk_merge: AbPropConfigEntry;
28
+ readonly snapshot_recovery_max_mutations_count_allowed: AbPropConfigEntry;
29
+ readonly md_syncd_logging_spec_enabled: AbPropConfigEntry;
30
+ readonly kmp_syncd_engine_crypto_enabled: AbPropConfigEntry;
31
+ readonly enable_syncd_debug_data_in_patch: AbPropConfigEntry;
32
+ readonly enable_mention_everyone_syncd_sender: AbPropConfigEntry;
33
+ readonly username_contact_syncd_support_enable: AbPropConfigEntry;
34
+ readonly newsletter_tos_notice_id: AbPropConfigEntry;
35
+ readonly newsletter_tos_notice_id_smb_web: AbPropConfigEntry;
36
+ readonly newsletter_creation_tos_id: AbPropConfigEntry;
37
+ readonly newsletter_creation_tos_id_smb_web: AbPropConfigEntry;
38
+ readonly newsletter_admin_invite_tos_id: AbPropConfigEntry;
39
+ readonly newsletter_admin_invite_tos_id_smb_web: AbPropConfigEntry;
40
+ readonly newsletter_creation_nux_id: AbPropConfigEntry;
41
+ readonly newsletter_nux_notice_id: AbPropConfigEntry;
42
+ readonly newsletter_admin_invite_nux_id: AbPropConfigEntry;
43
+ readonly after_read_sending_enabled: AbPropConfigEntry;
44
+ readonly after_read_fallback_duration: AbPropConfigEntry;
45
+ readonly after_read_receiver_enabled: AbPropConfigEntry;
46
+ readonly privacy_token_sending_on_all_1_on_1_messages: AbPropConfigEntry;
47
+ readonly flows_termination_message_v2_sending_enabled: AbPropConfigEntry;
48
+ readonly dm_initiator_trigger_groups: AbPropConfigEntry;
49
+ readonly placeholder_message_resend_maximum_days_limit: AbPropConfigEntry;
50
+ readonly message_edit_to_message_secret_sender_enabled: AbPropConfigEntry;
51
+ readonly message_edit_to_message_secret_receiver_enabled: AbPropConfigEntry;
52
+ readonly top_level_message_secret_check: AbPropConfigEntry;
53
+ readonly parse_encrypted_dsm_msg_fix: AbPropConfigEntry;
54
+ readonly rt_sender_dual_encrypted_msg_enabled: AbPropConfigEntry;
55
+ readonly rt_receiver_dual_encrypted_msg_enabled: AbPropConfigEntry;
56
+ readonly lid_one_to_one_migration_event_response_force_pn_jid: AbPropConfigEntry;
57
+ readonly web_anr_async_msg_send_handler: AbPropConfigEntry;
58
+ readonly message_keys_async_chunk_size: AbPropConfigEntry;
59
+ readonly synced_message_keys_processing_type: AbPropConfigEntry;
60
+ readonly limit_sharing_protocol_message_receiver_enabled: AbPropConfigEntry;
61
+ readonly web_pnless_stanzas: AbPropConfigEntry;
62
+ readonly wa_nct_token_send_enabled: AbPropConfigEntry;
63
+ readonly wa_nct_token_syncd_enabled: AbPropConfigEntry;
64
+ readonly wa_nct_token_history_sync_enabled: AbPropConfigEntry;
65
+ readonly community_announcement_group_size_limit: AbPropConfigEntry;
66
+ readonly group_size_limit: AbPropConfigEntry;
67
+ readonly group_max_subject: AbPropConfigEntry;
68
+ readonly group_description_length: AbPropConfigEntry;
69
+ readonly anyone_can_link_to_groups: AbPropConfigEntry;
70
+ readonly group_call_max_participants: AbPropConfigEntry;
71
+ readonly group_history_receive: AbPropConfigEntry;
72
+ readonly group_history_send: AbPropConfigEntry;
73
+ readonly group_history_settings: AbPropConfigEntry;
74
+ readonly group_history_settings_query: AbPropConfigEntry;
75
+ readonly group_history_message_count_limit: AbPropConfigEntry;
76
+ readonly group_history_message_count_receiver_upper_limit: AbPropConfigEntry;
77
+ readonly group_history_messages_time_limit_receiver_enforcement_secs: AbPropConfigEntry;
78
+ readonly group_history_bundle_time_limit_receiver_enforcement_secs: AbPropConfigEntry;
79
+ readonly group_history_notice_receive: AbPropConfigEntry;
80
+ readonly group_history_out_of_window_pin_sender: AbPropConfigEntry;
81
+ readonly group_history_out_of_window_pins_receiver: AbPropConfigEntry;
82
+ readonly group_history_reporting: AbPropConfigEntry;
83
+ readonly group_create_add_using_lid_jids: AbPropConfigEntry;
84
+ readonly group_member_updates_hide_in_thread_enabled: AbPropConfigEntry;
85
+ readonly group_status_receiver_enabled: AbPropConfigEntry;
86
+ readonly web_send_invisible_msg_max_group_size: AbPropConfigEntry;
87
+ readonly web_send_invisible_msg_min_group_size: AbPropConfigEntry;
88
+ readonly admin_only_mention_everyone_group_size: AbPropConfigEntry;
89
+ readonly web_abprop_drop_full_history_sync: AbPropConfigEntry;
90
+ readonly wa_web_history_sync_dynamic_throttling: AbPropConfigEntry;
91
+ readonly web_e2e_backfill_expire_time: AbPropConfigEntry;
92
+ readonly history_sync_on_demand: AbPropConfigEntry;
93
+ readonly history_sync_on_demand_message_count: AbPropConfigEntry;
94
+ readonly history_sync_on_demand_failure_limit: AbPropConfigEntry;
95
+ readonly history_sync_on_demand_cooldown_sec: AbPropConfigEntry;
96
+ readonly history_sync_on_demand_complete_companion: AbPropConfigEntry;
97
+ readonly history_sync_on_demand_with_android_beta: AbPropConfigEntry;
98
+ readonly web_anr_throttle_history_sync_db_writes: AbPropConfigEntry;
99
+ readonly web_force_lid_chats_in_history: AbPropConfigEntry;
100
+ readonly web_history_sync_allow_duplicate_in_bulk_error: AbPropConfigEntry;
101
+ readonly default_media_limit_mb: AbPropConfigEntry;
102
+ readonly web_image_max_edge: AbPropConfigEntry;
103
+ readonly web_image_max_hd_edge: AbPropConfigEntry;
104
+ readonly web_channel_video_server_transcode_upload: AbPropConfigEntry;
105
+ readonly web_deprecate_mms4_hash_based_download: AbPropConfigEntry;
106
+ readonly kaleidoscope_thumbnail_validation: AbPropConfigEntry;
107
+ readonly web_use_kaleidoscope_media_check_enabled: AbPropConfigEntry;
108
+ readonly low_cache_hit_rate_media_types: AbPropConfigEntry;
109
+ readonly web_anr_async_media_decryption_enabled: AbPropConfigEntry;
110
+ readonly web_anr_media_chunk_enc_delay_enabled: AbPropConfigEntry;
111
+ readonly web_media_compute_in_worker_enabled: AbPropConfigEntry;
112
+ readonly adv_accept_hosted_devices: AbPropConfigEntry;
113
+ readonly num_days_key_index_list_expiration: AbPropConfigEntry;
114
+ readonly num_days_before_device_expiry_check: AbPropConfigEntry;
115
+ readonly web_adv_logout_on_self_device_list_expired: AbPropConfigEntry;
116
+ readonly md_icdc_hash_length: AbPropConfigEntry;
117
+ readonly noise_pq_mode: AbPropConfigEntry;
118
+ readonly tctoken_duration: AbPropConfigEntry;
119
+ readonly tctoken_num_buckets: AbPropConfigEntry;
120
+ readonly tctoken_num_buckets_sender: AbPropConfigEntry;
121
+ readonly tctoken_duration_sender: AbPropConfigEntry;
122
+ readonly heartbeat_interval_s: AbPropConfigEntry;
123
+ readonly web_offline_message_processor_timeout_seconds: AbPropConfigEntry;
124
+ readonly web_offline_resume_wait_for_ping_response_enabled: AbPropConfigEntry;
125
+ readonly web_offline_resume_wait_for_ping_timeout_seconds: AbPropConfigEntry;
126
+ readonly web_comms_socket_reconnect_enabled: AbPropConfigEntry;
127
+ readonly web_resume_optimized_read_receipt_send_interval: AbPropConfigEntry;
128
+ readonly web_reaction_inactive_receipt: AbPropConfigEntry;
129
+ readonly lid_status_non_soaked_client_support_enabled: AbPropConfigEntry;
130
+ readonly s567418_mitigation_enabled: AbPropConfigEntry;
131
+ readonly web_signal_future_messages_max: AbPropConfigEntry;
132
+ readonly poll_add_option_enabled: AbPropConfigEntry;
133
+ readonly poll_add_option_receiving_enabled: AbPropConfigEntry;
134
+ readonly poll_creator_edit_enabled: AbPropConfigEntry;
135
+ readonly poll_creator_edit_receiving_version: AbPropConfigEntry;
136
+ readonly poll_end_time_enabled: AbPropConfigEntry;
137
+ readonly poll_end_time_receiving_enabled: AbPropConfigEntry;
138
+ readonly poll_hide_voters_enabled: AbPropConfigEntry;
139
+ readonly poll_hide_voters_receiving_enabled: AbPropConfigEntry;
140
+ readonly text_status_ttl_seconds_allowlist: AbPropConfigEntry;
141
+ readonly username_enabled_on_companion: AbPropConfigEntry;
142
+ readonly username_max_length: AbPropConfigEntry;
143
+ readonly username_min_length: AbPropConfigEntry;
144
+ readonly wa_individual_new_chat_msg_capping_enabled: AbPropConfigEntry;
145
+ readonly wa_individual_new_chat_msg_capping_limit: AbPropConfigEntry;
146
+ readonly wa_individual_new_chat_msg_capping_fetch_ttl_seconds: AbPropConfigEntry;
147
+ readonly enable_web_calling: AbPropConfigEntry;
148
+ readonly calling_lid_version: AbPropConfigEntry;
149
+ }>;
150
+ export type AbPropName = keyof typeof AB_PROP_CONFIGS;
151
+ export declare function resolveAbPropNameByCode(configCode: number): AbPropName | undefined;
@@ -18,6 +18,8 @@ export declare const WA_APP_STATE_ERROR_CODES: Readonly<{
18
18
  readonly CONFLICT: "409";
19
19
  readonly BAD_REQUEST: "400";
20
20
  readonly NOT_FOUND: "404";
21
+ readonly NOT_ALLOWED: "405";
22
+ readonly NOT_ACCEPTABLE: "406";
21
23
  }>;
22
24
  export declare const WA_APP_STATE_SYNC_DATA_TYPE: Readonly<{
23
25
  readonly PATCH: "Patch";
@@ -29,53 +31,6 @@ export declare const WA_APP_STATE_KEY_TYPES: Readonly<{
29
31
  readonly MD_MSG_HIST: "md-msg-hist";
30
32
  }>;
31
33
  export declare const WA_APP_STATE_KDF_INFO: Readonly<{
32
- readonly MUTATION_KEYS: "WhatsApp Mutation Keys";
33
- readonly PATCH_INTEGRITY: "WhatsApp Patch Integrity";
34
- }>;
35
- export declare const WA_APP_STATE_CHAT_MUTATION_SPECS: Readonly<{
36
- readonly STAR: {
37
- readonly collection: "regular_high";
38
- readonly action: "star";
39
- readonly version: 2;
40
- };
41
- readonly MUTE: {
42
- readonly collection: "regular_high";
43
- readonly action: "mute";
44
- readonly version: 2;
45
- };
46
- readonly PIN: {
47
- readonly collection: "regular_low";
48
- readonly action: "pin_v1";
49
- readonly version: 5;
50
- };
51
- readonly ARCHIVE: {
52
- readonly collection: "regular_low";
53
- readonly action: "archive";
54
- readonly version: 3;
55
- };
56
- readonly DELETE_MESSAGE_FOR_ME: {
57
- readonly collection: "regular_high";
58
- readonly action: "deleteMessageForMe";
59
- readonly version: 3;
60
- };
61
- readonly MARK_CHAT_AS_READ: {
62
- readonly collection: "regular_low";
63
- readonly action: "markChatAsRead";
64
- readonly version: 3;
65
- };
66
- readonly CLEAR_CHAT: {
67
- readonly collection: "regular_high";
68
- readonly action: "clearChat";
69
- readonly version: 6;
70
- };
71
- readonly DELETE_CHAT: {
72
- readonly collection: "regular_high";
73
- readonly action: "deleteChat";
74
- readonly version: 6;
75
- };
76
- readonly LOCK_CHAT: {
77
- readonly collection: "regular_low";
78
- readonly action: "lock";
79
- readonly version: 7;
80
- };
34
+ readonly MUTATION_KEYS: NodeJS.NonSharedUint8Array;
35
+ readonly PATCH_INTEGRITY: NodeJS.NonSharedUint8Array;
81
36
  }>;
@@ -7,6 +7,6 @@ export declare const WA_SIGNALING: Readonly<{
7
7
  readonly COMPANION_REG_REFRESH_NOTIFICATION: "companion_reg_refresh";
8
8
  }>;
9
9
  export declare const WA_PAIRING_KDF_INFO: Readonly<{
10
- readonly LINK_CODE_BUNDLE: "link_code_pairing_key_bundle_encryption_key";
11
- readonly ADV_SECRET: "adv_secret";
10
+ readonly LINK_CODE_BUNDLE: NodeJS.NonSharedUint8Array;
11
+ readonly ADV_SECRET: NodeJS.NonSharedUint8Array;
12
12
  }>;
@@ -0,0 +1,45 @@
1
+ import { proto } from '..';
2
+ export declare const WA_BOT_MSG_EDIT_TYPES: Readonly<{
3
+ readonly FIRST: "first";
4
+ readonly INNER: "inner";
5
+ readonly LAST: "last";
6
+ readonly FULL: "full";
7
+ }>;
8
+ export type WaBotMsgEditType = (typeof WA_BOT_MSG_EDIT_TYPES)[keyof typeof WA_BOT_MSG_EDIT_TYPES];
9
+ export declare const WA_BOT_MSG_BODY_TYPES: Readonly<{
10
+ readonly PROMPT: "prompt";
11
+ readonly COMMAND: "command";
12
+ readonly VOICE: "voice";
13
+ }>;
14
+ export type WaBotMsgBodyType = (typeof WA_BOT_MSG_BODY_TYPES)[keyof typeof WA_BOT_MSG_BODY_TYPES];
15
+ export declare const WA_BIZ_BOT_TYPES: Readonly<{
16
+ readonly ONE_P: "1";
17
+ readonly THREE_P: "3";
18
+ }>;
19
+ export type WaBizBotType = (typeof WA_BIZ_BOT_TYPES)[keyof typeof WA_BIZ_BOT_TYPES];
20
+ export declare const WA_BOT_KNOWN_JIDS: Readonly<{
21
+ readonly META_AI_PN: "13135550002@s.whatsapp.net";
22
+ readonly META_AI_FBID: "867051314767696@bot";
23
+ readonly META_AI_TEE_FBID: "1273596044787272@bot";
24
+ readonly META_AI_SIDECHAT_FBID: "867051314767696555@bot";
25
+ readonly MANUS_FBID: "1807055946647696@bot";
26
+ readonly HATCH_FBID: "1807055946647697@bot";
27
+ }>;
28
+ export declare function resolveBotFbidJid(jid: string): string | null;
29
+ export declare const WA_BOT_NODE_ATTRS: Readonly<{
30
+ readonly EDIT: "edit";
31
+ readonly EDIT_TARGET_ID: "edit_target_id";
32
+ readonly SENDER_TIMESTAMP_MS: "sender_timestamp_ms";
33
+ readonly BIZ_BOT: "biz_bot";
34
+ readonly TYPE: "type";
35
+ }>;
36
+ export declare const WA_META_NODE_ATTRS_BOT: Readonly<{
37
+ readonly TARGET_ID: "target_id";
38
+ readonly TARGET_SENDER_JID: "target_sender_jid";
39
+ readonly TARGET_CHAT_JID: "target_chat_jid";
40
+ }>;
41
+ export declare const WA_BOT_HKDF_INFO: NodeJS.NonSharedUint8Array;
42
+ export declare const WA_BOT_MSG_SECRET_BYTES = 32;
43
+ export declare const WA_BLOKS_VERSIONING_ID = "98153664e5d904059a94ea08a59fc7eeaf977544cec64ab3ab793c0ce001eb92";
44
+ export declare const WA_BOT_RENDERING_PIXEL_DENSITY = 2.8125;
45
+ export declare const WA_BOT_DEFAULT_CAPABILITIES: readonly proto.BotCapabilityMetadata.BotCapabilityType[];
@@ -19,4 +19,13 @@ export declare const WA_COMPANION_PLATFORM_IDS: Readonly<{
19
19
  readonly UWP: "8";
20
20
  readonly OTHER_WEB_CLIENT: "9";
21
21
  }>;
22
+ /**
23
+ * Maps a {@link WA_BROWSERS} value to the companion platform id sent in the
24
+ * pairing `link_code` stanza. Unknown inputs fall back to `OTHER_WEB_CLIENT`.
25
+ */
22
26
  export declare function getWaCompanionPlatformId(browser: string): string;
27
+ /**
28
+ * Returns the human-readable browser name advertised during pairing.
29
+ * Unknown inputs are echoed back unchanged.
30
+ */
31
+ export declare function getWaBrowserDisplayName(browser: string): string;
@@ -0,0 +1,21 @@
1
+ export declare const WA_BUSINESS_HOURS_DAYS: Readonly<{
2
+ readonly SUN: "sun";
3
+ readonly MON: "mon";
4
+ readonly TUE: "tue";
5
+ readonly WED: "wed";
6
+ readonly THU: "thu";
7
+ readonly FRI: "fri";
8
+ readonly SAT: "sat";
9
+ }>;
10
+ export type WaBusinessHoursDay = (typeof WA_BUSINESS_HOURS_DAYS)[keyof typeof WA_BUSINESS_HOURS_DAYS];
11
+ /**
12
+ * Per-day open mode accepted by the `business_profile` edit IQ. A closed day is
13
+ * expressed by omitting it from the config entirely, not by a dedicated mode.
14
+ * `open_time` / `close_time` are only meaningful for `specific_hours`.
15
+ */
16
+ export declare const WA_BUSINESS_HOURS_MODES: Readonly<{
17
+ readonly OPEN_24H: "open_24h";
18
+ readonly SPECIFIC_HOURS: "specific_hours";
19
+ readonly APPOINTMENT_ONLY: "appointment_only";
20
+ }>;
21
+ export type WaBusinessHoursMode = (typeof WA_BUSINESS_HOURS_MODES)[keyof typeof WA_BUSINESS_HOURS_MODES];