@lazyneoaz/nkxchat 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 (123) hide show
  1. package/LICENSE +3 -0
  2. package/README.md +199 -0
  3. package/examples/login-with-cookies.js +102 -0
  4. package/examples/verify.js +70 -0
  5. package/index.js +2 -0
  6. package/package.json +84 -0
  7. package/src/apis/addExternalModule.js +24 -0
  8. package/src/apis/addUserToGroup.js +108 -0
  9. package/src/apis/changeAdminStatus.js +148 -0
  10. package/src/apis/changeArchivedStatus.js +61 -0
  11. package/src/apis/changeAvatar.js +103 -0
  12. package/src/apis/changeBio.js +69 -0
  13. package/src/apis/changeBlockedStatus.js +54 -0
  14. package/src/apis/changeGroupImage.js +136 -0
  15. package/src/apis/changeThreadColor.js +116 -0
  16. package/src/apis/changeThreadEmoji.js +53 -0
  17. package/src/apis/comment.js +207 -0
  18. package/src/apis/createAITheme.js +129 -0
  19. package/src/apis/createNewGroup.js +79 -0
  20. package/src/apis/createPoll.js +73 -0
  21. package/src/apis/deleteMessage.js +44 -0
  22. package/src/apis/deleteThread.js +52 -0
  23. package/src/apis/editMessage.js +70 -0
  24. package/src/apis/emoji.js +124 -0
  25. package/src/apis/enableAutoSaveAppState.js +69 -0
  26. package/src/apis/fetchThemeData.js +113 -0
  27. package/src/apis/follow.js +81 -0
  28. package/src/apis/forwardAttachment.js +178 -0
  29. package/src/apis/forwardMessage.js +52 -0
  30. package/src/apis/friend.js +243 -0
  31. package/src/apis/gcmember.js +122 -0
  32. package/src/apis/gcname.js +123 -0
  33. package/src/apis/gcrule.js +119 -0
  34. package/src/apis/getAccess.js +111 -0
  35. package/src/apis/getBotInfo.js +88 -0
  36. package/src/apis/getBotInitialData.js +43 -0
  37. package/src/apis/getEmojiUrl.js +40 -0
  38. package/src/apis/getFriendsList.js +79 -0
  39. package/src/apis/getMessage.js +423 -0
  40. package/src/apis/getTheme.js +123 -0
  41. package/src/apis/getThemeInfo.js +116 -0
  42. package/src/apis/getThemePictures.js +87 -0
  43. package/src/apis/getThreadColors.js +119 -0
  44. package/src/apis/getThreadHistory.js +239 -0
  45. package/src/apis/getThreadInfo.js +267 -0
  46. package/src/apis/getThreadList.js +232 -0
  47. package/src/apis/getThreadPictures.js +58 -0
  48. package/src/apis/getUserID.js +117 -0
  49. package/src/apis/getUserInfo.js +513 -0
  50. package/src/apis/getUserInfoV2.js +146 -0
  51. package/src/apis/handleFriendRequest.js +66 -0
  52. package/src/apis/handleMessageRequest.js +50 -0
  53. package/src/apis/httpGet.js +63 -0
  54. package/src/apis/httpPost.js +89 -0
  55. package/src/apis/httpPostFormData.js +69 -0
  56. package/src/apis/listenMqtt.js +924 -0
  57. package/src/apis/listenSpeed.js +178 -0
  58. package/src/apis/logout.js +63 -0
  59. package/src/apis/markAsDelivered.js +47 -0
  60. package/src/apis/markAsRead.js +95 -0
  61. package/src/apis/markAsReadAll.js +40 -0
  62. package/src/apis/markAsSeen.js +70 -0
  63. package/src/apis/mqttDeltaValue.js +252 -0
  64. package/src/apis/muteThread.js +45 -0
  65. package/src/apis/nickname.js +132 -0
  66. package/src/apis/notes.js +163 -0
  67. package/src/apis/pinMessage.js +150 -0
  68. package/src/apis/produceMetaTheme.js +160 -0
  69. package/src/apis/realtime.js +182 -0
  70. package/src/apis/refreshFb_dtsg.js +94 -0
  71. package/src/apis/removeUserFromGroup.js +117 -0
  72. package/src/apis/resolvePhotoUrl.js +58 -0
  73. package/src/apis/searchForThread.js +154 -0
  74. package/src/apis/sendEffect.js +306 -0
  75. package/src/apis/sendMessage.js +353 -0
  76. package/src/apis/sendMessageMqtt.js +255 -0
  77. package/src/apis/sendTypingIndicator.js +40 -0
  78. package/src/apis/setMessageReaction.js +27 -0
  79. package/src/apis/setMessageReactionMqtt.js +61 -0
  80. package/src/apis/setPostReaction.js +118 -0
  81. package/src/apis/setThreadTheme.js +210 -0
  82. package/src/apis/setThreadThemeMqtt.js +94 -0
  83. package/src/apis/setTitle.js +26 -0
  84. package/src/apis/share.js +106 -0
  85. package/src/apis/shareContact.js +66 -0
  86. package/src/apis/stickers.js +257 -0
  87. package/src/apis/story.js +181 -0
  88. package/src/apis/theme.js +233 -0
  89. package/src/apis/unfriend.js +47 -0
  90. package/src/apis/unsendMessage.js +17 -0
  91. package/src/apis/uploadAttachment.js +87 -0
  92. package/src/database/appStateBackup.js +189 -0
  93. package/src/database/models/index.js +56 -0
  94. package/src/database/models/thread.js +31 -0
  95. package/src/database/models/user.js +32 -0
  96. package/src/database/threadData.js +101 -0
  97. package/src/database/userData.js +90 -0
  98. package/src/engine/client.js +92 -0
  99. package/src/engine/models/buildAPI.js +118 -0
  100. package/src/engine/models/loginHelper.js +492 -0
  101. package/src/engine/models/setOptions.js +88 -0
  102. package/src/types/index.d.ts +498 -0
  103. package/src/utils/antiSuspension.js +516 -0
  104. package/src/utils/auth-helpers.js +149 -0
  105. package/src/utils/autoReLogin.js +237 -0
  106. package/src/utils/axios.js +368 -0
  107. package/src/utils/cache.js +54 -0
  108. package/src/utils/clients.js +279 -0
  109. package/src/utils/constants.js +525 -0
  110. package/src/utils/formatters/data/formatAttachment.js +370 -0
  111. package/src/utils/formatters/data/formatDelta.js +109 -0
  112. package/src/utils/formatters/index.js +159 -0
  113. package/src/utils/formatters/value/formatCookie.js +91 -0
  114. package/src/utils/formatters/value/formatDate.js +36 -0
  115. package/src/utils/formatters/value/formatID.js +16 -0
  116. package/src/utils/formatters.js +1369 -0
  117. package/src/utils/headers.js +235 -0
  118. package/src/utils/index.js +152 -0
  119. package/src/utils/monitoring.js +333 -0
  120. package/src/utils/rateLimiter.js +251 -0
  121. package/src/utils/tokenRefresh.js +285 -0
  122. package/src/utils/user-agents.js +238 -0
  123. package/src/utils/validation.js +157 -0
@@ -0,0 +1,498 @@
1
+ /// <reference types="node" />
2
+ import { ReadStream } from "fs";
3
+ import { EventEmitter } from "events";
4
+
5
+ declare module "dhoner-fca" {
6
+ export type UserID = string;
7
+ export type ThreadID = string;
8
+ export type MessageID = string;
9
+ export type Callback<T = any> = (err: any, result?: T) => void;
10
+
11
+ export interface Coordinates {
12
+ latitude: number;
13
+ longitude: number;
14
+ }
15
+
16
+ export interface Mention {
17
+ tag: string;
18
+ id: UserID;
19
+ fromIndex?: number;
20
+ }
21
+
22
+ export interface Reaction {
23
+ reaction: string;
24
+ userID: UserID;
25
+ }
26
+
27
+ export interface StickerPackInfo {
28
+ id: string;
29
+ name: string;
30
+ thumbnail?: string;
31
+ }
32
+
33
+ export interface StickerInfo {
34
+ type: "sticker";
35
+ ID: string;
36
+ url?: string;
37
+ animatedUrl?: string;
38
+ packID?: string;
39
+ label: string;
40
+ stickerID: string;
41
+ }
42
+
43
+ export interface AddedStickerPackInfo {
44
+ id: string;
45
+ name: string;
46
+ in_sticker_tray: boolean;
47
+ artist?: string;
48
+ preview_image?: { uri: string };
49
+ thumbnail_image?: { uri: string };
50
+ }
51
+
52
+ export interface CommentMessage {
53
+ body: string;
54
+ attachment?: ReadStream[];
55
+ mentions?: Mention[];
56
+ url?: string;
57
+ sticker?: string;
58
+ }
59
+
60
+ export interface CommentResult {
61
+ id: string;
62
+ url: string;
63
+ count: number;
64
+ }
65
+
66
+ export interface ShareResult {
67
+ postID: string;
68
+ url: string;
69
+ }
70
+
71
+ export interface Attachment {
72
+ type: "photo" | "animated_image" | "video" | "audio" | "file" | "sticker" | "share" | "location" | "unknown";
73
+ ID: string;
74
+ filename: string;
75
+ url?: string;
76
+ name?: string;
77
+ }
78
+
79
+ export interface PhotoAttachment extends Attachment {
80
+ type: "photo";
81
+ thumbnailUrl: string;
82
+ previewUrl: string;
83
+ previewWidth: number;
84
+ previewHeight: number;
85
+ largePreviewUrl: string;
86
+ largePreviewWidth: number;
87
+ largePreviewHeight: number;
88
+ width: number;
89
+ height: number;
90
+ }
91
+
92
+ export interface VideoAttachment extends Attachment {
93
+ type: "video";
94
+ duration: number;
95
+ width: number;
96
+ height: number;
97
+ previewUrl: string;
98
+ previewWidth: number;
99
+ previewHeight: number;
100
+ videoType: "file_attachment" | "native_video" | "unknown";
101
+ }
102
+
103
+ export interface AudioAttachment extends Attachment {
104
+ type: "audio";
105
+ duration: number;
106
+ audioType: string;
107
+ isVoiceMail: boolean;
108
+ }
109
+
110
+ export interface FileAttachment extends Attachment {
111
+ type: "file";
112
+ isMalicious: boolean;
113
+ contentType: string;
114
+ }
115
+
116
+ export interface StickerAttachment extends Attachment {
117
+ type: "sticker";
118
+ packID: string;
119
+ spriteUrl?: string;
120
+ spriteUrl2x?: string;
121
+ width: number;
122
+ height: number;
123
+ caption: string;
124
+ description: string;
125
+ frameCount: number;
126
+ frameRate: number;
127
+ framesPerRow: number;
128
+ framesPerCol: number;
129
+ }
130
+
131
+ export interface ShareAttachment extends Attachment {
132
+ type: "share";
133
+ title: string;
134
+ description?: string;
135
+ source?: string;
136
+ image?: string;
137
+ width?: number;
138
+ height?: number;
139
+ playable?: boolean;
140
+ subattachments?: any[];
141
+ properties: Record<string, any>;
142
+ }
143
+
144
+ export type AnyAttachment =
145
+ | PhotoAttachment
146
+ | VideoAttachment
147
+ | AudioAttachment
148
+ | FileAttachment
149
+ | StickerAttachment
150
+ | ShareAttachment;
151
+
152
+ export interface MessageReply {
153
+ messageID: MessageID;
154
+ senderID: UserID;
155
+ body: string;
156
+ attachments: AnyAttachment[];
157
+ timestamp: string;
158
+ isReply: true;
159
+ }
160
+
161
+ export interface Message {
162
+ type: "message";
163
+ senderID: UserID;
164
+ body: string;
165
+ threadID: ThreadID;
166
+ messageID: MessageID;
167
+ attachments: AnyAttachment[];
168
+ mentions: Record<string, string>;
169
+ timestamp: string;
170
+ isGroup: boolean;
171
+ participantIDs?: UserID[];
172
+ messageReply?: MessageReply;
173
+ isUnread?: boolean;
174
+ reactions?: Reaction[];
175
+ }
176
+
177
+ export interface Event {
178
+ type: "event";
179
+ threadID: ThreadID;
180
+ logMessageType: string;
181
+ logMessageData: any;
182
+ logMessageBody: string;
183
+ timestamp: string;
184
+ author: UserID;
185
+ }
186
+
187
+ export interface TypingIndicator {
188
+ type: "typ";
189
+ isTyping: boolean;
190
+ from: UserID;
191
+ threadID: ThreadID;
192
+ fromMobile: boolean;
193
+ }
194
+
195
+ export interface UnsendMessageEvent {
196
+ type: "unsend";
197
+ messageID: MessageID;
198
+ threadID: ThreadID;
199
+ senderID: UserID;
200
+ deletionTimestamp: string;
201
+ }
202
+
203
+ export interface EmojiEvent {
204
+ type: "change_thread_emoji";
205
+ threadID: ThreadID;
206
+ author: UserID;
207
+ emoji: string;
208
+ }
209
+
210
+ export interface GroupNameEvent {
211
+ type: "change_thread_name";
212
+ threadID: ThreadID;
213
+ author: UserID;
214
+ name: string;
215
+ }
216
+
217
+ export interface NicknameEvent {
218
+ type: "change_thread_nickname";
219
+ threadID: ThreadID;
220
+ author: UserID;
221
+ participantID: UserID;
222
+ nickname: string;
223
+ }
224
+
225
+ export type ListenEvent = Message | Event | TypingIndicator;
226
+
227
+ export interface UserInfo {
228
+ id: UserID;
229
+ name: string;
230
+ firstName: string;
231
+ lastName?: string;
232
+ vanity: string;
233
+ profileUrl: string;
234
+ profilePicUrl: string;
235
+ gender: string;
236
+ type: "user" | "page";
237
+ isFriend: boolean;
238
+ isBirthday: boolean;
239
+ bio?: string;
240
+ live_city?: string;
241
+ followers?: string;
242
+ following?: string;
243
+ coverPhoto?: string;
244
+ }
245
+
246
+ export interface ThreadInfo {
247
+ threadID: ThreadID;
248
+ threadName?: string;
249
+ participantIDs: UserID[];
250
+ userInfo: UserInfo[];
251
+ unreadCount: number;
252
+ messageCount: number;
253
+ imageSrc?: string;
254
+ timestamp: string;
255
+ muteUntil: number;
256
+ isGroup: boolean;
257
+ isArchived: boolean;
258
+ isSubscribed: boolean;
259
+ folder: string;
260
+ nicknames: Record<UserID, string>;
261
+ adminIDs: UserID[];
262
+ emoji?: string;
263
+ color?: string;
264
+ canReply: boolean;
265
+ inviteLink: {
266
+ enable: boolean;
267
+ link: string | null;
268
+ };
269
+ }
270
+
271
+ export interface MessageObject {
272
+ body?: string;
273
+ attachment?: ReadStream | ReadStream[];
274
+ sticker?: string;
275
+ emoji?: string;
276
+ emojiSize?: "small" | "medium" | "large";
277
+ mentions?: Mention[];
278
+ edit?: [string, number][];
279
+ url?: string;
280
+ location?: Coordinates;
281
+ }
282
+
283
+ export interface FriendInfo {
284
+ alternateName: string;
285
+ firstName: string;
286
+ gender: string;
287
+ userID: UserID;
288
+ isFriend: boolean;
289
+ fullName: string;
290
+ profilePicture: string;
291
+ type: string;
292
+ profileUrl: string;
293
+ vanity: string;
294
+ isBirthday: boolean;
295
+ }
296
+
297
+ export interface HealthStatus {
298
+ mqttConnected: boolean;
299
+ autoReconnect: boolean;
300
+ tokenRefresh: {
301
+ lastRefresh: number;
302
+ nextRefresh: number;
303
+ failureCount: number;
304
+ };
305
+ rateLimiter: {
306
+ activeRequests: number;
307
+ maxConcurrentRequests: number;
308
+ maxRequestsPerMinute: number;
309
+ threadCooldowns: number;
310
+ endpointCooldowns: number;
311
+ errorCacheSize: number;
312
+ } | null;
313
+ }
314
+
315
+ export interface API {
316
+ setOptions(options: LoginOptions): void;
317
+ getAppState(): any[];
318
+ getCurrentUserID(): UserID;
319
+ getHealthStatus(): HealthStatus;
320
+
321
+ listen(callback: (err: any, event: ListenEvent) => void): EventEmitter;
322
+
323
+ listenMqtt(callback: (err: any, event: ListenEvent) => void): void;
324
+
325
+ sendMessage(
326
+ message: string | MessageObject,
327
+ threadID: ThreadID,
328
+ replyToMessage?: MessageID | Callback<Message>,
329
+ callback?: Callback<Message>,
330
+ ): Promise<Message> | void;
331
+
332
+ sendMessageMqtt(
333
+ message: string | MessageObject,
334
+ threadID: ThreadID,
335
+ replyToMessage?: MessageID,
336
+ callback?: Callback<Message>,
337
+ ): void;
338
+
339
+ editMessage(text: string, messageID: MessageID, callback?: Callback): void;
340
+
341
+ unsendMessage(messageID: MessageID, threadID: ThreadID, callback?: Callback<UnsendMessageEvent>): Promise<UnsendMessageEvent>;
342
+
343
+ forwardMessage(messageID: MessageID, threadID: ThreadID, callback?: Callback): Promise<void>;
344
+
345
+ deleteMessage(messageIDs: MessageID | MessageID[], callback?: Callback): Promise<void>;
346
+
347
+ setMessageReaction(reaction: string, messageID: MessageID, callback?: Callback, forceCustomReaction?: boolean): Promise<void>;
348
+ setMessageReactionMqtt(reaction: string, messageID: MessageID, threadID: ThreadID, callback?: Callback): Promise<void>;
349
+
350
+ shareContact(text: string, senderID: UserID, threadID: ThreadID, callback?: Callback): void;
351
+ shareContact(senderID: UserID, threadID: ThreadID, callback?: Callback): void;
352
+ resolvePhotoUrl(photoID: string, callback?: Callback<string>): Promise<string>;
353
+
354
+ pinMessage(action: "pin" | "unpin", threadID: ThreadID, messageID: MessageID): Promise<any>;
355
+ pinMessage(action: "list", threadID: ThreadID): Promise<Message[]>;
356
+
357
+ markAsRead(threadID: ThreadID, read?: boolean, callback?: Callback): Promise<any>;
358
+ markAsReadAll(callback?: Callback): Promise<void>;
359
+ markAsSeen(timestamp?: number, callback?: Callback): Promise<void>;
360
+ markAsDelivered(threadID: ThreadID, messageID: MessageID, callback?: Callback): Promise<void>;
361
+
362
+ muteThread(threadID: ThreadID, muteSeconds: number, callback?: Callback): Promise<void>;
363
+
364
+ sendTypingIndicator(sendTyping: boolean, threadID: ThreadID, callback?: Callback): Promise<void>;
365
+
366
+ getThreadInfo(threadID: ThreadID, callback?: Callback<ThreadInfo>): Promise<ThreadInfo>;
367
+ getThreadInfo(threadID: ThreadID[], callback?: Callback<Record<ThreadID, ThreadInfo>>): Promise<Record<ThreadID, ThreadInfo>>;
368
+
369
+ getThreadList(limit: number, timestamp: number | null, tags: string[], callback?: Callback<ThreadInfo[]>): Promise<ThreadInfo[]>;
370
+ getThreadHistory(threadID: ThreadID, amount: number, timestamp: number | null, callback?: Callback<Message[]>): Promise<Message[]>;
371
+ getThreadPictures(threadID: ThreadID, offset: number, limit: number, callback?: Callback<string[]>): Promise<string[]>;
372
+
373
+ getMessage(messageID: MessageID, callback?: Callback<Message>): Promise<Message>;
374
+
375
+ getUserInfo(id: UserID, usePayload?: boolean, callback?: Callback<UserInfo>): Promise<UserInfo>;
376
+ getUserInfo(id: UserID[], usePayload?: boolean, callback?: Callback<Record<UserID, UserInfo>>): Promise<Record<UserID, UserInfo>>;
377
+ getUserInfoV2(id: UserID, callback?: Callback<UserInfo>): Promise<UserInfo>;
378
+ getUserID(name: string, callback?: Callback<{ userID: UserID; [key: string]: any }[]>): Promise<{ userID: UserID; [key: string]: any }[]>;
379
+
380
+ getFriendsList(callback?: Callback<Record<UserID, FriendInfo>>): Promise<Record<UserID, FriendInfo>>;
381
+
382
+ searchForThread(name: string, callback?: Callback<ThreadInfo[]>): Promise<ThreadInfo[]>;
383
+
384
+ createNewGroup(participantIDs: UserID[], groupName?: string, callback?: Callback<ThreadID>): Promise<ThreadID>;
385
+
386
+ addUserToGroup(userID: UserID, threadID: ThreadID, callback?: Callback): Promise<void>;
387
+ removeUserFromGroup(userID: UserID, threadID: ThreadID, callback?: Callback): Promise<void>;
388
+ changeAdminStatus(threadID: ThreadID, userID: UserID, adminStatus: boolean, callback?: Callback): Promise<void>;
389
+
390
+ changeGroupImage(image: ReadStream, threadID: ThreadID, callback?: Callback): Promise<void>;
391
+ changeThreadColor(color: string, threadID: ThreadID, callback?: Callback): Promise<void>;
392
+ changeThreadEmoji(emoji: string, threadID: ThreadID, callback?: Callback): Promise<void>;
393
+
394
+ changeArchivedStatus(threadID: ThreadID | ThreadID[], archive: boolean, callback?: Callback): Promise<void>;
395
+ changeBlockedStatus(userID: UserID, block: boolean, callback?: Callback): Promise<void>;
396
+
397
+ changeAvatar(image: ReadStream, callback?: Callback): Promise<void>;
398
+ changeBio(bio: string, publish: boolean, callback?: Callback): Promise<void>;
399
+
400
+ handleMessageRequest(threadID: ThreadID | ThreadID[], accept: boolean, callback?: Callback): Promise<void>;
401
+
402
+ deleteThread(threadID: ThreadID | ThreadID[], callback?: Callback): Promise<void>;
403
+
404
+ createPoll(title: string, threadID: ThreadID, options?: Record<string, boolean>, callback?: Callback): Promise<void>;
405
+
406
+ logout(callback?: (err: any) => void): Promise<void>;
407
+
408
+ addExternalModule(moduleObj: Record<string, Function>): void;
409
+ getAccess(authCode?: string, callback?: Callback<string>): Promise<string>;
410
+
411
+ httpGet(url: string, form?: any, customHeader?: any, callback?: Callback<string>, notAPI?: boolean): Promise<string>;
412
+ httpPost(url: string, form?: any, customHeader?: any, callback?: Callback<string>, notAPI?: boolean): Promise<string>;
413
+ httpPostFormData(url: string, form?: any, customHeader?: any, callback?: Callback<string>, notAPI?: boolean): Promise<string>;
414
+
415
+ getTheme(threadID: ThreadID): Promise<any[]>;
416
+ getThemeInfo(threadID: ThreadID): Promise<{ threadName?: string; color?: string; emoji?: string; [key: string]: any }>;
417
+ setThreadTheme(threadID: ThreadID, themeID: string, callback?: Callback): Promise<void>;
418
+ setThreadThemeMqtt(threadID: ThreadID, themeID: string, callback?: Callback): Promise<void>;
419
+ createAITheme(prompt: string): Promise<{ id: string; [key: string]: any }[]>;
420
+
421
+ follow(senderID: UserID, follow: boolean, callback?: Callback): void;
422
+ unfriend(userID: UserID, callback?: Callback): Promise<void>;
423
+ friend(userID: UserID, callback?: Callback): Promise<void>;
424
+
425
+ emoji(emoji: string, threadID?: ThreadID, callback?: Callback<EmojiEvent>): Promise<EmojiEvent>;
426
+ gcname(newName: string, threadID?: ThreadID, callback?: Callback<GroupNameEvent>): Promise<GroupNameEvent>;
427
+ nickname(nickname: string, threadID: ThreadID, participantID: UserID, callback?: Callback<NicknameEvent>): Promise<NicknameEvent>;
428
+ theme(newName: string, threadID?: ThreadID, callback?: Callback<GroupNameEvent>): Promise<GroupNameEvent>;
429
+
430
+ comment(msg: string | CommentMessage, postID: string, replyCommentID?: string, callback?: Callback<CommentResult>): Promise<CommentResult>;
431
+ share(text: string, postID: string, callback?: Callback<ShareResult>): Promise<ShareResult>;
432
+ share(postID: string, callback?: Callback<ShareResult>): Promise<ShareResult>;
433
+
434
+ stickers: {
435
+ search(query: string): Promise<StickerInfo[]>;
436
+ listPacks(): Promise<StickerPackInfo[]>;
437
+ getStorePacks(): Promise<StickerPackInfo[]>;
438
+ listAllPacks(): Promise<StickerPackInfo[]>;
439
+ addPack(packID: string): Promise<AddedStickerPackInfo>;
440
+ getStickersInPack(packID: string): Promise<StickerInfo[]>;
441
+ getAiStickers(options?: { limit?: number }): Promise<StickerInfo[]>;
442
+ };
443
+
444
+ e2ee: {
445
+ enable(): void;
446
+ disable(): void;
447
+ isEnabled(): boolean;
448
+ getPublicKey(): string;
449
+ setPeerKey(threadID: ThreadID, peerPublicKeyB64: string): void;
450
+ clearPeerKey(threadID: ThreadID): void;
451
+ hasPeer(threadID: ThreadID): boolean;
452
+ encrypt(threadID: ThreadID, text: string): string;
453
+ decrypt(threadID: ThreadID, armored: string): string | null;
454
+ };
455
+
456
+ getBotInfo(callback?: Callback): Promise<any>;
457
+ getUserInfoV2(userID: UserID, callback?: Callback<UserInfo>): Promise<UserInfo>;
458
+
459
+ [key: string]: any;
460
+ }
461
+
462
+ export interface LoginCredentials {
463
+ appState?: any;
464
+ email?: string;
465
+ password?: string;
466
+ }
467
+
468
+ export interface LoginOptions {
469
+ online?: boolean;
470
+ selfListen?: boolean;
471
+ listenEvents?: boolean;
472
+ updatePresence?: boolean;
473
+ forceLogin?: boolean;
474
+ autoMarkDelivery?: boolean;
475
+ autoMarkRead?: boolean;
476
+ listenTyping?: boolean;
477
+ proxy?: string;
478
+ autoReconnect?: boolean;
479
+ userAgent?: string;
480
+ emitReady?: boolean;
481
+ randomUserAgent?: boolean;
482
+ bypassRegion?: string;
483
+ simulateTyping?: boolean;
484
+ maxConcurrentRequests?: number;
485
+ maxRequestsPerMinute?: number;
486
+ requestCooldownMs?: number;
487
+ errorCacheTtlMs?: number;
488
+ stealthMode?: boolean;
489
+ persona?: "desktop" | "android" | "mobile";
490
+ logging?: boolean;
491
+ }
492
+
493
+ export function login(
494
+ credentials: LoginCredentials,
495
+ options: LoginOptions | Callback<API>,
496
+ callback?: Callback<API>
497
+ ): Promise<API> | void;
498
+ }