@japofc/baileys 2.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 (342) hide show
  1. package/NOTICE.md +111 -0
  2. package/README.md +1254 -0
  3. package/WAProto/index.d.ts +9 -0
  4. package/WAProto/index.js +142276 -0
  5. package/engine-requirements.js +13 -0
  6. package/lib/Builders/A2UI.d.ts +242 -0
  7. package/lib/Builders/A2UI.js +308 -0
  8. package/lib/Builders/AIRich.d.ts +105 -0
  9. package/lib/Builders/AIRich.js +2286 -0
  10. package/lib/Builders/Button.d.ts +103 -0
  11. package/lib/Builders/Button.js +883 -0
  12. package/lib/Builders/ButtonV2.d.ts +28 -0
  13. package/lib/Builders/ButtonV2.js +144 -0
  14. package/lib/Builders/ButtonV3.d.ts +25 -0
  15. package/lib/Builders/ButtonV3.js +184 -0
  16. package/lib/Builders/Carousel.d.ts +22 -0
  17. package/lib/Builders/Carousel.js +111 -0
  18. package/lib/Builders/JapBaileys.d.ts +34 -0
  19. package/lib/Builders/JapBaileys.js +108 -0
  20. package/lib/Builders/Poll.d.ts +25 -0
  21. package/lib/Builders/Poll.js +128 -0
  22. package/lib/Builders/index.d.ts +17 -0
  23. package/lib/Builders/index.js +11 -0
  24. package/lib/Builders/shared.d.ts +67 -0
  25. package/lib/Builders/shared.js +652 -0
  26. package/lib/Defaults/index.d.ts +154 -0
  27. package/lib/Defaults/index.js +178 -0
  28. package/lib/Framework/Bot.d.ts +61 -0
  29. package/lib/Framework/Bot.js +248 -0
  30. package/lib/Framework/Context.d.ts +21 -0
  31. package/lib/Framework/Context.js +89 -0
  32. package/lib/Framework/MediaManager.d.ts +17 -0
  33. package/lib/Framework/MediaManager.js +151 -0
  34. package/lib/Framework/SessionManager.d.ts +13 -0
  35. package/lib/Framework/SessionManager.js +33 -0
  36. package/lib/Framework/StatsManager.d.ts +26 -0
  37. package/lib/Framework/StatsManager.js +119 -0
  38. package/lib/Framework/Store/SQLiteStore.d.ts +11 -0
  39. package/lib/Framework/Store/SQLiteStore.js +73 -0
  40. package/lib/Framework/index.d.ts +9 -0
  41. package/lib/Framework/index.js +10 -0
  42. package/lib/Signal/Group/ciphertext-message.d.ts +9 -0
  43. package/lib/Signal/Group/ciphertext-message.js +11 -0
  44. package/lib/Signal/Group/group-session-builder.d.ts +7 -0
  45. package/lib/Signal/Group/group-session-builder.js +29 -0
  46. package/lib/Signal/Group/group_cipher.d.ts +10 -0
  47. package/lib/Signal/Group/group_cipher.js +81 -0
  48. package/lib/Signal/Group/index.d.ts +11 -0
  49. package/lib/Signal/Group/index.js +11 -0
  50. package/lib/Signal/Group/keyhelper.d.ts +6 -0
  51. package/lib/Signal/Group/keyhelper.js +17 -0
  52. package/lib/Signal/Group/sender-chain-key.d.ts +13 -0
  53. package/lib/Signal/Group/sender-chain-key.js +25 -0
  54. package/lib/Signal/Group/sender-key-distribution-message.d.ts +16 -0
  55. package/lib/Signal/Group/sender-key-distribution-message.js +62 -0
  56. package/lib/Signal/Group/sender-key-message.d.ts +18 -0
  57. package/lib/Signal/Group/sender-key-message.js +65 -0
  58. package/lib/Signal/Group/sender-key-name.d.ts +11 -0
  59. package/lib/Signal/Group/sender-key-name.js +47 -0
  60. package/lib/Signal/Group/sender-key-record.d.ts +12 -0
  61. package/lib/Signal/Group/sender-key-record.js +40 -0
  62. package/lib/Signal/Group/sender-key-state.d.ts +16 -0
  63. package/lib/Signal/Group/sender-key-state.js +83 -0
  64. package/lib/Signal/Group/sender-message-key.d.ts +11 -0
  65. package/lib/Signal/Group/sender-message-key.js +25 -0
  66. package/lib/Signal/libsignal.d.ts +54 -0
  67. package/lib/Signal/libsignal.js +430 -0
  68. package/lib/Signal/lid-mapping.d.ts +20 -0
  69. package/lib/Signal/lid-mapping.js +276 -0
  70. package/lib/Socket/Client/index.d.ts +2 -0
  71. package/lib/Socket/Client/index.js +2 -0
  72. package/lib/Socket/Client/types.d.ts +5 -0
  73. package/lib/Socket/Client/types.js +10 -0
  74. package/lib/Socket/Client/websocket.d.ts +12 -0
  75. package/lib/Socket/Client/websocket.js +53 -0
  76. package/lib/Socket/business.d.ts +395 -0
  77. package/lib/Socket/business.js +379 -0
  78. package/lib/Socket/chats.d.ts +136 -0
  79. package/lib/Socket/chats.js +1327 -0
  80. package/lib/Socket/communities.d.ts +562 -0
  81. package/lib/Socket/communities.js +439 -0
  82. package/lib/Socket/dugong.d.ts +117 -0
  83. package/lib/Socket/dugong.js +798 -0
  84. package/lib/Socket/groups.d.ts +285 -0
  85. package/lib/Socket/groups.js +354 -0
  86. package/lib/Socket/index.d.ts +585 -0
  87. package/lib/Socket/index.js +52 -0
  88. package/lib/Socket/messages-recv.d.ts +333 -0
  89. package/lib/Socket/messages-recv.js +1781 -0
  90. package/lib/Socket/messages-send.d.ts +353 -0
  91. package/lib/Socket/messages-send.js +1524 -0
  92. package/lib/Socket/mex.d.ts +1 -0
  93. package/lib/Socket/mex.js +41 -0
  94. package/lib/Socket/newsletter.d.ts +286 -0
  95. package/lib/Socket/newsletter.js +364 -0
  96. package/lib/Socket/socket.d.ts +60 -0
  97. package/lib/Socket/socket.js +1012 -0
  98. package/lib/Socket/username.d.ts +82 -0
  99. package/lib/Socket/username.js +159 -0
  100. package/lib/Store/index.d.ts +3 -0
  101. package/lib/Store/index.js +3 -0
  102. package/lib/Store/make-in-memory-store.d.ts +62 -0
  103. package/lib/Store/make-in-memory-store.js +428 -0
  104. package/lib/Store/make-ordered-dictionary.d.ts +12 -0
  105. package/lib/Store/make-ordered-dictionary.js +78 -0
  106. package/lib/Store/object-repository.d.ts +10 -0
  107. package/lib/Store/object-repository.js +23 -0
  108. package/lib/Types/Auth.d.ts +117 -0
  109. package/lib/Types/Auth.js +1 -0
  110. package/lib/Types/Bussines.d.ts +25 -0
  111. package/lib/Types/Call.d.ts +15 -0
  112. package/lib/Types/Call.js +1 -0
  113. package/lib/Types/Chat.d.ts +124 -0
  114. package/lib/Types/Chat.js +7 -0
  115. package/lib/Types/Contact.d.ts +26 -0
  116. package/lib/Types/Contact.js +1 -0
  117. package/lib/Types/Events.d.ts +256 -0
  118. package/lib/Types/Events.js +1 -0
  119. package/lib/Types/GroupMetadata.d.ts +71 -0
  120. package/lib/Types/GroupMetadata.js +1 -0
  121. package/lib/Types/Label.d.ts +5 -0
  122. package/lib/Types/Label.js +24 -0
  123. package/lib/Types/LabelAssociation.d.ts +6 -0
  124. package/lib/Types/LabelAssociation.js +6 -0
  125. package/lib/Types/Message.d.ts +62 -0
  126. package/lib/Types/Message.js +17 -0
  127. package/lib/Types/Mex.d.ts +2 -0
  128. package/lib/Types/Mex.js +38 -0
  129. package/lib/Types/Product.d.ts +79 -0
  130. package/lib/Types/Product.js +1 -0
  131. package/lib/Types/RichType.d.ts +2 -0
  132. package/lib/Types/RichType.js +22 -0
  133. package/lib/Types/Signal.d.ts +87 -0
  134. package/lib/Types/Signal.js +1 -0
  135. package/lib/Types/Socket.d.ts +138 -0
  136. package/lib/Types/Socket.js +1 -0
  137. package/lib/Types/State.d.ts +8 -0
  138. package/lib/Types/State.js +55 -0
  139. package/lib/Types/USync.d.ts +26 -0
  140. package/lib/Types/index.d.ts +68 -0
  141. package/lib/Types/index.js +27 -0
  142. package/lib/Utils/MessageBuilder.d.ts +2 -0
  143. package/lib/Utils/MessageBuilder.js +2 -0
  144. package/lib/Utils/PersistentStore.d.ts +60 -0
  145. package/lib/Utils/PersistentStore.js +592 -0
  146. package/lib/Utils/anti-delete.d.ts +74 -0
  147. package/lib/Utils/anti-delete.js +221 -0
  148. package/lib/Utils/auth-secure.d.ts +86 -0
  149. package/lib/Utils/auth-secure.js +764 -0
  150. package/lib/Utils/auth-utils.d.ts +57 -0
  151. package/lib/Utils/auth-utils.js +306 -0
  152. package/lib/Utils/auto-reply.d.ts +47 -0
  153. package/lib/Utils/auto-reply.js +157 -0
  154. package/lib/Utils/baileys-event-stream.d.ts +8 -0
  155. package/lib/Utils/baileys-event-stream.js +62 -0
  156. package/lib/Utils/browser-utils.d.ts +8 -0
  157. package/lib/Utils/browser-utils.js +27 -0
  158. package/lib/Utils/business.d.ts +49 -0
  159. package/lib/Utils/business.js +239 -0
  160. package/lib/Utils/button-helper-utils.d.ts +53 -0
  161. package/lib/Utils/button-helper-utils.js +312 -0
  162. package/lib/Utils/button-sender.d.ts +54 -0
  163. package/lib/Utils/button-sender.js +822 -0
  164. package/lib/Utils/chat-control.d.ts +159 -0
  165. package/lib/Utils/chat-control.js +230 -0
  166. package/lib/Utils/chat-history-helpers.d.ts +21 -0
  167. package/lib/Utils/chat-history-helpers.js +70 -0
  168. package/lib/Utils/chat-utils.d.ts +407 -0
  169. package/lib/Utils/chat-utils.js +885 -0
  170. package/lib/Utils/companion-reg-client-utils.d.ts +4 -0
  171. package/lib/Utils/companion-reg-client-utils.js +39 -0
  172. package/lib/Utils/crypto.d.ts +41 -0
  173. package/lib/Utils/crypto.js +147 -0
  174. package/lib/Utils/decode-wa-message.d.ts +83 -0
  175. package/lib/Utils/decode-wa-message.js +316 -0
  176. package/lib/Utils/event-buffer.d.ts +12 -0
  177. package/lib/Utils/event-buffer.js +635 -0
  178. package/lib/Utils/generics.d.ts +69 -0
  179. package/lib/Utils/generics.js +438 -0
  180. package/lib/Utils/history-share.d.ts +11 -0
  181. package/lib/Utils/history-share.js +70 -0
  182. package/lib/Utils/history.d.ts +90 -0
  183. package/lib/Utils/history.js +146 -0
  184. package/lib/Utils/humanizer.d.ts +12 -0
  185. package/lib/Utils/humanizer.js +73 -0
  186. package/lib/Utils/identity-change-handler.d.ts +13 -0
  187. package/lib/Utils/identity-change-handler.js +49 -0
  188. package/lib/Utils/index.d.ts +57 -0
  189. package/lib/Utils/index.js +56 -0
  190. package/lib/Utils/jid-tools.d.ts +6 -0
  191. package/lib/Utils/jid-tools.js +77 -0
  192. package/lib/Utils/link-preview.d.ts +12 -0
  193. package/lib/Utils/link-preview.js +84 -0
  194. package/lib/Utils/logger.d.ts +4 -0
  195. package/lib/Utils/logger.js +2 -0
  196. package/lib/Utils/lt-hash.d.ts +12 -0
  197. package/lib/Utils/lt-hash.js +26 -0
  198. package/lib/Utils/make-mutex.d.ts +6 -0
  199. package/lib/Utils/make-mutex.js +32 -0
  200. package/lib/Utils/media-messages.d.ts +18 -0
  201. package/lib/Utils/media-messages.js +70 -0
  202. package/lib/Utils/media-set.d.ts +13 -0
  203. package/lib/Utils/media-set.js +171 -0
  204. package/lib/Utils/message-kind.d.ts +32 -0
  205. package/lib/Utils/message-kind.js +136 -0
  206. package/lib/Utils/message-retry-manager.d.ts +79 -0
  207. package/lib/Utils/message-retry-manager.js +264 -0
  208. package/lib/Utils/message-search.d.ts +44 -0
  209. package/lib/Utils/message-search.js +188 -0
  210. package/lib/Utils/messages-media.d.ts +135 -0
  211. package/lib/Utils/messages-media.js +868 -0
  212. package/lib/Utils/messages.d.ts +44 -0
  213. package/lib/Utils/messages.js +2326 -0
  214. package/lib/Utils/meta-ai.d.ts +13 -0
  215. package/lib/Utils/meta-ai.js +74 -0
  216. package/lib/Utils/mini-app.d.ts +35 -0
  217. package/lib/Utils/mini-app.js +213 -0
  218. package/lib/Utils/noise-handler.d.ts +20 -0
  219. package/lib/Utils/noise-handler.js +200 -0
  220. package/lib/Utils/offline-node-processor.d.ts +9 -0
  221. package/lib/Utils/offline-node-processor.js +39 -0
  222. package/lib/Utils/past-participants.d.ts +14 -0
  223. package/lib/Utils/past-participants.js +40 -0
  224. package/lib/Utils/pre-key-manager.d.ts +25 -0
  225. package/lib/Utils/pre-key-manager.js +105 -0
  226. package/lib/Utils/process-message.d.ts +82 -0
  227. package/lib/Utils/process-message.js +808 -0
  228. package/lib/Utils/qr-render.d.ts +59 -0
  229. package/lib/Utils/qr-render.js +179 -0
  230. package/lib/Utils/qrcodegen.d.ts +79 -0
  231. package/lib/Utils/qrcodegen.js +848 -0
  232. package/lib/Utils/reporting-utils.d.ts +12 -0
  233. package/lib/Utils/reporting-utils.js +257 -0
  234. package/lib/Utils/rich-message-utils.d.ts +48 -0
  235. package/lib/Utils/rich-message-utils.js +444 -0
  236. package/lib/Utils/router.d.ts +37 -0
  237. package/lib/Utils/router.js +165 -0
  238. package/lib/Utils/scheduled-posts.d.ts +30 -0
  239. package/lib/Utils/scheduled-posts.js +110 -0
  240. package/lib/Utils/scheduling.d.ts +42 -0
  241. package/lib/Utils/scheduling.js +139 -0
  242. package/lib/Utils/signal.d.ts +82 -0
  243. package/lib/Utils/signal.js +200 -0
  244. package/lib/Utils/stanza-ack.d.ts +16 -0
  245. package/lib/Utils/stanza-ack.js +37 -0
  246. package/lib/Utils/status.d.ts +50 -0
  247. package/lib/Utils/status.js +107 -0
  248. package/lib/Utils/stickerpack.d.ts +51 -0
  249. package/lib/Utils/stickerpack.js +274 -0
  250. package/lib/Utils/sync-action-utils.d.ts +2 -0
  251. package/lib/Utils/sync-action-utils.js +48 -0
  252. package/lib/Utils/tag.d.ts +12 -0
  253. package/lib/Utils/tag.js +44 -0
  254. package/lib/Utils/tc-token-utils.d.ts +29 -0
  255. package/lib/Utils/tc-token-utils.js +162 -0
  256. package/lib/Utils/templates.d.ts +76 -0
  257. package/lib/Utils/templates.js +150 -0
  258. package/lib/Utils/transcribe.d.ts +12 -0
  259. package/lib/Utils/transcribe.js +107 -0
  260. package/lib/Utils/use-cache-manager-auth-state.d.ts +13 -0
  261. package/lib/Utils/use-cache-manager-auth-state.js +81 -0
  262. package/lib/Utils/use-multi-file-auth-state.d.ts +10 -0
  263. package/lib/Utils/use-multi-file-auth-state.js +166 -0
  264. package/lib/Utils/use-single-file-auth-state.d.ts +10 -0
  265. package/lib/Utils/use-single-file-auth-state.js +113 -0
  266. package/lib/Utils/use-sqlite-auth-state.d.ts +11 -0
  267. package/lib/Utils/use-sqlite-auth-state.js +169 -0
  268. package/lib/Utils/validate-connection.d.ts +42 -0
  269. package/lib/Utils/validate-connection.js +198 -0
  270. package/lib/Utils/vcard.d.ts +58 -0
  271. package/lib/Utils/vcard.js +104 -0
  272. package/lib/Utils/voice-note.d.ts +15 -0
  273. package/lib/Utils/voice-note.js +63 -0
  274. package/lib/VoIP/audio-feeder.d.ts +18 -0
  275. package/lib/VoIP/audio-feeder.js +160 -0
  276. package/lib/VoIP/call-recorder.d.ts +13 -0
  277. package/lib/VoIP/call-recorder.js +73 -0
  278. package/lib/VoIP/index.d.ts +86 -0
  279. package/lib/VoIP/index.js +611 -0
  280. package/lib/VoIP/relay-transport.d.ts +43 -0
  281. package/lib/VoIP/relay-transport.js +563 -0
  282. package/lib/VoIP/signaling.d.ts +26 -0
  283. package/lib/VoIP/signaling.js +662 -0
  284. package/lib/VoIP/types.d.ts +69 -0
  285. package/lib/VoIP/types.js +17 -0
  286. package/lib/VoIP/wasm-engine.d.ts +120 -0
  287. package/lib/VoIP/wasm-engine.js +1358 -0
  288. package/lib/VoIP/worker-bootstrap.d.ts +4 -0
  289. package/lib/VoIP/worker-bootstrap.js +1046 -0
  290. package/lib/WABinary/constants.d.ts +61 -0
  291. package/lib/WABinary/constants.js +1466 -0
  292. package/lib/WABinary/decode.d.ts +9 -0
  293. package/lib/WABinary/decode.js +261 -0
  294. package/lib/WABinary/encode.d.ts +2 -0
  295. package/lib/WABinary/encode.js +219 -0
  296. package/lib/WABinary/generic-utils.d.ts +74 -0
  297. package/lib/WABinary/generic-utils.js +276 -0
  298. package/lib/WABinary/index.d.ts +5 -0
  299. package/lib/WABinary/index.js +5 -0
  300. package/lib/WABinary/jid-utils.d.ts +28 -0
  301. package/lib/WABinary/jid-utils.js +95 -0
  302. package/lib/WABinary/types.d.ts +19 -0
  303. package/lib/WABinary/types.js +1 -0
  304. package/lib/WAM/BinaryInfo.d.ts +7 -0
  305. package/lib/WAM/BinaryInfo.js +9 -0
  306. package/lib/WAM/constants.d.ts +34926 -0
  307. package/lib/WAM/constants.js +22852 -0
  308. package/lib/WAM/encode.d.ts +1 -0
  309. package/lib/WAM/encode.js +149 -0
  310. package/lib/WAM/index.d.ts +3 -0
  311. package/lib/WAM/index.js +3 -0
  312. package/lib/WAUSync/Protocols/USyncContactProtocol.d.ts +36 -0
  313. package/lib/WAUSync/Protocols/USyncContactProtocol.js +51 -0
  314. package/lib/WAUSync/Protocols/USyncDeviceProtocol.d.ts +29 -0
  315. package/lib/WAUSync/Protocols/USyncDeviceProtocol.js +62 -0
  316. package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.d.ts +12 -0
  317. package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.js +26 -0
  318. package/lib/WAUSync/Protocols/USyncStatusProtocol.d.ts +12 -0
  319. package/lib/WAUSync/Protocols/USyncStatusProtocol.js +37 -0
  320. package/lib/WAUSync/Protocols/USyncUsernameProtocol.d.ts +9 -0
  321. package/lib/WAUSync/Protocols/USyncUsernameProtocol.js +24 -0
  322. package/lib/WAUSync/Protocols/UsyncBotProfileProtocol.d.ts +38 -0
  323. package/lib/WAUSync/Protocols/UsyncBotProfileProtocol.js +50 -0
  324. package/lib/WAUSync/Protocols/UsyncLIDProtocol.d.ts +14 -0
  325. package/lib/WAUSync/Protocols/UsyncLIDProtocol.js +28 -0
  326. package/lib/WAUSync/Protocols/index.d.ts +7 -0
  327. package/lib/WAUSync/Protocols/index.js +7 -0
  328. package/lib/WAUSync/USyncQuery.d.ts +20 -0
  329. package/lib/WAUSync/USyncQuery.js +121 -0
  330. package/lib/WAUSync/USyncUser.d.ts +16 -0
  331. package/lib/WAUSync/USyncUser.js +30 -0
  332. package/lib/WAUSync/index.d.ts +3 -0
  333. package/lib/WAUSync/index.js +3 -0
  334. package/lib/assets/wasm/loader.d.ts +5 -0
  335. package/lib/assets/wasm/loader.js +5 -0
  336. package/lib/assets/wasm/whatsapp.wasm +0 -0
  337. package/lib/assets/wasm/worker-modules.d.ts +5 -0
  338. package/lib/assets/wasm/worker-modules.js +273 -0
  339. package/lib/index.d.ts +18 -0
  340. package/lib/index.js +23 -0
  341. package/package.json +180 -0
  342. package/postinstall-banner.js +82 -0
@@ -0,0 +1,82 @@
1
+ import type { makeCommunitiesSocket } from './communities.js';
2
+
3
+ /** Mex query IDs captured from live WA Web sessions (may rotate with WA updates). */
4
+ export interface UsernameQueryIds {
5
+ CHECK: string;
6
+ CHECK_MULTI: string;
7
+ SET: string;
8
+ GET: string;
9
+ GET_RECOMMENDATIONS: string;
10
+ PIN_SET: string;
11
+ }
12
+ export declare const USERNAME_QUERY_IDS: UsernameQueryIds;
13
+ /** Type twin of the const above (lets `import('…').USERNAME_QUERY_IDS` resolve in type position). */
14
+ export type USERNAME_QUERY_IDS = UsernameQueryIds;
15
+
16
+ export interface UsernameCheckResult {
17
+ SUCCESS: 'SUCCESS';
18
+ INVALID: 'INVALID';
19
+ }
20
+ export declare const USERNAME_CHECK_RESULT: UsernameCheckResult;
21
+ /** Type twin of the const above. */
22
+ export type USERNAME_CHECK_RESULT = UsernameCheckResult;
23
+
24
+ export interface UsernameSource {
25
+ FB: 'FB';
26
+ IG: 'IG';
27
+ USER_INPUT: 'USER_INPUT';
28
+ SUGGESTION: 'SUGGESTION';
29
+ }
30
+ export declare const USERNAME_SOURCE: UsernameSource;
31
+ /** Type twin of the const above. */
32
+ export type USERNAME_SOURCE = UsernameSource;
33
+
34
+ export interface SetUsernameOptions {
35
+ source?: string;
36
+ sessionId?: string;
37
+ pin?: string;
38
+ reserved?: boolean;
39
+ }
40
+
41
+ export interface CheckUsernameResult {
42
+ available: boolean;
43
+ username: string;
44
+ suggestions?: any[];
45
+ rejectionReasons?: any[];
46
+ suggestionsEligible?: boolean;
47
+ }
48
+
49
+ export interface FoundUsernameUser {
50
+ jid: string;
51
+ contact: boolean;
52
+ }
53
+
54
+ /**
55
+ * WhatsApp Username socket layer: check, set, pin, find, and recommend
56
+ * usernames. (Method list mirrors the makeWASocket return type in
57
+ * Socket/index.d.ts — keep both in sync.)
58
+ */
59
+ export interface UsernameSocketMethods {
60
+ /** Check username availability (with suggestions when taken). */
61
+ checkUsername: (username: string, includeSuggestions?: boolean) => Promise<CheckUsernameResult>;
62
+ /** Check multiple usernames at once. */
63
+ checkUsernameMulti: (usernames: string[]) => Promise<any>;
64
+ /** Set own username. */
65
+ setUsername: (username: string, options?: SetUsernameOptions) => Promise<any>;
66
+ /** Reserve a username (WA 2026 reservation flow — same endpoint, `reserved: true`). */
67
+ reserveUsername: (username: string, options?: SetUsernameOptions) => Promise<any>;
68
+ /** Delete / unset own username. */
69
+ deleteUsername: () => Promise<any>;
70
+ /** Get own username (null when unset). */
71
+ getMyUsername: () => Promise<string | null>;
72
+ /** Pin/unpin username (requires PIN). */
73
+ setUsernamePin: (pin: string) => Promise<any>;
74
+ /** Find a user by username (USync). Null when not found. */
75
+ findUserByUsername: (username: string, pin?: string) => Promise<FoundUsernameUser | null>;
76
+ /** Fetch usernames of known contacts (USync). */
77
+ fetchContactUsernames: (...jids: string[]) => Promise<any[]>;
78
+ /** Get username recommendations. */
79
+ getUsernameRecommendations: (source?: string | null) => Promise<any>;
80
+ }
81
+
82
+ export declare const makeUsernameSocket: (config: any) => ReturnType<typeof makeCommunitiesSocket> & UsernameSocketMethods;
@@ -0,0 +1,159 @@
1
+ import { USyncQuery, USyncUser } from '../WAUSync/index.js';
2
+ import { makeCommunitiesSocket } from './communities.js';
3
+ import { executeWMexQuery } from './mex.js';
4
+
5
+ // JAP@Socket ---
6
+ // WhatsApp Username socket layer: check, set, pin, find, and recommend usernames.
7
+ // Query IDs below are captured from live WA Web sessions and may rotate with
8
+ // WA updates — re-capture via the proto-extract tool if a call starts failing
9
+ // with an "unexpected response structure" Boom.
10
+ export const USERNAME_QUERY_IDS = {
11
+ CHECK: '26124072630599520', // UsernameCheck
12
+ CHECK_MULTI: '27134626522840290', // UsernameCheckMulti
13
+ SET: '27108705368767936', // UsernameSet
14
+ GET: '32618050064506056', // UsernameGet
15
+ GET_RECOMMENDATIONS: '26077456248616956', // UsernameGetRecommendationsQuery
16
+ PIN_SET: '25529696019976770' // UsernamePinSet
17
+ };
18
+
19
+ export const USERNAME_CHECK_RESULT = {
20
+ SUCCESS: 'SUCCESS',
21
+ INVALID: 'INVALID'
22
+ };
23
+
24
+ export const USERNAME_SOURCE = {
25
+ FB: 'FB',
26
+ IG: 'IG',
27
+ USER_INPUT: 'USER_INPUT',
28
+ SUGGESTION: 'SUGGESTION'
29
+ };
30
+
31
+ export const makeUsernameSocket = (config) => {
32
+ const sock = makeCommunitiesSocket(config);
33
+ const { query, generateMessageTag, executeUSyncQuery } = sock;
34
+
35
+ /** Internal helper — wraps executeWMexQuery with this socket's query/tag */
36
+ const mexQuery = (variables, queryId, dataPath) => executeWMexQuery(variables, queryId, dataPath, query, generateMessageTag);
37
+
38
+ // 1. Check username availability
39
+ const checkUsername = async (username, includeSuggestions = true) => {
40
+ if (!USERNAME_QUERY_IDS.CHECK) {
41
+ throw new Error('Username CHECK query_id not configured — capture a live WA session to obtain it');
42
+ }
43
+ const data = await mexQuery({ username, include_suggestions: includeSuggestions }, USERNAME_QUERY_IDS.CHECK, 'xwa2_username_check');
44
+ if (data?.result === USERNAME_CHECK_RESULT.SUCCESS) {
45
+ return { available: true, username };
46
+ }
47
+ return {
48
+ available: false,
49
+ username,
50
+ suggestions: data?.suggestions ?? [],
51
+ rejectionReasons: data?.rejection_reasons ?? [],
52
+ suggestionsEligible: data?.suggestions_eligible ?? true
53
+ };
54
+ };
55
+
56
+ // 2. Check multiple usernames at once
57
+ const checkUsernameMulti = async (usernames) => {
58
+ if (!USERNAME_QUERY_IDS.CHECK_MULTI) {
59
+ throw new Error('Username CHECK_MULTI query_id not configured');
60
+ }
61
+ return mexQuery({ usernames }, USERNAME_QUERY_IDS.CHECK_MULTI, 'xwa2_username_check_multi');
62
+ };
63
+
64
+ // 3. Set username
65
+ const setUsername = async (username, options = {}) => {
66
+ if (!USERNAME_QUERY_IDS.SET) {
67
+ throw new Error('Username SET query_id not configured — capture a live WA session to obtain it');
68
+ }
69
+ const { source = USERNAME_SOURCE.USER_INPUT, sessionId, pin, reserved = false } = options;
70
+ const variables = {
71
+ username,
72
+ reserved,
73
+ source,
74
+ ...(sessionId ? { session_id: sessionId } : {}),
75
+ ...(pin ? { pin } : {})
76
+ };
77
+ return mexQuery(variables, USERNAME_QUERY_IDS.SET, 'xwa2_username_set');
78
+ };
79
+
80
+ // 2b. Reserve a username (WA 2026 reservation flow — same endpoint, `reserved: true`)
81
+ const reserveUsername = async (username, options = {}) => {
82
+ return setUsername(username, { ...options, reserved: true });
83
+ };
84
+
85
+ // 4. Delete / unset username
86
+ const deleteUsername = async () => {
87
+ if (!USERNAME_QUERY_IDS.SET) {
88
+ throw new Error('Username SET query_id not configured — capture a live WA session to obtain it');
89
+ }
90
+ return mexQuery({ username: null }, USERNAME_QUERY_IDS.SET, 'xwa2_username_delete');
91
+ };
92
+
93
+ // 5. Get own username
94
+ const getMyUsername = async () => {
95
+ if (!USERNAME_QUERY_IDS.GET) {
96
+ throw new Error('Username GET query_id not configured — capture a live WA session to obtain it');
97
+ }
98
+ const data = await mexQuery({}, USERNAME_QUERY_IDS.GET, 'xwa2_username_get');
99
+ return data?.username ?? null;
100
+ };
101
+
102
+ // 6. Pin/unpin username (requires PIN)
103
+ const setUsernamePin = async (pin) => {
104
+ if (!USERNAME_QUERY_IDS.PIN_SET) {
105
+ throw new Error('Username PIN_SET query_id not configured — capture a live WA session to obtain it');
106
+ }
107
+ return mexQuery({ pin }, USERNAME_QUERY_IDS.PIN_SET, 'xwa2_username_pin_set');
108
+ };
109
+
110
+ // 7. Find user by username (USync)
111
+ const findUserByUsername = async (username, pin) => {
112
+ const usyncQuery = new USyncQuery().withContactProtocol();
113
+ const user = new USyncUser().withUsername(username);
114
+ if (pin) user.withUsernameKey(pin);
115
+ usyncQuery.withUser(user);
116
+ const result = await executeUSyncQuery(usyncQuery);
117
+ if (!result?.list?.length) return null;
118
+ const entry = result.list[0];
119
+ if (!entry) return null;
120
+ return {
121
+ jid: entry.id,
122
+ contact: Boolean(entry.contact)
123
+ };
124
+ };
125
+
126
+ // 8. Fetch usernames of known contacts (USync)
127
+ const fetchContactUsernames = async (...jids) => {
128
+ const usyncQuery = new USyncQuery().withUsernameProtocol();
129
+ for (const jid of jids) {
130
+ usyncQuery.withUser(new USyncUser().withId(jid));
131
+ }
132
+ const result = await executeUSyncQuery(usyncQuery);
133
+ return result?.list ?? [];
134
+ };
135
+
136
+ // 9. Get username recommendations
137
+ const getUsernameRecommendations = async (source = null) => {
138
+ const variables = {};
139
+ if (source) variables.source = source;
140
+ return mexQuery(variables, USERNAME_QUERY_IDS.GET_RECOMMENDATIONS, 'xwa2_username_get_recommendations');
141
+ };
142
+
143
+ return {
144
+ ...sock,
145
+ checkUsername,
146
+ checkUsernameMulti,
147
+ setUsername,
148
+ reserveUsername,
149
+ deleteUsername,
150
+ getMyUsername,
151
+ setUsernamePin,
152
+ findUserByUsername,
153
+ fetchContactUsernames,
154
+ getUsernameRecommendations,
155
+ USERNAME_QUERY_IDS,
156
+ USERNAME_CHECK_RESULT,
157
+ USERNAME_SOURCE
158
+ };
159
+ };
@@ -0,0 +1,3 @@
1
+ export * from "./make-in-memory-store.js";
2
+ export * from "./make-ordered-dictionary.js";
3
+ export * from "./object-repository.js";
@@ -0,0 +1,3 @@
1
+ export * from './make-in-memory-store.js';
2
+ export * from './make-ordered-dictionary.js';
3
+ export * from './object-repository.js';
@@ -0,0 +1,62 @@
1
+ export function waChatKey(pin: any): {
2
+ key: (c: any) => string;
3
+ compare: (k1: any, k2: any) => any;
4
+ };
5
+ export function waMessageID(m: any): any;
6
+ export namespace waLabelAssociationKey {
7
+ function key(la: any): any;
8
+ function compare(k1: any, k2: any): any;
9
+ }
10
+ export function makeInMemoryStore(config?: {}): {
11
+ chats: any;
12
+ contacts: {};
13
+ messages: {};
14
+ groupMetadata: {};
15
+ state: {
16
+ connection: string;
17
+ };
18
+ presences: {};
19
+ labels: ObjectRepository;
20
+ labelAssociations: any;
21
+ bind: (ev: any) => void;
22
+ /** loads messages from the store, if not found -- uses the legacy connection */
23
+ loadMessages: (jid: any, count: any, cursor: any) => Promise<any>;
24
+ /**
25
+ * Get all available labels for profile
26
+ *
27
+ * Keep in mind that the list is formed from predefined tags and tags
28
+ * that were "caught" during their editing.
29
+ */
30
+ getLabels: () => ObjectRepository;
31
+ /**
32
+ * Get labels for chat
33
+ *
34
+ * @returns Label IDs
35
+ **/
36
+ getChatLabels: (chatId: any) => any;
37
+ /**
38
+ * Get labels for message
39
+ *
40
+ * @returns Label IDs
41
+ **/
42
+ getMessageLabels: (messageId: any) => any;
43
+ loadMessage: (jid: any, id: any) => Promise<any>;
44
+ mostRecentMessage: (jid: any) => Promise<any>;
45
+ fetchImageUrl: (jid: any, sock: any) => Promise<any>;
46
+ fetchGroupMetadata: (jid: any, sock: any) => Promise<any>;
47
+ fetchMessageReceipts: ({ remoteJid, id }: {
48
+ remoteJid: any;
49
+ id: any;
50
+ }) => Promise<any>;
51
+ toJSON: () => {
52
+ chats: any;
53
+ contacts: {};
54
+ messages: {};
55
+ labels: ObjectRepository;
56
+ labelAssociations: any;
57
+ };
58
+ fromJSON: (json: any) => void;
59
+ writeToFile: (path: any) => void;
60
+ readFromFile: (path: any) => void;
61
+ };
62
+ import { ObjectRepository } from './object-repository.js';