@violetix/baileys 0.0.0-stage → 0.4.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 (458) hide show
  1. package/LICENSE +22 -0
  2. package/README.md +3017 -2
  3. package/WAProto/index.d.ts +15932 -0
  4. package/WAProto/index.js +115856 -0
  5. package/engine-requirements.js +13 -0
  6. package/lib/Defaults/index.d.ts +145 -0
  7. package/lib/Defaults/index.d.ts.map +1 -0
  8. package/lib/Defaults/index.js +157 -0
  9. package/lib/Defaults/index.js.map +1 -0
  10. package/lib/Signal/Group/ciphertext-message.d.ts +10 -0
  11. package/lib/Signal/Group/ciphertext-message.d.ts.map +1 -0
  12. package/lib/Signal/Group/ciphertext-message.js +12 -0
  13. package/lib/Signal/Group/ciphertext-message.js.map +1 -0
  14. package/lib/Signal/Group/group-session-builder.d.ts +8 -0
  15. package/lib/Signal/Group/group-session-builder.d.ts.map +1 -0
  16. package/lib/Signal/Group/group-session-builder.js +30 -0
  17. package/lib/Signal/Group/group-session-builder.js.map +1 -0
  18. package/lib/Signal/Group/group_cipher.d.ts +11 -0
  19. package/lib/Signal/Group/group_cipher.d.ts.map +1 -0
  20. package/lib/Signal/Group/group_cipher.js +82 -0
  21. package/lib/Signal/Group/group_cipher.js.map +1 -0
  22. package/lib/Signal/Group/index.d.ts +12 -0
  23. package/lib/Signal/Group/index.d.ts.map +1 -0
  24. package/lib/Signal/Group/index.js +12 -0
  25. package/lib/Signal/Group/index.js.map +1 -0
  26. package/lib/Signal/Group/keyhelper.d.ts +7 -0
  27. package/lib/Signal/Group/keyhelper.d.ts.map +1 -0
  28. package/lib/Signal/Group/keyhelper.js +18 -0
  29. package/lib/Signal/Group/keyhelper.js.map +1 -0
  30. package/lib/Signal/Group/sender-chain-key.d.ts +14 -0
  31. package/lib/Signal/Group/sender-chain-key.d.ts.map +1 -0
  32. package/lib/Signal/Group/sender-chain-key.js +26 -0
  33. package/lib/Signal/Group/sender-chain-key.js.map +1 -0
  34. package/lib/Signal/Group/sender-key-distribution-message.d.ts +17 -0
  35. package/lib/Signal/Group/sender-key-distribution-message.d.ts.map +1 -0
  36. package/lib/Signal/Group/sender-key-distribution-message.js +63 -0
  37. package/lib/Signal/Group/sender-key-distribution-message.js.map +1 -0
  38. package/lib/Signal/Group/sender-key-message.d.ts +19 -0
  39. package/lib/Signal/Group/sender-key-message.d.ts.map +1 -0
  40. package/lib/Signal/Group/sender-key-message.js +66 -0
  41. package/lib/Signal/Group/sender-key-message.js.map +1 -0
  42. package/lib/Signal/Group/sender-key-name.d.ts +12 -0
  43. package/lib/Signal/Group/sender-key-name.d.ts.map +1 -0
  44. package/lib/Signal/Group/sender-key-name.js +48 -0
  45. package/lib/Signal/Group/sender-key-name.js.map +1 -0
  46. package/lib/Signal/Group/sender-key-record.d.ts +13 -0
  47. package/lib/Signal/Group/sender-key-record.d.ts.map +1 -0
  48. package/lib/Signal/Group/sender-key-record.js +41 -0
  49. package/lib/Signal/Group/sender-key-record.js.map +1 -0
  50. package/lib/Signal/Group/sender-key-state.d.ts +17 -0
  51. package/lib/Signal/Group/sender-key-state.d.ts.map +1 -0
  52. package/lib/Signal/Group/sender-key-state.js +84 -0
  53. package/lib/Signal/Group/sender-key-state.js.map +1 -0
  54. package/lib/Signal/Group/sender-message-key.d.ts +12 -0
  55. package/lib/Signal/Group/sender-message-key.d.ts.map +1 -0
  56. package/lib/Signal/Group/sender-message-key.js +26 -0
  57. package/lib/Signal/Group/sender-message-key.js.map +1 -0
  58. package/lib/Signal/libsignal.d.ts +55 -0
  59. package/lib/Signal/libsignal.d.ts.map +1 -0
  60. package/lib/Signal/libsignal.js +403 -0
  61. package/lib/Signal/libsignal.js.map +1 -0
  62. package/lib/Signal/lid-mapping.d.ts +21 -0
  63. package/lib/Signal/lid-mapping.d.ts.map +1 -0
  64. package/lib/Signal/lid-mapping.js +277 -0
  65. package/lib/Signal/lid-mapping.js.map +1 -0
  66. package/lib/Socket/Client/index.d.ts +3 -0
  67. package/lib/Socket/Client/index.d.ts.map +1 -0
  68. package/lib/Socket/Client/index.js +3 -0
  69. package/lib/Socket/Client/index.js.map +1 -0
  70. package/lib/Socket/Client/types.d.ts +6 -0
  71. package/lib/Socket/Client/types.d.ts.map +1 -0
  72. package/lib/Socket/Client/types.js +93 -0
  73. package/lib/Socket/Client/types.js.map +1 -0
  74. package/lib/Socket/Client/websocket.d.ts +13 -0
  75. package/lib/Socket/Client/websocket.d.ts.map +1 -0
  76. package/lib/Socket/Client/websocket.js +57 -0
  77. package/lib/Socket/Client/websocket.js.map +1 -0
  78. package/lib/Socket/business.d.ts +428 -0
  79. package/lib/Socket/business.d.ts.map +1 -0
  80. package/lib/Socket/business.js +380 -0
  81. package/lib/Socket/business.js.map +1 -0
  82. package/lib/Socket/chats.d.ts +176 -0
  83. package/lib/Socket/chats.d.ts.map +1 -0
  84. package/lib/Socket/chats.js +1238 -0
  85. package/lib/Socket/chats.js.map +1 -0
  86. package/lib/Socket/communities.d.ts +595 -0
  87. package/lib/Socket/communities.d.ts.map +1 -0
  88. package/lib/Socket/communities.js +432 -0
  89. package/lib/Socket/communities.js.map +1 -0
  90. package/lib/Socket/graphql.js +908 -0
  91. package/lib/Socket/groups.d.ts +318 -0
  92. package/lib/Socket/groups.d.ts.map +1 -0
  93. package/lib/Socket/groups.js +364 -0
  94. package/lib/Socket/groups.js.map +1 -0
  95. package/lib/Socket/index.d.ts +947 -0
  96. package/lib/Socket/index.d.ts.map +1 -0
  97. package/lib/Socket/index.js +19 -0
  98. package/lib/Socket/index.js.map +1 -0
  99. package/lib/Socket/interop.js +562 -0
  100. package/lib/Socket/managed-account.js +210 -0
  101. package/lib/Socket/messages-recv.d.ts +367 -0
  102. package/lib/Socket/messages-recv.d.ts.map +1 -0
  103. package/lib/Socket/messages-recv.js +2199 -0
  104. package/lib/Socket/messages-recv.js.map +1 -0
  105. package/lib/Socket/messages-send.d.ts +364 -0
  106. package/lib/Socket/messages-send.d.ts.map +1 -0
  107. package/lib/Socket/messages-send.js +1631 -0
  108. package/lib/Socket/messages-send.js.map +1 -0
  109. package/lib/Socket/mex.d.ts +2 -0
  110. package/lib/Socket/mex.d.ts.map +1 -0
  111. package/lib/Socket/mex.js +42 -0
  112. package/lib/Socket/mex.js.map +1 -0
  113. package/lib/Socket/newsletter.d.ts +315 -0
  114. package/lib/Socket/newsletter.d.ts.map +1 -0
  115. package/lib/Socket/newsletter.js +235 -0
  116. package/lib/Socket/newsletter.js.map +1 -0
  117. package/lib/Socket/privacy.js +448 -0
  118. package/lib/Socket/registration.js +430 -0
  119. package/lib/Socket/socket.d.ts +99 -0
  120. package/lib/Socket/socket.d.ts.map +1 -0
  121. package/lib/Socket/socket.js +1290 -0
  122. package/lib/Socket/socket.js.map +1 -0
  123. package/lib/Store/index.d.ts +4 -0
  124. package/lib/Store/index.d.ts.map +1 -0
  125. package/lib/Store/index.js +4 -0
  126. package/lib/Store/index.js.map +1 -0
  127. package/lib/Store/make-in-memory-store.d.ts +63 -0
  128. package/lib/Store/make-in-memory-store.d.ts.map +1 -0
  129. package/lib/Store/make-in-memory-store.js +462 -0
  130. package/lib/Store/make-in-memory-store.js.map +1 -0
  131. package/lib/Store/make-ordered-dictionary.d.ts +13 -0
  132. package/lib/Store/make-ordered-dictionary.d.ts.map +1 -0
  133. package/lib/Store/make-ordered-dictionary.js +79 -0
  134. package/lib/Store/make-ordered-dictionary.js.map +1 -0
  135. package/lib/Store/object-repository.d.ts +11 -0
  136. package/lib/Store/object-repository.d.ts.map +1 -0
  137. package/lib/Store/object-repository.js +24 -0
  138. package/lib/Store/object-repository.js.map +1 -0
  139. package/lib/Types/Auth.d.ts +60 -0
  140. package/lib/Types/Auth.d.ts.map +1 -0
  141. package/lib/Types/Auth.js +2 -0
  142. package/lib/Types/Auth.js.map +1 -0
  143. package/lib/Types/Bussines.d.ts +9 -0
  144. package/lib/Types/Bussines.d.ts.map +1 -0
  145. package/lib/Types/Bussines.js +2 -0
  146. package/lib/Types/Bussines.js.map +1 -0
  147. package/lib/Types/Call.d.ts +22 -0
  148. package/lib/Types/Call.d.ts.map +1 -0
  149. package/lib/Types/Call.js +2 -0
  150. package/lib/Types/Call.js.map +1 -0
  151. package/lib/Types/Chat.d.ts +3 -0
  152. package/lib/Types/Chat.d.ts.map +1 -0
  153. package/lib/Types/Chat.js +8 -0
  154. package/lib/Types/Chat.js.map +1 -0
  155. package/lib/Types/Contact.d.ts +11 -0
  156. package/lib/Types/Contact.d.ts.map +1 -0
  157. package/lib/Types/Contact.js +2 -0
  158. package/lib/Types/Contact.js.map +1 -0
  159. package/lib/Types/Events.d.ts +41 -0
  160. package/lib/Types/Events.d.ts.map +1 -0
  161. package/lib/Types/Events.js +2 -0
  162. package/lib/Types/Events.js.map +1 -0
  163. package/lib/Types/GroupMetadata.d.ts +36 -0
  164. package/lib/Types/GroupMetadata.d.ts.map +1 -0
  165. package/lib/Types/GroupMetadata.js +2 -0
  166. package/lib/Types/GroupMetadata.js.map +1 -0
  167. package/lib/Types/Label.d.ts +3 -0
  168. package/lib/Types/Label.d.ts.map +1 -0
  169. package/lib/Types/Label.js +25 -0
  170. package/lib/Types/Label.js.map +1 -0
  171. package/lib/Types/LabelAssociation.d.ts +3 -0
  172. package/lib/Types/LabelAssociation.d.ts.map +1 -0
  173. package/lib/Types/LabelAssociation.js +7 -0
  174. package/lib/Types/LabelAssociation.js.map +1 -0
  175. package/lib/Types/Message.d.ts +22 -0
  176. package/lib/Types/Message.d.ts.map +1 -0
  177. package/lib/Types/Message.js +18 -0
  178. package/lib/Types/Message.js.map +1 -0
  179. package/lib/Types/Mex.d.ts +3 -0
  180. package/lib/Types/Mex.d.ts.map +1 -0
  181. package/lib/Types/Mex.js +49 -0
  182. package/lib/Types/Mex.js.map +1 -0
  183. package/lib/Types/Product.d.ts +5 -0
  184. package/lib/Types/Product.d.ts.map +1 -0
  185. package/lib/Types/Product.js +2 -0
  186. package/lib/Types/Product.js.map +1 -0
  187. package/lib/Types/RichType.d.ts +3 -0
  188. package/lib/Types/RichType.d.ts.map +1 -0
  189. package/lib/Types/RichType.js +23 -0
  190. package/lib/Types/RichType.js.map +1 -0
  191. package/lib/Types/Signal.d.ts +10 -0
  192. package/lib/Types/Signal.d.ts.map +1 -0
  193. package/lib/Types/Signal.js +2 -0
  194. package/lib/Types/Signal.js.map +1 -0
  195. package/lib/Types/Socket.d.ts +33 -0
  196. package/lib/Types/Socket.d.ts.map +1 -0
  197. package/lib/Types/Socket.js +2 -0
  198. package/lib/Types/Socket.js.map +1 -0
  199. package/lib/Types/State.d.ts +6 -0
  200. package/lib/Types/State.d.ts.map +1 -0
  201. package/lib/Types/State.js +56 -0
  202. package/lib/Types/State.js.map +1 -0
  203. package/lib/Types/USync.d.ts +9 -0
  204. package/lib/Types/USync.d.ts.map +1 -0
  205. package/lib/Types/USync.js +2 -0
  206. package/lib/Types/USync.js.map +1 -0
  207. package/lib/Types/index.d.ts +16 -0
  208. package/lib/Types/index.d.ts.map +1 -0
  209. package/lib/Types/index.js +26 -0
  210. package/lib/Types/index.js.map +1 -0
  211. package/lib/Utils/a2ui.d.ts +50 -0
  212. package/lib/Utils/a2ui.js +168 -0
  213. package/lib/Utils/anchor-guard.d.ts +71 -0
  214. package/lib/Utils/anchor-guard.js +404 -0
  215. package/lib/Utils/async-utils.js +7 -0
  216. package/lib/Utils/auth-utils.d.ts +59 -0
  217. package/lib/Utils/auth-utils.d.ts.map +1 -0
  218. package/lib/Utils/auth-utils.js +306 -0
  219. package/lib/Utils/auth-utils.js.map +1 -0
  220. package/lib/Utils/browser-utils.d.ts +10 -0
  221. package/lib/Utils/browser-utils.d.ts.map +1 -0
  222. package/lib/Utils/browser-utils.js +29 -0
  223. package/lib/Utils/browser-utils.js.map +1 -0
  224. package/lib/Utils/business.d.ts +50 -0
  225. package/lib/Utils/business.d.ts.map +1 -0
  226. package/lib/Utils/business.js +245 -0
  227. package/lib/Utils/business.js.map +1 -0
  228. package/lib/Utils/chat-utils.d.ts +409 -0
  229. package/lib/Utils/chat-utils.d.ts.map +1 -0
  230. package/lib/Utils/chat-utils.js +872 -0
  231. package/lib/Utils/chat-utils.js.map +1 -0
  232. package/lib/Utils/companion-reg-client-utils.d.ts +10 -0
  233. package/lib/Utils/companion-reg-client-utils.d.ts.map +1 -0
  234. package/lib/Utils/companion-reg-client-utils.js +69 -0
  235. package/lib/Utils/companion-reg-client-utils.js.map +1 -0
  236. package/lib/Utils/crypto-worker.js +20 -0
  237. package/lib/Utils/crypto.d.ts +40 -0
  238. package/lib/Utils/crypto.d.ts.map +1 -0
  239. package/lib/Utils/crypto.js +118 -0
  240. package/lib/Utils/crypto.js.map +1 -0
  241. package/lib/Utils/decode-wa-message.d.ts +85 -0
  242. package/lib/Utils/decode-wa-message.d.ts.map +1 -0
  243. package/lib/Utils/decode-wa-message.js +467 -0
  244. package/lib/Utils/decode-wa-message.js.map +1 -0
  245. package/lib/Utils/event-buffer.d.ts +13 -0
  246. package/lib/Utils/event-buffer.d.ts.map +1 -0
  247. package/lib/Utils/event-buffer.js +651 -0
  248. package/lib/Utils/event-buffer.js.map +1 -0
  249. package/lib/Utils/generics.d.ts +64 -0
  250. package/lib/Utils/generics.d.ts.map +1 -0
  251. package/lib/Utils/generics.js +442 -0
  252. package/lib/Utils/generics.js.map +1 -0
  253. package/lib/Utils/history.d.ts +77 -0
  254. package/lib/Utils/history.d.ts.map +1 -0
  255. package/lib/Utils/history.js +188 -0
  256. package/lib/Utils/history.js.map +1 -0
  257. package/lib/Utils/identity-change-handler.d.ts +14 -0
  258. package/lib/Utils/identity-change-handler.d.ts.map +1 -0
  259. package/lib/Utils/identity-change-handler.js +50 -0
  260. package/lib/Utils/identity-change-handler.js.map +1 -0
  261. package/lib/Utils/ignore-key.d.ts +51 -0
  262. package/lib/Utils/ignore-key.js +174 -0
  263. package/lib/Utils/index.d.ts +29 -0
  264. package/lib/Utils/index.d.ts.map +1 -0
  265. package/lib/Utils/index.js +29 -0
  266. package/lib/Utils/index.js.map +1 -0
  267. package/lib/Utils/link-preview.d.ts +13 -0
  268. package/lib/Utils/link-preview.d.ts.map +1 -0
  269. package/lib/Utils/link-preview.js +85 -0
  270. package/lib/Utils/link-preview.js.map +1 -0
  271. package/lib/Utils/listener-guard.js +48 -0
  272. package/lib/Utils/logger.d.ts +3 -0
  273. package/lib/Utils/logger.d.ts.map +1 -0
  274. package/lib/Utils/logger.js +3 -0
  275. package/lib/Utils/logger.js.map +1 -0
  276. package/lib/Utils/lt-hash.d.ts +7 -0
  277. package/lib/Utils/lt-hash.d.ts.map +1 -0
  278. package/lib/Utils/lt-hash.js +8 -0
  279. package/lib/Utils/lt-hash.js.map +1 -0
  280. package/lib/Utils/make-mutex.d.ts +7 -0
  281. package/lib/Utils/make-mutex.d.ts.map +1 -0
  282. package/lib/Utils/make-mutex.js +33 -0
  283. package/lib/Utils/make-mutex.js.map +1 -0
  284. package/lib/Utils/message-retry-manager.d.ts +80 -0
  285. package/lib/Utils/message-retry-manager.d.ts.map +1 -0
  286. package/lib/Utils/message-retry-manager.js +285 -0
  287. package/lib/Utils/message-retry-manager.js.map +1 -0
  288. package/lib/Utils/messages-media.d.ts +166 -0
  289. package/lib/Utils/messages-media.d.ts.map +1 -0
  290. package/lib/Utils/messages-media.js +979 -0
  291. package/lib/Utils/messages-media.js.map +1 -0
  292. package/lib/Utils/messages.d.ts +47 -0
  293. package/lib/Utils/messages.d.ts.map +1 -0
  294. package/lib/Utils/messages.js +1959 -0
  295. package/lib/Utils/messages.js.map +1 -0
  296. package/lib/Utils/meta-ai-msmsg.d.ts +12 -0
  297. package/lib/Utils/meta-ai-msmsg.js +124 -0
  298. package/lib/Utils/noise-handler.d.ts +21 -0
  299. package/lib/Utils/noise-handler.d.ts.map +1 -0
  300. package/lib/Utils/noise-handler.js +206 -0
  301. package/lib/Utils/noise-handler.js.map +1 -0
  302. package/lib/Utils/offline-node-processor.d.ts +10 -0
  303. package/lib/Utils/offline-node-processor.d.ts.map +1 -0
  304. package/lib/Utils/offline-node-processor.js +40 -0
  305. package/lib/Utils/offline-node-processor.js.map +1 -0
  306. package/lib/Utils/pre-key-manager.d.ts +26 -0
  307. package/lib/Utils/pre-key-manager.d.ts.map +1 -0
  308. package/lib/Utils/pre-key-manager.js +106 -0
  309. package/lib/Utils/pre-key-manager.js.map +1 -0
  310. package/lib/Utils/process-message.d.ts +102 -0
  311. package/lib/Utils/process-message.d.ts.map +1 -0
  312. package/lib/Utils/process-message.js +798 -0
  313. package/lib/Utils/process-message.js.map +1 -0
  314. package/lib/Utils/reporting-utils.d.ts +13 -0
  315. package/lib/Utils/reporting-utils.d.ts.map +1 -0
  316. package/lib/Utils/reporting-utils.js +258 -0
  317. package/lib/Utils/reporting-utils.js.map +1 -0
  318. package/lib/Utils/rich-message-utils.d.ts +49 -0
  319. package/lib/Utils/rich-message-utils.d.ts.map +1 -0
  320. package/lib/Utils/rich-message-utils.js +369 -0
  321. package/lib/Utils/rich-message-utils.js.map +1 -0
  322. package/lib/Utils/session-queue.js +33 -0
  323. package/lib/Utils/signal.d.ts +83 -0
  324. package/lib/Utils/signal.d.ts.map +1 -0
  325. package/lib/Utils/signal.js +201 -0
  326. package/lib/Utils/signal.js.map +1 -0
  327. package/lib/Utils/stanza-ack.d.ts +22 -0
  328. package/lib/Utils/stanza-ack.d.ts.map +1 -0
  329. package/lib/Utils/stanza-ack.js +72 -0
  330. package/lib/Utils/stanza-ack.js.map +1 -0
  331. package/lib/Utils/sync-action-utils.d.ts +3 -0
  332. package/lib/Utils/sync-action-utils.d.ts.map +1 -0
  333. package/lib/Utils/sync-action-utils.js +49 -0
  334. package/lib/Utils/sync-action-utils.js.map +1 -0
  335. package/lib/Utils/tc-token-utils.d.ts +30 -0
  336. package/lib/Utils/tc-token-utils.d.ts.map +1 -0
  337. package/lib/Utils/tc-token-utils.js +164 -0
  338. package/lib/Utils/tc-token-utils.js.map +1 -0
  339. package/lib/Utils/use-multi-file-auth-state.d.ts +13 -0
  340. package/lib/Utils/use-multi-file-auth-state.d.ts.map +1 -0
  341. package/lib/Utils/use-multi-file-auth-state.js +196 -0
  342. package/lib/Utils/use-multi-file-auth-state.js.map +1 -0
  343. package/lib/Utils/use-single-file-auth-state.d.ts +11 -0
  344. package/lib/Utils/use-single-file-auth-state.d.ts.map +1 -0
  345. package/lib/Utils/use-single-file-auth-state.js +118 -0
  346. package/lib/Utils/use-single-file-auth-state.js.map +1 -0
  347. package/lib/Utils/use-sqlite-auth-state.d.ts +11 -0
  348. package/lib/Utils/use-sqlite-auth-state.d.ts.map +1 -0
  349. package/lib/Utils/use-sqlite-auth-state.js +109 -0
  350. package/lib/Utils/use-sqlite-auth-state.js.map +1 -0
  351. package/lib/Utils/validate-connection.d.ts +44 -0
  352. package/lib/Utils/validate-connection.d.ts.map +1 -0
  353. package/lib/Utils/validate-connection.js +210 -0
  354. package/lib/Utils/validate-connection.js.map +1 -0
  355. package/lib/Utils/worker-pool.js +73 -0
  356. package/lib/WABinary/constants.d.ts +62 -0
  357. package/lib/WABinary/constants.d.ts.map +1 -0
  358. package/lib/WABinary/constants.js +1467 -0
  359. package/lib/WABinary/constants.js.map +1 -0
  360. package/lib/WABinary/decode.d.ts +10 -0
  361. package/lib/WABinary/decode.d.ts.map +1 -0
  362. package/lib/WABinary/decode.js +262 -0
  363. package/lib/WABinary/decode.js.map +1 -0
  364. package/lib/WABinary/encode.d.ts +3 -0
  365. package/lib/WABinary/encode.d.ts.map +1 -0
  366. package/lib/WABinary/encode.js +220 -0
  367. package/lib/WABinary/encode.js.map +1 -0
  368. package/lib/WABinary/generic-utils.d.ts +77 -0
  369. package/lib/WABinary/generic-utils.d.ts.map +1 -0
  370. package/lib/WABinary/generic-utils.js +226 -0
  371. package/lib/WABinary/generic-utils.js.map +1 -0
  372. package/lib/WABinary/index.d.ts +6 -0
  373. package/lib/WABinary/index.d.ts.map +1 -0
  374. package/lib/WABinary/index.js +6 -0
  375. package/lib/WABinary/index.js.map +1 -0
  376. package/lib/WABinary/jid-utils.d.ts +29 -0
  377. package/lib/WABinary/jid-utils.d.ts.map +1 -0
  378. package/lib/WABinary/jid-utils.js +96 -0
  379. package/lib/WABinary/jid-utils.js.map +1 -0
  380. package/lib/WABinary/types.d.ts +6 -0
  381. package/lib/WABinary/types.d.ts.map +1 -0
  382. package/lib/WABinary/types.js +2 -0
  383. package/lib/WABinary/types.js.map +1 -0
  384. package/lib/WAM/BinaryInfo.d.ts +8 -0
  385. package/lib/WAM/BinaryInfo.d.ts.map +1 -0
  386. package/lib/WAM/BinaryInfo.js +10 -0
  387. package/lib/WAM/BinaryInfo.js.map +1 -0
  388. package/lib/WAM/constants.d.ts +34927 -0
  389. package/lib/WAM/constants.d.ts.map +1 -0
  390. package/lib/WAM/constants.js +22853 -0
  391. package/lib/WAM/constants.js.map +1 -0
  392. package/lib/WAM/encode.d.ts +2 -0
  393. package/lib/WAM/encode.d.ts.map +1 -0
  394. package/lib/WAM/encode.js +150 -0
  395. package/lib/WAM/encode.js.map +1 -0
  396. package/lib/WAM/index.d.ts +4 -0
  397. package/lib/WAM/index.d.ts.map +1 -0
  398. package/lib/WAM/index.js +4 -0
  399. package/lib/WAM/index.js.map +1 -0
  400. package/lib/WAUSync/Protocols/USyncBusinessProtocol.d.ts +8 -0
  401. package/lib/WAUSync/Protocols/USyncBusinessProtocol.js +99 -0
  402. package/lib/WAUSync/Protocols/USyncContactProtocol.d.ts +37 -0
  403. package/lib/WAUSync/Protocols/USyncContactProtocol.d.ts.map +1 -0
  404. package/lib/WAUSync/Protocols/USyncContactProtocol.js +53 -0
  405. package/lib/WAUSync/Protocols/USyncContactProtocol.js.map +1 -0
  406. package/lib/WAUSync/Protocols/USyncDeviceProtocol.d.ts +23 -0
  407. package/lib/WAUSync/Protocols/USyncDeviceProtocol.d.ts.map +1 -0
  408. package/lib/WAUSync/Protocols/USyncDeviceProtocol.js +54 -0
  409. package/lib/WAUSync/Protocols/USyncDeviceProtocol.js.map +1 -0
  410. package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.d.ts +13 -0
  411. package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.d.ts.map +1 -0
  412. package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.js +27 -0
  413. package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.js.map +1 -0
  414. package/lib/WAUSync/Protocols/USyncFeatureProtocol.d.ts +9 -0
  415. package/lib/WAUSync/Protocols/USyncFeatureProtocol.js +70 -0
  416. package/lib/WAUSync/Protocols/USyncPictureProtocol.d.ts +12 -0
  417. package/lib/WAUSync/Protocols/USyncPictureProtocol.js +28 -0
  418. package/lib/WAUSync/Protocols/USyncSidelistProtocol.d.ts +10 -0
  419. package/lib/WAUSync/Protocols/USyncSidelistProtocol.js +25 -0
  420. package/lib/WAUSync/Protocols/USyncStatusProtocol.d.ts +13 -0
  421. package/lib/WAUSync/Protocols/USyncStatusProtocol.d.ts.map +1 -0
  422. package/lib/WAUSync/Protocols/USyncStatusProtocol.js +38 -0
  423. package/lib/WAUSync/Protocols/USyncStatusProtocol.js.map +1 -0
  424. package/lib/WAUSync/Protocols/USyncTextStatusProtocol.d.ts +11 -0
  425. package/lib/WAUSync/Protocols/USyncTextStatusProtocol.js +34 -0
  426. package/lib/WAUSync/Protocols/USyncUsernameProtocol.d.ts +10 -0
  427. package/lib/WAUSync/Protocols/USyncUsernameProtocol.d.ts.map +1 -0
  428. package/lib/WAUSync/Protocols/USyncUsernameProtocol.js +31 -0
  429. package/lib/WAUSync/Protocols/USyncUsernameProtocol.js.map +1 -0
  430. package/lib/WAUSync/Protocols/UsyncBotProfileProtocol.d.ts +39 -0
  431. package/lib/WAUSync/Protocols/UsyncBotProfileProtocol.d.ts.map +1 -0
  432. package/lib/WAUSync/Protocols/UsyncBotProfileProtocol.js +51 -0
  433. package/lib/WAUSync/Protocols/UsyncBotProfileProtocol.js.map +1 -0
  434. package/lib/WAUSync/Protocols/UsyncLIDProtocol.d.ts +15 -0
  435. package/lib/WAUSync/Protocols/UsyncLIDProtocol.d.ts.map +1 -0
  436. package/lib/WAUSync/Protocols/UsyncLIDProtocol.js +29 -0
  437. package/lib/WAUSync/Protocols/UsyncLIDProtocol.js.map +1 -0
  438. package/lib/WAUSync/Protocols/index.d.ts +11 -0
  439. package/lib/WAUSync/Protocols/index.d.ts.map +1 -0
  440. package/lib/WAUSync/Protocols/index.js +11 -0
  441. package/lib/WAUSync/Protocols/index.js.map +1 -0
  442. package/lib/WAUSync/USyncQuery.d.ts +32 -0
  443. package/lib/WAUSync/USyncQuery.d.ts.map +1 -0
  444. package/lib/WAUSync/USyncQuery.js +185 -0
  445. package/lib/WAUSync/USyncQuery.js.map +1 -0
  446. package/lib/WAUSync/USyncUser.d.ts +25 -0
  447. package/lib/WAUSync/USyncUser.d.ts.map +1 -0
  448. package/lib/WAUSync/USyncUser.js +48 -0
  449. package/lib/WAUSync/USyncUser.js.map +1 -0
  450. package/lib/WAUSync/index.d.ts +4 -0
  451. package/lib/WAUSync/index.d.ts.map +1 -0
  452. package/lib/WAUSync/index.js +4 -0
  453. package/lib/WAUSync/index.js.map +1 -0
  454. package/lib/index.d.ts +12 -0
  455. package/lib/index.d.ts.map +1 -0
  456. package/lib/index.js +12 -0
  457. package/lib/index.js.map +1 -0
  458. package/package.json +122 -5
@@ -0,0 +1,448 @@
1
+
2
+ import { executeWMexQuery } from './mex.js';
3
+
4
+ /**
5
+ * MEX query IDs for privacy, status/profile, account/auth, and misc operations.
6
+ * Source: assets/whatsapp-android-mex_client_persist_ids.json
7
+ */
8
+ const PRIVACY_MEX_IDS = {
9
+ // Privacy settings
10
+ GET_SETTINGS: '32774292262215379', // GetPrivacySettingsQuery
11
+ SET_SETTING: '26887749497493182', // SetPrivacySettingMutation
12
+ UPDATE_CONTACT_LIST: '26375158178762799', // UpdatePrivacyContactListMutation
13
+ GET_CONTACT_LIST: '25700444246275822', // GetPrivacyContactListQuery
14
+ // Status / profile
15
+ UPDATE_TEXT_STATUS: '25863197129975892', // UpdateTextStatus
16
+ GET_TEXT_STATUS_LIST: '25741205615468935', // GetTextStatusList
17
+ UPDATE_USER_STATUS: '7452341274886724', // UpdateUserStatus
18
+ FETCH_USER_PICTURE: '24983561624604407', // FetchUserPictureInfo
19
+ PROFILE_PICTURE_MUTATION: '24714239711610700', // ProfilePictureMutation
20
+ // Account / auth
21
+ ACCOUNT_LOGIN: '27298465499757127', // AccountLoginMutation
22
+ ACCOUNT_LOGOUT: '26863447609979194', // AccountLogoutMutation
23
+ MULTI_ACCOUNT_REVOKE: '25846242091639661', // MultiAccountRevokeAccount
24
+ ADD_MULTI_ACCOUNT_LINK: '25502812266025193', // AddMultiAccountLink
25
+ ADD_TRUSTED_DEVICE: '24522952587403287', // AddTrustedDeviceMutation
26
+ GET_TRUSTED_DEVICES: '27391232653862770', // GetTrustedDevicesQuery
27
+ UNTRUST_TRUSTED_DEVICE: '26574930682133620', // UntrustTrustedDeviceMutation
28
+ DELETE_TRUSTED_DEVICE: '33867503889559538', // DeleteTrustedDeviceMutation
29
+ // Misc
30
+ MOBILE_CONFIG_FETCH: '25676911271914597', // MobileConfigFetchQuery
31
+ NOTIFY_PUSH_NAME: '25900490552974543', // NotifyPushName
32
+ CONTACT_INTEGRITY: '25924358997169495', // ContactIntegrityQuery
33
+ BIZ_INTEGRITY: '25975613018777537', // BizIntegrityQuery
34
+ LINKED_PROFILES_SET: '25013968611531010', // LinkedProfilesSet
35
+ LINKED_PROFILES_REMOVE: '24537675509265525', // LinkedProfilesRemove
36
+ LINKED_PROFILES_UPDATE: '24876967165297614', // LinkedProfilesUpdate
37
+ MIGRATE_BLOCKLIST_LID: '25028600226770432', // MigrateBlocklistLid
38
+ QR_CODE_SCAN: '26287165600869744' // QRCodeScan
39
+ }
40
+
41
+ export const makePrivacySocket = sock => {
42
+ const { query, generateMessageTag } = sock
43
+
44
+ const mexQuery = (variables, queryId, dataPath) =>
45
+ executeWMexQuery(variables, queryId, dataPath, query, generateMessageTag)
46
+
47
+ // ── Privacy Settings ────────────────────────────────────────────────────
48
+
49
+ /**
50
+ * Fetch all privacy settings via MEX.
51
+ * Confirmed from C24395AkT.java — variables: { users: [{ jid, privacy_features: [...] }] }
52
+ * dataPath: xwa2_fetch_wa_users (array of users, each with privacy_settings[])
53
+ *
54
+ * @param {string} jid - Own JID
55
+ * @param {string[]} [features] - Privacy features to fetch (default: all known)
56
+ */
57
+ const getPrivacySettings = (jid, features = null) => {
58
+ const users = [{ jid, ...(features ? { privacy_features: features } : {}) }]
59
+ return mexQuery({ users }, PRIVACY_MEX_IDS.GET_SETTINGS, 'xwa2_fetch_wa_users')
60
+ }
61
+
62
+ /**
63
+ * Set a privacy setting via MEX.
64
+ * Confirmed from C24403Akb.java — variables: { feature, setting }
65
+ * dataPath: xwa2_privacy_feature_update
66
+ *
67
+ * Values are lowercase and case-sensitive on the wire (confirmed 2026-07-19 against
68
+ * WASmaxInPrivacyEnums / WAWebPrivacySettings) — NOT the uppercase values this doc used to list.
69
+ *
70
+ * Known features: "last" (last seen), "online", "profile" (photo), "status", "readreceipts",
71
+ * "groupadd" (who can add you to groups), "groupcreation", "calladd",
72
+ * "defense" (anti-scraping), "messages", "linked_profiles", "cover_photo",
73
+ * "dependentaccountmessages", "pix", "stickers"
74
+ * (the last 6 are business-account-only)
75
+ * Known settings: "all", "contacts", "contact_blacklist", "none" — most features.
76
+ * "online" only accepts "all" | "match_last_seen".
77
+ * "calladd" only accepts "all" | "contacts" | "known".
78
+ * "defense" only accepts "off" | "on_standard".
79
+ *
80
+ * @param {string} feature - Privacy feature name
81
+ * @param {string} setting - New value
82
+ */
83
+ const setPrivacySetting = (feature, setting) =>
84
+ mexQuery({ feature, setting }, PRIVACY_MEX_IDS.SET_SETTING, 'xwa2_privacy_feature_update')
85
+
86
+ /**
87
+ * Update the contact list for a privacy setting (e.g. "GROUPS" with CONTACT_BLACKLIST).
88
+ * Confirmed from InteropPrivacySettingWithContactListUpdate pattern.
89
+ * dataPath: xwa2_privacy_contact_list_update
90
+ *
91
+ * @param {string} feature - Privacy feature
92
+ * @param {string} setting - "CONTACT_BLACKLIST" | "CONTACTS"
93
+ * @param {string[]} jids - List of JIDs to include in the list
94
+ */
95
+ const updatePrivacyContactList = (feature, setting, jids) =>
96
+ mexQuery(
97
+ { feature, setting, contacts: jids.map(jid => ({ jid })) },
98
+ PRIVACY_MEX_IDS.UPDATE_CONTACT_LIST,
99
+ 'xwa2_privacy_contact_list_update'
100
+ )
101
+
102
+ /**
103
+ * Fetch the contact list for a privacy setting.
104
+ * dataPath: xwa2_privacy_contact_list
105
+ *
106
+ * @param {string} feature - Privacy feature
107
+ * @param {string} setting - "CONTACT_BLACKLIST" | "CONTACTS"
108
+ */
109
+ const getPrivacyContactList = (feature, setting) =>
110
+ mexQuery({ feature, setting }, PRIVACY_MEX_IDS.GET_CONTACT_LIST, 'xwa2_privacy_contact_list')
111
+
112
+ // ── Status / Profile ───────────────────────────────────────────────────
113
+
114
+ /**
115
+ * Update own text status (About/Evolved About) via MEX.
116
+ * Confirmed from C227219wi.java:
117
+ * text_status_input: { text, emoji: { content } }
118
+ * dataPath: xwa2_text_status_update
119
+ *
120
+ * @param {string} text - Status text
121
+ * @param {string} [emoji] - Optional emoji to attach
122
+ */
123
+ const updateTextStatus = (text, emoji = null) => {
124
+ const input = { text }
125
+ if (emoji) input.emoji = { content: emoji }
126
+ return mexQuery({ text_status_input: input }, PRIVACY_MEX_IDS.UPDATE_TEXT_STATUS, 'xwa2_text_status_update')
127
+ }
128
+
129
+ /**
130
+ * Fetch text statuses (About) for a list of JIDs via MEX.
131
+ * Confirmed from C227219wi.java:
132
+ * input: [{ jid, last_update_time: null }]
133
+ * dataPath: xwa2_text_status_list
134
+ *
135
+ * @param {string[]} jids - JIDs to fetch statuses for
136
+ * @param {number|null} [lastUpdateTime] - Only return statuses newer than this timestamp
137
+ */
138
+ const getTextStatusList = (jids, lastUpdateTime = null) => {
139
+ const input = jids.map(jid => ({ jid, last_update_time: lastUpdateTime }))
140
+ return mexQuery({ input }, PRIVACY_MEX_IDS.GET_TEXT_STATUS_LIST, 'xwa2_text_status_list')
141
+ }
142
+
143
+ /**
144
+ * Update own user status string via MEX.
145
+ * Confirmed from UpdateUserStatus mutation — variables: { status }
146
+ * dataPath: xwa2_update_user_status
147
+ *
148
+ * @param {string} status - New status string
149
+ */
150
+ const updateUserStatus = status => mexQuery({ status }, PRIVACY_MEX_IDS.UPDATE_USER_STATUS, 'xwa2_update_user_status')
151
+
152
+ /**
153
+ * Fetch picture info for a user via MEX.
154
+ * dataPath: xwa2_fetch_user_picture_info
155
+ *
156
+ * @param {string} jid - JID to fetch picture info for
157
+ */
158
+ const fetchUserPictureInfo = jid =>
159
+ mexQuery({ jid }, PRIVACY_MEX_IDS.FETCH_USER_PICTURE, 'xwa2_fetch_user_picture_info')
160
+
161
+ /**
162
+ * Set own profile picture via MEX.
163
+ * dataPath: xwa2_profile_picture_mutation
164
+ *
165
+ * @param {string} imageBase64 - Base64-encoded image data
166
+ * @param {'image'|'preview'} [type='image'] - Picture type
167
+ */
168
+ const setProfilePictureMex = (imageBase64, type = 'image') =>
169
+ mexQuery(
170
+ { input: { image: imageBase64, type } },
171
+ PRIVACY_MEX_IDS.PROFILE_PICTURE_MUTATION,
172
+ 'xwa2_profile_picture_mutation'
173
+ )
174
+
175
+ // ── Account / Auth ─────────────────────────────────────────────────────
176
+
177
+ /**
178
+ * Mark account as logged-in via MEX (companion device registration flow).
179
+ * Confirmed from LogoutManager.java:
180
+ * input: { phone_number }
181
+ * dataPath: xwa2_account_login
182
+ *
183
+ * @param {string} phoneNumber - Phone number (raw, e.g. "491234567890")
184
+ */
185
+ const accountLogin = phoneNumber =>
186
+ mexQuery({ input: { phone_number: phoneNumber } }, PRIVACY_MEX_IDS.ACCOUNT_LOGIN, 'xwa2_account_login')
187
+
188
+ /**
189
+ * Mark account as logged-out via MEX.
190
+ * Confirmed from LogoutManager.java:
191
+ * input: { phone_number, enabled_biometric }
192
+ * dataPath: xwa2_account_logout
193
+ *
194
+ * @param {string} phoneNumber - Phone number
195
+ * @param {boolean} [enabledBiometric=false]
196
+ */
197
+ const accountLogout = (phoneNumber, enabledBiometric = false) =>
198
+ mexQuery(
199
+ { input: { phone_number: phoneNumber, enabled_biometric: enabledBiometric } },
200
+ PRIVACY_MEX_IDS.ACCOUNT_LOGOUT,
201
+ 'xwa2_account_logout'
202
+ )
203
+
204
+ /**
205
+ * Add a multi-account link (secondary account) via MEX.
206
+ * Confirmed from AddMultiAccountLink mutation:
207
+ * input: { phone_number }
208
+ * dataPath: xwa2_add_multi_account_link
209
+ *
210
+ * @param {string} phoneNumber - Phone number of account to link
211
+ */
212
+ const addMultiAccountLink = phoneNumber =>
213
+ mexQuery(
214
+ { input: { phone_number: phoneNumber } },
215
+ PRIVACY_MEX_IDS.ADD_MULTI_ACCOUNT_LINK,
216
+ 'xwa2_add_multi_account_link'
217
+ )
218
+
219
+ /**
220
+ * Add a trusted device (biometric/passkey) via MEX.
221
+ * Confirmed from RegTrustedDeviceGraphQLHelper.java:
222
+ * device_id, device_name
223
+ * dataPath: xwa2_add_trusted_device
224
+ *
225
+ * @param {string} deviceId - Device ID suffix
226
+ * @param {string} deviceName - Human-readable device name
227
+ */
228
+ const addTrustedDevice = (deviceId, deviceName) =>
229
+ mexQuery(
230
+ { device_id: deviceId, device_name: deviceName },
231
+ PRIVACY_MEX_IDS.ADD_TRUSTED_DEVICE,
232
+ 'xwa2_add_trusted_device'
233
+ )
234
+
235
+ /**
236
+ * Fetch list of trusted devices for the account via MEX.
237
+ * dataPath: xwa2_get_trusted_devices
238
+ */
239
+ const getTrustedDevices = () => mexQuery({}, PRIVACY_MEX_IDS.GET_TRUSTED_DEVICES, 'xwa2_get_trusted_devices')
240
+
241
+ /**
242
+ * Untrust (remove) a trusted device via MEX.
243
+ * Confirmed from RegTrustedDeviceGraphQLHelper.java:
244
+ * device_id, reason (default: "REREG")
245
+ * dataPath: xwa2_untrust_trusted_device
246
+ *
247
+ * @param {string} deviceId - Device ID to remove
248
+ * @param {string} [reason='USER_INITIATED']
249
+ */
250
+ const untrustTrustedDevice = (deviceId, reason = 'USER_INITIATED') =>
251
+ mexQuery({ device_id: deviceId, reason }, PRIVACY_MEX_IDS.UNTRUST_TRUSTED_DEVICE, 'xwa2_untrust_trusted_device')
252
+
253
+ /**
254
+ * Delete a trusted device entirely via MEX.
255
+ * dataPath: xwa2_delete_trusted_device
256
+ *
257
+ * @param {string} deviceId - Device ID to delete
258
+ */
259
+ const deleteTrustedDevice = deviceId =>
260
+ mexQuery({ device_id: deviceId }, PRIVACY_MEX_IDS.DELETE_TRUSTED_DEVICE, 'xwa2_delete_trusted_device')
261
+
262
+ /**
263
+ * Revoke multi-account link for a secondary account via MEX.
264
+ * dataPath: xwa2_multi_account_revoke
265
+ *
266
+ * @param {string} accountJid - JID of the account to revoke
267
+ */
268
+ const revokeMultiAccount = accountJid =>
269
+ mexQuery({ account_jid: accountJid }, PRIVACY_MEX_IDS.MULTI_ACCOUNT_REVOKE, 'xwa2_multi_account_revoke')
270
+
271
+ // ── Misc ───────────────────────────────────────────────────────────────
272
+
273
+ /**
274
+ * Fetch mobile config via MEX.
275
+ * Confirmed from C28889Clt.java:
276
+ * api_version, ep_refresh_id, flags
277
+ * dataPath: xwa2_mobile_config_fetch
278
+ *
279
+ * @param {number} [apiVersion=0]
280
+ * @param {number} [epRefreshId=0]
281
+ * @param {string} [flags='']
282
+ */
283
+ const fetchMobileConfig = (apiVersion = 0, epRefreshId = 0, flags = '') =>
284
+ mexQuery(
285
+ { api_version: apiVersion, ep_refresh_id: epRefreshId, flags },
286
+ PRIVACY_MEX_IDS.MOBILE_CONFIG_FETCH,
287
+ 'xwa2_mobile_config_fetch'
288
+ )
289
+
290
+ /**
291
+ * Notify group members of your push name via MEX.
292
+ * Confirmed from C128275fj.java:
293
+ * input: { group_jid, participants: [{ jid, push_name }] }
294
+ * dataPath: xwa2_notify_push_name
295
+ *
296
+ * @param {string} groupJid - Group JID
297
+ * @param {{ jid: string, pushName: string }[]} participants
298
+ */
299
+ const notifyPushName = (groupJid, participants) =>
300
+ mexQuery(
301
+ {
302
+ input: {
303
+ group_jid: groupJid,
304
+ participants: participants.map(({ jid, pushName }) => ({ jid, push_name: pushName }))
305
+ }
306
+ },
307
+ PRIVACY_MEX_IDS.NOTIFY_PUSH_NAME,
308
+ 'xwa2_notify_push_name'
309
+ )
310
+
311
+ /**
312
+ * Run a contact integrity check via MEX.
313
+ * Confirmed from RunnableC24106Aep.java — uses xwa2_fetch_wa_users path.
314
+ * use_case: "START_CHAT_CONTEXT"
315
+ *
316
+ * @param {string[]} jids - JIDs to check
317
+ * @param {string} [useCase='START_CHAT_CONTEXT']
318
+ */
319
+ const contactIntegrityQuery = (jids, useCase = 'START_CHAT_CONTEXT') =>
320
+ mexQuery(
321
+ { users: jids.map(jid => ({ jid })), use_case: useCase },
322
+ PRIVACY_MEX_IDS.CONTACT_INTEGRITY,
323
+ 'xwa2_fetch_wa_users'
324
+ )
325
+
326
+ /**
327
+ * Run a business integrity check via MEX.
328
+ * Confirmed from BizIntegrityQuery — variables: { users: [{ jid }] }
329
+ * dataPath: xwa2_fetch_wa_users
330
+ *
331
+ * @param {string[]} jids - Business JIDs to check
332
+ */
333
+ const bizIntegrityQuery = jids =>
334
+ mexQuery({ users: jids.map(jid => ({ jid })) }, PRIVACY_MEX_IDS.BIZ_INTEGRITY, 'xwa2_fetch_wa_users')
335
+
336
+ /**
337
+ * Set linked social profiles (FB/IG) via MEX.
338
+ * Confirmed from C24386Ak3.java:
339
+ * profiles: [{ type: "FB"|"IG", username|vid, encrypted_metadata?, user_info? }]
340
+ * dataPath: xwa2_linked_profiles_set
341
+ *
342
+ * @param {{ type: 'FB'|'IG', username?: string, vid?: string }[]} profiles
343
+ */
344
+ const linkedProfilesSet = profiles => {
345
+ const mapped = profiles.map(p => {
346
+ const entry = { type: p.type }
347
+ if (p.vid) entry.vid = p.vid
348
+ else if (p.username) entry.username = p.username
349
+ return entry
350
+ })
351
+ return mexQuery({ profiles: mapped }, PRIVACY_MEX_IDS.LINKED_PROFILES_SET, 'xwa2_linked_profiles_set')
352
+ }
353
+
354
+ /**
355
+ * Remove linked social profiles via MEX.
356
+ * dataPath: xwa2_linked_profiles_remove
357
+ *
358
+ * @param {('FB'|'IG')[]} types - Profile types to remove
359
+ */
360
+ const linkedProfilesRemove = types =>
361
+ mexQuery(
362
+ { profiles: types.map(type => ({ type })) },
363
+ PRIVACY_MEX_IDS.LINKED_PROFILES_REMOVE,
364
+ 'xwa2_linked_profiles_remove'
365
+ )
366
+
367
+ /**
368
+ * Update linked social profile visibility/settings via MEX.
369
+ * Confirmed from LinkedProfilesUpdate mutation:
370
+ * profiles: [{ type, show_on_profile }]
371
+ * dataPath: xwa2_linked_profiles_update
372
+ *
373
+ * @param {{ type: 'FB'|'IG', showOnProfile: boolean }[]} profiles
374
+ */
375
+ const linkedProfilesUpdate = profiles =>
376
+ mexQuery(
377
+ { profiles: profiles.map(({ type, showOnProfile }) => ({ type, show_on_profile: showOnProfile })) },
378
+ PRIVACY_MEX_IDS.LINKED_PROFILES_UPDATE,
379
+ 'xwa2_linked_profiles_update'
380
+ )
381
+
382
+ /**
383
+ * Migrate blocklist to LID addressing via MEX.
384
+ * Confirmed from C8Eu.java:
385
+ * input: { blocklist: [{ jid }], dhash, dirty_ack }
386
+ * dataPath: xwa2_migrate_blocklist_lid
387
+ *
388
+ * @param {string[]} jids - Blocked JIDs to migrate
389
+ * @param {string} [dhash=''] - Current blocklist hash
390
+ * @param {boolean} [dirtyAck=true]
391
+ */
392
+ const migrateBlocklistLid = (jids, dhash = '', dirtyAck = true) =>
393
+ mexQuery(
394
+ {
395
+ input: {
396
+ blocklist: jids.map(jid => ({ jid })),
397
+ dhash,
398
+ dirty_ack: dirtyAck
399
+ }
400
+ },
401
+ PRIVACY_MEX_IDS.MIGRATE_BLOCKLIST_LID,
402
+ 'xwa2_migrate_blocklist_lid'
403
+ )
404
+
405
+ /**
406
+ * Scan a QR code via MEX (used for linking companion devices).
407
+ * dataPath: xwa2_qr_code_scan
408
+ *
409
+ * @param {string} qrData - Raw QR code data string
410
+ */
411
+ const qrCodeScan = qrData => mexQuery({ qr_data: qrData }, PRIVACY_MEX_IDS.QR_CODE_SCAN, 'xwa2_qr_code_scan')
412
+
413
+ return {
414
+ ...sock,
415
+ // Privacy
416
+ getPrivacySettings,
417
+ setPrivacySetting,
418
+ updatePrivacyContactList,
419
+ getPrivacyContactList,
420
+ // Status / profile
421
+ updateTextStatus,
422
+ getTextStatusList,
423
+ updateUserStatus,
424
+ fetchUserPictureInfo,
425
+ setProfilePictureMex,
426
+ // Account / auth
427
+ accountLogin,
428
+ accountLogout,
429
+ addMultiAccountLink,
430
+ addTrustedDevice,
431
+ getTrustedDevices,
432
+ untrustTrustedDevice,
433
+ deleteTrustedDevice,
434
+ revokeMultiAccount,
435
+ // Misc
436
+ fetchMobileConfig,
437
+ notifyPushName,
438
+ contactIntegrityQuery,
439
+ bizIntegrityQuery,
440
+ linkedProfilesSet,
441
+ linkedProfilesRemove,
442
+ linkedProfilesUpdate,
443
+ migrateBlocklistLid,
444
+ qrCodeScan,
445
+ PRIVACY_MEX_IDS
446
+ }
447
+ }
448
+