@sixcore/baileys 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 (278) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +606 -0
  3. package/WAProto/GenerateStatics.sh +4 -0
  4. package/WAProto/WAProto.proto +4357 -0
  5. package/WAProto/index.d.ts +50383 -0
  6. package/WAProto/index.js +155693 -0
  7. package/WASignalGroup/GroupProtocol.js +1697 -0
  8. package/WASignalGroup/ciphertext_message.js +16 -0
  9. package/WASignalGroup/generate-proto.sh +1 -0
  10. package/WASignalGroup/group.proto +42 -0
  11. package/WASignalGroup/group_cipher.js +120 -0
  12. package/WASignalGroup/group_session_builder.js +46 -0
  13. package/WASignalGroup/index.js +5 -0
  14. package/WASignalGroup/keyhelper.js +21 -0
  15. package/WASignalGroup/protobufs.js +3 -0
  16. package/WASignalGroup/queue_job.js +69 -0
  17. package/WASignalGroup/sender_chain_key.js +50 -0
  18. package/WASignalGroup/sender_key_distribution_message.js +78 -0
  19. package/WASignalGroup/sender_key_message.js +92 -0
  20. package/WASignalGroup/sender_key_name.js +70 -0
  21. package/WASignalGroup/sender_key_record.js +56 -0
  22. package/WASignalGroup/sender_key_state.js +129 -0
  23. package/WASignalGroup/sender_message_key.js +39 -0
  24. package/lib/Defaults/baileys-version.json +3 -0
  25. package/lib/Defaults/index.d.ts +53 -0
  26. package/lib/Defaults/index.js +108 -0
  27. package/lib/Signal/libsignal.d.ts +3 -0
  28. package/lib/Signal/libsignal.js +152 -0
  29. package/lib/Socket/Client/abstract-socket-client.d.ts +17 -0
  30. package/lib/Socket/Client/abstract-socket-client.js +13 -0
  31. package/lib/Socket/Client/index.d.ts +3 -0
  32. package/lib/Socket/Client/index.js +19 -0
  33. package/lib/Socket/Client/mobile-socket-client.d.ts +13 -0
  34. package/lib/Socket/Client/mobile-socket-client.js +65 -0
  35. package/lib/Socket/Client/web-socket-client.d.ts +12 -0
  36. package/lib/Socket/Client/web-socket-client.js +62 -0
  37. package/lib/Socket/business.d.ts +170 -0
  38. package/lib/Socket/business.js +260 -0
  39. package/lib/Socket/chats.d.ts +81 -0
  40. package/lib/Socket/chats.js +950 -0
  41. package/lib/Socket/groups.d.ts +115 -0
  42. package/lib/Socket/groups.js +315 -0
  43. package/lib/Socket/index.d.ts +172 -0
  44. package/lib/Socket/index.js +10 -0
  45. package/lib/Socket/messages-recv.d.ts +158 -0
  46. package/lib/Socket/messages-recv.js +972 -0
  47. package/lib/Socket/messages-send.d.ts +155 -0
  48. package/lib/Socket/messages-send.js +1087 -0
  49. package/lib/Socket/newsletter.d.ts +132 -0
  50. package/lib/Socket/newsletter.js +236 -0
  51. package/lib/Socket/registration.d.ts +264 -0
  52. package/lib/Socket/registration.js +166 -0
  53. package/lib/Socket/socket.d.ts +44 -0
  54. package/lib/Socket/socket.js +643 -0
  55. package/lib/Socket/usync.d.ts +37 -0
  56. package/lib/Socket/usync.js +70 -0
  57. package/lib/Store/index.d.ts +3 -0
  58. package/lib/Store/index.js +10 -0
  59. package/lib/Store/make-cache-manager-store.d.ts +14 -0
  60. package/lib/Store/make-cache-manager-store.js +83 -0
  61. package/lib/Store/make-in-memory-store.d.ts +118 -0
  62. package/lib/Store/make-in-memory-store.js +431 -0
  63. package/lib/Store/make-ordered-dictionary.d.ts +13 -0
  64. package/lib/Store/make-ordered-dictionary.js +81 -0
  65. package/lib/Store/object-repository.d.ts +10 -0
  66. package/lib/Store/object-repository.js +27 -0
  67. package/lib/Types/Auth.d.ts +109 -0
  68. package/lib/Types/Auth.js +2 -0
  69. package/lib/Types/Call.d.ts +13 -0
  70. package/lib/Types/Call.js +2 -0
  71. package/lib/Types/Chat.d.ts +107 -0
  72. package/lib/Types/Chat.js +4 -0
  73. package/lib/Types/Contact.d.ts +19 -0
  74. package/lib/Types/Contact.js +2 -0
  75. package/lib/Types/Events.d.ts +172 -0
  76. package/lib/Types/Events.js +2 -0
  77. package/lib/Types/GroupMetadata.d.ts +56 -0
  78. package/lib/Types/GroupMetadata.js +2 -0
  79. package/lib/Types/Label.d.ts +46 -0
  80. package/lib/Types/Label.js +27 -0
  81. package/lib/Types/LabelAssociation.d.ts +29 -0
  82. package/lib/Types/LabelAssociation.js +9 -0
  83. package/lib/Types/Message.d.ts +433 -0
  84. package/lib/Types/Message.js +9 -0
  85. package/lib/Types/Newsletter.d.ts +92 -0
  86. package/lib/Types/Newsletter.js +32 -0
  87. package/lib/Types/Product.d.ts +78 -0
  88. package/lib/Types/Product.js +2 -0
  89. package/lib/Types/Signal.d.ts +57 -0
  90. package/lib/Types/Signal.js +2 -0
  91. package/lib/Types/Socket.d.ts +116 -0
  92. package/lib/Types/Socket.js +2 -0
  93. package/lib/Types/State.d.ts +27 -0
  94. package/lib/Types/State.js +2 -0
  95. package/lib/Types/USync.d.ts +25 -0
  96. package/lib/Types/USync.js +2 -0
  97. package/lib/Types/index.d.ts +66 -0
  98. package/lib/Types/index.js +42 -0
  99. package/lib/Utils/auth-utils.d.ts +18 -0
  100. package/lib/Utils/auth-utils.js +227 -0
  101. package/lib/Utils/baileys-event-stream.d.ts +16 -0
  102. package/lib/Utils/baileys-event-stream.js +63 -0
  103. package/lib/Utils/business.d.ts +22 -0
  104. package/lib/Utils/business.js +234 -0
  105. package/lib/Utils/chat-utils.d.ts +70 -0
  106. package/lib/Utils/chat-utils.js +745 -0
  107. package/lib/Utils/crypto.d.ts +40 -0
  108. package/lib/Utils/crypto.js +199 -0
  109. package/lib/Utils/decode-wa-message.d.ts +36 -0
  110. package/lib/Utils/decode-wa-message.js +234 -0
  111. package/lib/Utils/event-buffer.d.ts +35 -0
  112. package/lib/Utils/event-buffer.js +517 -0
  113. package/lib/Utils/generics.d.ts +88 -0
  114. package/lib/Utils/generics.js +402 -0
  115. package/lib/Utils/history.d.ts +19 -0
  116. package/lib/Utils/history.js +94 -0
  117. package/lib/Utils/index.d.ts +17 -0
  118. package/lib/Utils/index.js +33 -0
  119. package/lib/Utils/link-preview.d.ts +21 -0
  120. package/lib/Utils/link-preview.js +93 -0
  121. package/lib/Utils/logger.d.ts +2 -0
  122. package/lib/Utils/logger.js +7 -0
  123. package/lib/Utils/lt-hash.d.ts +12 -0
  124. package/lib/Utils/lt-hash.js +51 -0
  125. package/lib/Utils/make-mutex.d.ts +7 -0
  126. package/lib/Utils/make-mutex.js +43 -0
  127. package/lib/Utils/messages-media.d.ts +113 -0
  128. package/lib/Utils/messages-media.js +643 -0
  129. package/lib/Utils/messages.d.ts +77 -0
  130. package/lib/Utils/messages.js +1221 -0
  131. package/lib/Utils/noise-handler.d.ts +20 -0
  132. package/lib/Utils/noise-handler.js +160 -0
  133. package/lib/Utils/process-message.d.ts +41 -0
  134. package/lib/Utils/process-message.js +373 -0
  135. package/lib/Utils/signal.d.ts +33 -0
  136. package/lib/Utils/signal.js +159 -0
  137. package/lib/Utils/use-multi-file-auth-state.d.ts +12 -0
  138. package/lib/Utils/use-multi-file-auth-state.js +295 -0
  139. package/lib/Utils/use-single-file-auth-state.d.ts +12 -0
  140. package/lib/Utils/use-single-file-auth-state.js +75 -0
  141. package/lib/Utils/validate-connection.d.ts +11 -0
  142. package/lib/Utils/validate-connection.js +205 -0
  143. package/lib/WABinary/constants.d.ts +27 -0
  144. package/lib/WABinary/constants.js +40 -0
  145. package/lib/WABinary/decode.d.ts +6 -0
  146. package/lib/WABinary/decode.js +264 -0
  147. package/lib/WABinary/encode.d.ts +2 -0
  148. package/lib/WABinary/encode.js +252 -0
  149. package/lib/WABinary/generic-utils.d.ts +14 -0
  150. package/lib/WABinary/generic-utils.js +110 -0
  151. package/lib/WABinary/index.d.ts +5 -0
  152. package/lib/WABinary/index.js +21 -0
  153. package/lib/WABinary/jid-utils.d.ts +31 -0
  154. package/lib/WABinary/jid-utils.js +62 -0
  155. package/lib/WABinary/types.d.ts +18 -0
  156. package/lib/WABinary/types.js +2 -0
  157. package/lib/WAM/BinaryInfo.d.ts +8 -0
  158. package/lib/WAM/BinaryInfo.js +13 -0
  159. package/lib/WAM/constants.d.ts +38 -0
  160. package/lib/WAM/constants.js +15350 -0
  161. package/lib/WAM/encode.d.ts +2 -0
  162. package/lib/WAM/encode.js +155 -0
  163. package/lib/WAM/index.d.ts +3 -0
  164. package/lib/WAM/index.js +19 -0
  165. package/lib/WAUSync/Protocols/USyncContactProtocol.d.ts +9 -0
  166. package/lib/WAUSync/Protocols/USyncContactProtocol.js +32 -0
  167. package/lib/WAUSync/Protocols/USyncDeviceProtocol.d.ts +22 -0
  168. package/lib/WAUSync/Protocols/USyncDeviceProtocol.js +57 -0
  169. package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.d.ts +12 -0
  170. package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.js +30 -0
  171. package/lib/WAUSync/Protocols/USyncStatusProtocol.d.ts +12 -0
  172. package/lib/WAUSync/Protocols/USyncStatusProtocol.js +42 -0
  173. package/lib/WAUSync/Protocols/UsyncBotProfileProtocol.d.ts +25 -0
  174. package/lib/WAUSync/Protocols/UsyncBotProfileProtocol.js +53 -0
  175. package/lib/WAUSync/Protocols/UsyncLIDProtocol.d.ts +8 -0
  176. package/lib/WAUSync/Protocols/UsyncLIDProtocol.js +24 -0
  177. package/lib/WAUSync/Protocols/index.d.ts +4 -0
  178. package/lib/WAUSync/Protocols/index.js +20 -0
  179. package/lib/WAUSync/USyncQuery.d.ts +28 -0
  180. package/lib/WAUSync/USyncQuery.js +89 -0
  181. package/lib/WAUSync/USyncUser.d.ts +10 -0
  182. package/lib/WAUSync/USyncUser.js +26 -0
  183. package/lib/WAUSync/index.d.ts +3 -0
  184. package/lib/WAUSync/index.js +19 -0
  185. package/lib/index.js +31 -0
  186. package/package.json +51 -0
  187. package/src/Defaults/baileys-version.json +3 -0
  188. package/src/Defaults/index.ts +133 -0
  189. package/src/Signal/Group/ciphertext-message.ts +9 -0
  190. package/src/Signal/Group/group-session-builder.ts +56 -0
  191. package/src/Signal/Group/group_cipher.ts +117 -0
  192. package/src/Signal/Group/index.ts +11 -0
  193. package/src/Signal/Group/keyhelper.ts +28 -0
  194. package/src/Signal/Group/sender-chain-key.ts +34 -0
  195. package/src/Signal/Group/sender-key-distribution-message.ts +95 -0
  196. package/src/Signal/Group/sender-key-message.ts +96 -0
  197. package/src/Signal/Group/sender-key-name.ts +66 -0
  198. package/src/Signal/Group/sender-key-record.ts +69 -0
  199. package/src/Signal/Group/sender-key-state.ts +134 -0
  200. package/src/Signal/Group/sender-message-key.ts +36 -0
  201. package/src/Signal/libsignal.ts +447 -0
  202. package/src/Signal/lid-mapping.ts +209 -0
  203. package/src/Socket/Client/index.ts +2 -0
  204. package/src/Socket/Client/types.ts +22 -0
  205. package/src/Socket/Client/websocket.ts +56 -0
  206. package/src/Socket/business.ts +421 -0
  207. package/src/Socket/chats.ts +1223 -0
  208. package/src/Socket/communities.ts +477 -0
  209. package/src/Socket/groups.ts +361 -0
  210. package/src/Socket/index.ts +22 -0
  211. package/src/Socket/messages-recv.ts +1563 -0
  212. package/src/Socket/messages-send.ts +1210 -0
  213. package/src/Socket/mex.ts +58 -0
  214. package/src/Socket/newsletter.ts +229 -0
  215. package/src/Socket/socket.ts +1072 -0
  216. package/src/Types/Auth.ts +115 -0
  217. package/src/Types/Bussines.ts +20 -0
  218. package/src/Types/Call.ts +14 -0
  219. package/src/Types/Chat.ts +138 -0
  220. package/src/Types/Contact.ts +24 -0
  221. package/src/Types/Events.ts +132 -0
  222. package/src/Types/GroupMetadata.ts +70 -0
  223. package/src/Types/Label.ts +48 -0
  224. package/src/Types/LabelAssociation.ts +35 -0
  225. package/src/Types/Message.ts +424 -0
  226. package/src/Types/Newsletter.ts +98 -0
  227. package/src/Types/Product.ts +85 -0
  228. package/src/Types/Signal.ts +76 -0
  229. package/src/Types/Socket.ts +150 -0
  230. package/src/Types/State.ts +43 -0
  231. package/src/Types/USync.ts +27 -0
  232. package/src/Types/globals.d.ts +8 -0
  233. package/src/Types/index.ts +67 -0
  234. package/src/Utils/auth-utils.ts +331 -0
  235. package/src/Utils/browser-utils.ts +31 -0
  236. package/src/Utils/business.ts +286 -0
  237. package/src/Utils/chat-utils.ts +933 -0
  238. package/src/Utils/crypto.ts +184 -0
  239. package/src/Utils/decode-wa-message.ts +355 -0
  240. package/src/Utils/event-buffer.ts +662 -0
  241. package/src/Utils/generics.ts +470 -0
  242. package/src/Utils/history.ts +114 -0
  243. package/src/Utils/index.ts +18 -0
  244. package/src/Utils/link-preview.ts +111 -0
  245. package/src/Utils/logger.ts +13 -0
  246. package/src/Utils/lt-hash.ts +65 -0
  247. package/src/Utils/make-mutex.ts +45 -0
  248. package/src/Utils/message-retry-manager.ts +229 -0
  249. package/src/Utils/messages-media.ts +820 -0
  250. package/src/Utils/messages.ts +1137 -0
  251. package/src/Utils/noise-handler.ts +192 -0
  252. package/src/Utils/pre-key-manager.ts +126 -0
  253. package/src/Utils/process-message.ts +622 -0
  254. package/src/Utils/signal.ts +214 -0
  255. package/src/Utils/use-multi-file-auth-state.ts +136 -0
  256. package/src/Utils/validate-connection.ts +253 -0
  257. package/src/WABinary/constants.ts +1305 -0
  258. package/src/WABinary/decode.ts +281 -0
  259. package/src/WABinary/encode.ts +253 -0
  260. package/src/WABinary/generic-utils.ts +127 -0
  261. package/src/WABinary/index.ts +5 -0
  262. package/src/WABinary/jid-utils.ts +128 -0
  263. package/src/WABinary/types.ts +17 -0
  264. package/src/WAM/BinaryInfo.ts +12 -0
  265. package/src/WAM/constants.ts +22889 -0
  266. package/src/WAM/encode.ts +169 -0
  267. package/src/WAM/index.ts +3 -0
  268. package/src/WAUSync/Protocols/USyncContactProtocol.ts +32 -0
  269. package/src/WAUSync/Protocols/USyncDeviceProtocol.ts +78 -0
  270. package/src/WAUSync/Protocols/USyncDisappearingModeProtocol.ts +35 -0
  271. package/src/WAUSync/Protocols/USyncStatusProtocol.ts +44 -0
  272. package/src/WAUSync/Protocols/UsyncBotProfileProtocol.ts +76 -0
  273. package/src/WAUSync/Protocols/UsyncLIDProtocol.ts +33 -0
  274. package/src/WAUSync/Protocols/index.ts +4 -0
  275. package/src/WAUSync/USyncQuery.ts +133 -0
  276. package/src/WAUSync/USyncUser.ts +32 -0
  277. package/src/WAUSync/index.ts +3 -0
  278. package/src/index.ts +13 -0
@@ -0,0 +1,424 @@
1
+ import type { Readable } from 'stream'
2
+ import type { URL } from 'url'
3
+ import { proto } from '../../WAProto/index.js'
4
+ import type { MediaType } from '../Defaults'
5
+ import type { BinaryNode } from '../WABinary'
6
+ import type { GroupMetadata } from './GroupMetadata'
7
+ import type { CacheStore } from './Socket'
8
+
9
+ // export the WAMessage Prototypes
10
+ export { proto as WAProto }
11
+ export type WAMessage = proto.IWebMessageInfo & {
12
+ key: WAMessageKey
13
+ messageStubParameters?: any
14
+ category?: string
15
+ retryCount?: number
16
+ }
17
+ export type WAMessageContent = proto.IMessage
18
+ export type WAContactMessage = proto.Message.IContactMessage
19
+ export type WAContactsArrayMessage = proto.Message.IContactsArrayMessage
20
+ export type WAMessageKey = proto.IMessageKey & {
21
+ remoteJidAlt?: string
22
+ participantAlt?: string
23
+ server_id?: string
24
+ addressingMode?: string
25
+ isViewOnce?: boolean // TODO: remove out of the message key, place in WebMessageInfo
26
+ }
27
+ export type WATextMessage = proto.Message.IExtendedTextMessage
28
+ export type WAContextInfo = proto.IContextInfo
29
+ export type WALocationMessage = proto.Message.ILocationMessage
30
+ export type WAGenericMediaMessage =
31
+ | proto.Message.IVideoMessage
32
+ | proto.Message.IImageMessage
33
+ | proto.Message.IAudioMessage
34
+ | proto.Message.IDocumentMessage
35
+ | proto.Message.IStickerMessage
36
+ export const WAMessageStubType = proto.WebMessageInfo.StubType
37
+ export const WAMessageStatus = proto.WebMessageInfo.Status
38
+ import type { ILogger } from '../Utils/logger'
39
+ export type WAMediaPayloadURL = { url: URL | string }
40
+ export type WAMediaPayloadStream = { stream: Readable }
41
+ export type WAMediaUpload = Buffer | WAMediaPayloadStream | WAMediaPayloadURL
42
+ /** Set of message types that are supported by the library */
43
+ export type MessageType = keyof proto.Message
44
+
45
+ export enum WAMessageAddressingMode {
46
+ PN = 'pn',
47
+ LID = 'lid'
48
+ }
49
+
50
+ export type MessageWithContextInfo =
51
+ | 'imageMessage'
52
+ | 'contactMessage'
53
+ | 'locationMessage'
54
+ | 'extendedTextMessage'
55
+ | 'documentMessage'
56
+ | 'audioMessage'
57
+ | 'videoMessage'
58
+ | 'call'
59
+ | 'contactsArrayMessage'
60
+ | 'liveLocationMessage'
61
+ | 'templateMessage'
62
+ | 'stickerMessage'
63
+ | 'groupInviteMessage'
64
+ | 'templateButtonReplyMessage'
65
+ | 'productMessage'
66
+ | 'listMessage'
67
+ | 'orderMessage'
68
+ | 'listResponseMessage'
69
+ | 'buttonsMessage'
70
+ | 'buttonsResponseMessage'
71
+ | 'interactiveMessage'
72
+ | 'interactiveResponseMessage'
73
+ | 'pollCreationMessage'
74
+ | 'requestPhoneNumberMessage'
75
+ | 'messageHistoryBundle'
76
+ | 'eventMessage'
77
+ | 'newsletterAdminInviteMessage'
78
+ | 'albumMessage'
79
+ | 'stickerPackMessage'
80
+ | 'pollResultSnapshotMessage'
81
+ | 'messageHistoryNotice'
82
+
83
+ export type DownloadableMessage = { mediaKey?: Uint8Array | null; directPath?: string | null; url?: string | null }
84
+
85
+ export type MessageReceiptType =
86
+ | 'read'
87
+ | 'read-self'
88
+ | 'hist_sync'
89
+ | 'peer_msg'
90
+ | 'sender'
91
+ | 'inactive'
92
+ | 'played'
93
+ | undefined
94
+
95
+ export type MediaConnInfo = {
96
+ auth: string
97
+ ttl: number
98
+ hosts: { hostname: string; maxContentLengthBytes: number }[]
99
+ fetchDate: Date
100
+ }
101
+
102
+ export interface WAUrlInfo {
103
+ 'canonical-url': string
104
+ 'matched-text': string
105
+ title: string
106
+ description?: string
107
+ jpegThumbnail?: Buffer
108
+ highQualityThumbnail?: proto.Message.IImageMessage
109
+ originalThumbnailUrl?: string
110
+ }
111
+
112
+ // types to generate WA messages
113
+ type Mentionable = {
114
+ /** list of jids that are mentioned in the accompanying text */
115
+ mentions?: string[]
116
+ }
117
+ type Contextable = {
118
+ /** add contextInfo to the message */
119
+ contextInfo?: proto.IContextInfo
120
+ }
121
+ type ViewOnce = {
122
+ viewOnce?: boolean
123
+ }
124
+
125
+ type Editable = {
126
+ edit?: WAMessageKey
127
+ }
128
+ type WithDimensions = {
129
+ width?: number
130
+ height?: number
131
+ }
132
+
133
+ export type PollMessageOptions = {
134
+ name: string
135
+ selectableCount?: number
136
+ values: string[]
137
+ /** 32 byte message secret to encrypt poll selections */
138
+ messageSecret?: Uint8Array
139
+ toAnnouncementGroup?: boolean
140
+ }
141
+
142
+ export type EventMessageOptions = {
143
+ name: string
144
+ description?: string
145
+ startDate: Date
146
+ endDate?: Date
147
+ location?: WALocationMessage
148
+ call?: 'audio' | 'video'
149
+ isCancelled?: boolean
150
+ isScheduleCall?: boolean
151
+ extraGuestsAllowed?: boolean
152
+ messageSecret?: Uint8Array<ArrayBufferLike>
153
+ }
154
+
155
+ type SharePhoneNumber = {
156
+ sharePhoneNumber: boolean
157
+ }
158
+
159
+ type RequestPhoneNumber = {
160
+ requestPhoneNumber: boolean
161
+ }
162
+
163
+ export type AnyMediaMessageContent = (
164
+ | ({
165
+ image: WAMediaUpload
166
+ caption?: string
167
+ jpegThumbnail?: string
168
+ } & Mentionable &
169
+ Contextable &
170
+ WithDimensions)
171
+ | ({
172
+ video: WAMediaUpload
173
+ caption?: string
174
+ gifPlayback?: boolean
175
+ jpegThumbnail?: string
176
+ /** if set to true, will send as a `video note` */
177
+ ptv?: boolean
178
+ } & Mentionable &
179
+ Contextable &
180
+ WithDimensions)
181
+ | {
182
+ audio: WAMediaUpload
183
+ /** if set to true, will send as a `voice note` */
184
+ ptt?: boolean
185
+ /** optionally tell the duration of the audio */
186
+ seconds?: number
187
+ }
188
+ | ({
189
+ sticker: WAMediaUpload
190
+ isAnimated?: boolean
191
+ } & WithDimensions)
192
+ | ({
193
+ document: WAMediaUpload
194
+ mimetype: string
195
+ fileName?: string
196
+ caption?: string
197
+ } & Contextable)
198
+ ) & { mimetype?: string } & Editable
199
+
200
+ export type ButtonReplyInfo = {
201
+ displayText: string
202
+ id: string
203
+ index: number
204
+ }
205
+
206
+ export type GroupInviteInfo = {
207
+ inviteCode: string
208
+ inviteExpiration: number
209
+ text: string
210
+ jid: string
211
+ subject: string
212
+ }
213
+
214
+ export type WASendableProduct = Omit<proto.Message.ProductMessage.IProductSnapshot, 'productImage'> & {
215
+ productImage: WAMediaUpload
216
+ }
217
+
218
+ export type AnyRegularMessageContent = (
219
+ | ({
220
+ text: string
221
+ linkPreview?: WAUrlInfo | null
222
+ } & Mentionable &
223
+ Contextable &
224
+ Editable)
225
+ | AnyMediaMessageContent
226
+ | { event: EventMessageOptions }
227
+ | ({
228
+ poll: PollMessageOptions
229
+ } & Mentionable &
230
+ Contextable &
231
+ Editable)
232
+ | {
233
+ contacts: {
234
+ displayName?: string
235
+ contacts: proto.Message.IContactMessage[]
236
+ }
237
+ }
238
+ | {
239
+ location: WALocationMessage
240
+ }
241
+ | { react: proto.Message.IReactionMessage }
242
+ | {
243
+ buttonReply: ButtonReplyInfo
244
+ type: 'template' | 'plain'
245
+ }
246
+ | {
247
+ groupInvite: GroupInviteInfo
248
+ }
249
+ | {
250
+ listReply: Omit<proto.Message.IListResponseMessage, 'contextInfo'>
251
+ }
252
+ | {
253
+ pin: WAMessageKey
254
+ type: proto.PinInChat.Type
255
+ /**
256
+ * 24 hours, 7 days, 30 days
257
+ */
258
+ time?: 86400 | 604800 | 2592000
259
+ }
260
+ | {
261
+ product: WASendableProduct
262
+ businessOwnerJid?: string
263
+ body?: string
264
+ footer?: string
265
+ }
266
+ | SharePhoneNumber
267
+ | RequestPhoneNumber
268
+ | {
269
+ /** Botões simples (legacy buttonsMessage) */
270
+ buttons: {
271
+ text: string
272
+ footer?: string
273
+ title?: string
274
+ buttons: { id: string; text: string }[]
275
+ }
276
+ }
277
+ | {
278
+ /** Template Buttons: URL, call, quickReply */
279
+ templateButtons: {
280
+ text: string
281
+ footer?: string
282
+ title?: string
283
+ buttons: (
284
+ | { type: 'reply'; id: string; text: string }
285
+ | { type: 'url'; url: string; text: string }
286
+ | { type: 'call'; phone: string; text: string }
287
+ )[]
288
+ }
289
+ }
290
+ | {
291
+ /** List Message com seções */
292
+ list: {
293
+ title?: string
294
+ text: string
295
+ footer?: string
296
+ buttonText: string
297
+ sections: {
298
+ title?: string
299
+ rows: { id: string; title: string; description?: string }[]
300
+ }[]
301
+ }
302
+ }
303
+ | {
304
+ /** Interactive Message — novo protocolo MD 2024+ */
305
+ interactive: {
306
+ body: string
307
+ footer?: string
308
+ header?: string
309
+ nativeFlowButtons: { name: string; buttonParamsJson: string }[]
310
+ }
311
+ }
312
+ ) &
313
+ ViewOnce
314
+
315
+ export type AnyMessageContent =
316
+ | AnyRegularMessageContent
317
+ | {
318
+ forward: WAMessage
319
+ force?: boolean
320
+ }
321
+ | {
322
+ /** Delete your message or anyone's message in a group (admin required) */
323
+ delete: WAMessageKey
324
+ }
325
+ | {
326
+ disappearingMessagesInChat: boolean | number
327
+ }
328
+ | {
329
+ limitSharing: boolean
330
+ }
331
+
332
+ export type GroupMetadataParticipants = Pick<GroupMetadata, 'participants'>
333
+
334
+ type MinimalRelayOptions = {
335
+ /** override the message ID with a custom provided string */
336
+ messageId?: string
337
+ /** should we use group metadata cache, or fetch afresh from the server; default assumed to be "true" */
338
+ useCachedGroupMetadata?: boolean
339
+ }
340
+
341
+ export type MessageRelayOptions = MinimalRelayOptions & {
342
+ /** only send to a specific participant; used when a message decryption fails for a single user */
343
+ participant?: { jid: string; count: number }
344
+ /** additional attributes to add to the WA binary node */
345
+ additionalAttributes?: { [_: string]: string }
346
+ additionalNodes?: BinaryNode[]
347
+ /** should we use the devices cache, or fetch afresh from the server; default assumed to be "true" */
348
+ useUserDevicesCache?: boolean
349
+ /** jid list of participants for status@broadcast */
350
+ statusJidList?: string[]
351
+ }
352
+
353
+ export type MiscMessageGenerationOptions = MinimalRelayOptions & {
354
+ /** optional, if you want to manually set the timestamp of the message */
355
+ timestamp?: Date
356
+ /** the message you want to quote */
357
+ quoted?: WAMessage
358
+ /** disappearing messages settings */
359
+ ephemeralExpiration?: number | string
360
+ /** timeout for media upload to WA server */
361
+ mediaUploadTimeoutMs?: number
362
+ /** jid list of participants for status@broadcast */
363
+ statusJidList?: string[]
364
+ /** backgroundcolor for status */
365
+ backgroundColor?: string
366
+ /** font type for status */
367
+ font?: number
368
+ /** if it is broadcast */
369
+ broadcast?: boolean
370
+ }
371
+ export type MessageGenerationOptionsFromContent = MiscMessageGenerationOptions & {
372
+ userJid: string
373
+ }
374
+
375
+ export type WAMediaUploadFunction = (
376
+ encFilePath: string,
377
+ opts: { fileEncSha256B64: string; mediaType: MediaType; timeoutMs?: number }
378
+ ) => Promise<{ mediaUrl: string; directPath: string; meta_hmac?: string; ts?: number; fbid?: number }>
379
+
380
+ export type MediaGenerationOptions = {
381
+ logger?: ILogger
382
+ mediaTypeOverride?: MediaType
383
+ upload: WAMediaUploadFunction
384
+ /** cache media so it does not have to be uploaded again */
385
+ mediaCache?: CacheStore
386
+
387
+ mediaUploadTimeoutMs?: number
388
+
389
+ options?: RequestInit
390
+
391
+ backgroundColor?: string
392
+
393
+ font?: number
394
+ }
395
+ export type MessageContentGenerationOptions = MediaGenerationOptions & {
396
+ getUrlInfo?: (text: string) => Promise<WAUrlInfo | undefined>
397
+ getProfilePicUrl?: (jid: string, type: 'image' | 'preview') => Promise<string | undefined>
398
+ getCallLink?: (type: 'audio' | 'video', event?: { startTime: number }) => Promise<string | undefined>
399
+ jid?: string
400
+ }
401
+ export type MessageGenerationOptions = MessageContentGenerationOptions & MessageGenerationOptionsFromContent
402
+
403
+ /**
404
+ * Type of message upsert
405
+ * 1. notify => notify the user, this message was just received
406
+ * 2. append => append the message to the chat history, no notification required
407
+ */
408
+ export type MessageUpsertType = 'append' | 'notify'
409
+
410
+ export type MessageUserReceipt = proto.IUserReceipt
411
+
412
+ export type WAMessageUpdate = { update: Partial<WAMessage>; key: WAMessageKey }
413
+
414
+ export type WAMessageCursor = { before: WAMessageKey | undefined } | { after: WAMessageKey | undefined }
415
+
416
+ export type MessageUserReceiptUpdate = { key: WAMessageKey; receipt: MessageUserReceipt }
417
+
418
+ export type MediaDecryptionKeyInfo = {
419
+ iv: Buffer
420
+ cipherKey: Buffer
421
+ macKey?: Buffer
422
+ }
423
+
424
+ export type MinimalMessage = Pick<WAMessage, 'key' | 'messageTimestamp'>
@@ -0,0 +1,98 @@
1
+ export enum XWAPaths {
2
+ xwa2_newsletter_create = 'xwa2_newsletter_create',
3
+ xwa2_newsletter_subscribers = 'xwa2_newsletter_subscribers',
4
+ xwa2_newsletter_view = 'xwa2_newsletter_view',
5
+ xwa2_newsletter_metadata = 'xwa2_newsletter',
6
+ xwa2_newsletter_admin_count = 'xwa2_newsletter_admin',
7
+ xwa2_newsletter_mute_v2 = 'xwa2_newsletter_mute_v2',
8
+ xwa2_newsletter_unmute_v2 = 'xwa2_newsletter_unmute_v2',
9
+ xwa2_newsletter_follow = 'xwa2_newsletter_follow',
10
+ xwa2_newsletter_unfollow = 'xwa2_newsletter_unfollow',
11
+ xwa2_newsletter_change_owner = 'xwa2_newsletter_change_owner',
12
+ xwa2_newsletter_demote = 'xwa2_newsletter_demote',
13
+ xwa2_newsletter_delete_v2 = 'xwa2_newsletter_delete_v2'
14
+ }
15
+ export enum QueryIds {
16
+ CREATE = '8823471724422422',
17
+ UPDATE_METADATA = '24250201037901610',
18
+ METADATA = '6563316087068696',
19
+ SUBSCRIBERS = '9783111038412085',
20
+ FOLLOW = '7871414976211147',
21
+ UNFOLLOW = '7238632346214362',
22
+ MUTE = '29766401636284406',
23
+ UNMUTE = '9864994326891137',
24
+ ADMIN_COUNT = '7130823597031706',
25
+ CHANGE_OWNER = '7341777602580933',
26
+ DEMOTE = '6551828931592903',
27
+ DELETE = '30062808666639665'
28
+ }
29
+ export type NewsletterUpdate = {
30
+ name?: string
31
+ description?: string
32
+ picture?: string
33
+ }
34
+ export interface NewsletterCreateResponse {
35
+ id: string
36
+ state: { type: string }
37
+ thread_metadata: {
38
+ creation_time: string
39
+ description: { id: string; text: string; update_time: string }
40
+ handle: string | null
41
+ invite: string
42
+ name: { id: string; text: string; update_time: string }
43
+ picture: { direct_path: string; id: string; type: string }
44
+ preview: { direct_path: string; id: string; type: string }
45
+ subscribers_count: string
46
+ verification: 'VERIFIED' | 'UNVERIFIED'
47
+ }
48
+ viewer_metadata: {
49
+ mute: 'ON' | 'OFF'
50
+ role: NewsletterViewRole
51
+ }
52
+ }
53
+ export interface NewsletterCreateResponse {
54
+ id: string
55
+ state: { type: string }
56
+ thread_metadata: {
57
+ creation_time: string
58
+ description: { id: string; text: string; update_time: string }
59
+ handle: string | null
60
+ invite: string
61
+ name: { id: string; text: string; update_time: string }
62
+ picture: { direct_path: string; id: string; type: string }
63
+ preview: { direct_path: string; id: string; type: string }
64
+ subscribers_count: string
65
+ verification: 'VERIFIED' | 'UNVERIFIED'
66
+ }
67
+ viewer_metadata: {
68
+ mute: 'ON' | 'OFF'
69
+ role: NewsletterViewRole
70
+ }
71
+ }
72
+ export type NewsletterViewRole = 'ADMIN' | 'GUEST' | 'OWNER' | 'SUBSCRIBER'
73
+ export interface NewsletterMetadata {
74
+ id: string
75
+ owner?: string
76
+ name: string
77
+ description?: string
78
+ invite?: string
79
+ creation_time?: number
80
+ subscribers?: number
81
+ picture?: {
82
+ url?: string
83
+ directPath?: string
84
+ mediaKey?: string
85
+ id?: string
86
+ }
87
+ verification?: 'VERIFIED' | 'UNVERIFIED'
88
+ reaction_codes?: {
89
+ code: string
90
+ count: number
91
+ }[]
92
+ mute_state?: 'ON' | 'OFF'
93
+ thread_metadata?: {
94
+ creation_time?: number
95
+ name?: string
96
+ description?: string
97
+ }
98
+ }
@@ -0,0 +1,85 @@
1
+ import type { WAMediaUpload } from './Message'
2
+
3
+ export type CatalogResult = {
4
+ data: {
5
+ paging: { cursors: { before: string; after: string } }
6
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
7
+ data: any[]
8
+ }
9
+ }
10
+
11
+ export type ProductCreateResult = {
12
+ data: { product: {} }
13
+ }
14
+
15
+ export type CatalogStatus = {
16
+ status: string
17
+ canAppeal: boolean
18
+ }
19
+
20
+ export type CatalogCollection = {
21
+ id: string
22
+ name: string
23
+ products: Product[]
24
+
25
+ status: CatalogStatus
26
+ }
27
+
28
+ export type ProductAvailability = 'in stock'
29
+
30
+ export type ProductBase = {
31
+ name: string
32
+ retailerId?: string
33
+ url?: string
34
+ description: string
35
+ price: number
36
+ currency: string
37
+ isHidden?: boolean
38
+ }
39
+
40
+ export type ProductCreate = ProductBase & {
41
+ /** ISO country code for product origin. Set to undefined for no country */
42
+ originCountryCode: string | undefined
43
+ /** images of the product */
44
+ images: WAMediaUpload[]
45
+ }
46
+
47
+ export type ProductUpdate = Omit<ProductCreate, 'originCountryCode'>
48
+
49
+ export type Product = ProductBase & {
50
+ id: string
51
+ imageUrls: { [_: string]: string }
52
+ reviewStatus: { [_: string]: string }
53
+ availability: ProductAvailability
54
+ }
55
+
56
+ export type OrderPrice = {
57
+ currency: string
58
+ total: number
59
+ }
60
+
61
+ export type OrderProduct = {
62
+ id: string
63
+ imageUrl: string
64
+ name: string
65
+ quantity: number
66
+
67
+ currency: string
68
+ price: number
69
+ }
70
+
71
+ export type OrderDetails = {
72
+ price: OrderPrice
73
+ products: OrderProduct[]
74
+ }
75
+
76
+ export type CatalogCursor = string
77
+
78
+ export type GetCatalogOptions = {
79
+ /** cursor to start from */
80
+ cursor?: CatalogCursor
81
+ /** number of products to fetch */
82
+ limit?: number
83
+
84
+ jid?: string
85
+ }
@@ -0,0 +1,76 @@
1
+ import { proto } from '../../WAProto/index.js'
2
+ import type { LIDMappingStore } from '../Signal/lid-mapping'
3
+
4
+ type DecryptGroupSignalOpts = {
5
+ group: string
6
+ authorJid: string
7
+ msg: Uint8Array
8
+ }
9
+
10
+ type ProcessSenderKeyDistributionMessageOpts = {
11
+ item: proto.Message.ISenderKeyDistributionMessage
12
+ authorJid: string
13
+ }
14
+
15
+ type DecryptSignalProtoOpts = {
16
+ jid: string
17
+ type: 'pkmsg' | 'msg'
18
+ ciphertext: Uint8Array
19
+ }
20
+
21
+ type EncryptMessageOpts = {
22
+ jid: string
23
+ data: Uint8Array
24
+ }
25
+
26
+ type EncryptGroupMessageOpts = {
27
+ group: string
28
+ data: Uint8Array
29
+ meId: string
30
+ }
31
+
32
+ type PreKey = {
33
+ keyId: number
34
+ publicKey: Uint8Array
35
+ }
36
+
37
+ type SignedPreKey = PreKey & {
38
+ signature: Uint8Array
39
+ }
40
+
41
+ type E2ESession = {
42
+ registrationId: number
43
+ identityKey: Uint8Array
44
+ signedPreKey: SignedPreKey
45
+ preKey: PreKey
46
+ }
47
+
48
+ type E2ESessionOpts = {
49
+ jid: string
50
+ session: E2ESession
51
+ }
52
+
53
+ export type SignalRepository = {
54
+ decryptGroupMessage(opts: DecryptGroupSignalOpts): Promise<Uint8Array>
55
+ processSenderKeyDistributionMessage(opts: ProcessSenderKeyDistributionMessageOpts): Promise<void>
56
+ decryptMessage(opts: DecryptSignalProtoOpts): Promise<Uint8Array>
57
+ encryptMessage(opts: EncryptMessageOpts): Promise<{
58
+ type: 'pkmsg' | 'msg'
59
+ ciphertext: Uint8Array
60
+ }>
61
+ encryptGroupMessage(opts: EncryptGroupMessageOpts): Promise<{
62
+ senderKeyDistributionMessage: Uint8Array
63
+ ciphertext: Uint8Array
64
+ }>
65
+ injectE2ESession(opts: E2ESessionOpts): Promise<void>
66
+ validateSession(jid: string): Promise<{ exists: boolean; reason?: string }>
67
+ jidToSignalProtocolAddress(jid: string): string
68
+ migrateSession(fromJid: string, toJid: string): Promise<{ migrated: number; skipped: number; total: number }>
69
+ validateSession(jid: string): Promise<{ exists: boolean; reason?: string }>
70
+ deleteSession(jids: string[]): Promise<void>
71
+ }
72
+
73
+ // Optimized repository with pre-loaded LID mapping store
74
+ export interface SignalRepositoryWithLIDStore extends SignalRepository {
75
+ lidMapping: LIDMappingStore
76
+ }