@neelegirl/baileys 1.5.5 → 1.5.7

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 (203) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +183 -10
  3. package/WAProto/WAProto.proto +5007 -0
  4. package/WAProto/index.d.ts +57712 -0
  5. package/WAProto/index.js +178969 -0
  6. package/lib/Defaults/baileys-version.json +3 -0
  7. package/lib/Defaults/index.d.ts +68 -0
  8. package/lib/Defaults/index.js +137 -0
  9. package/lib/Defaults/phonenumber-mcc.json +223 -0
  10. package/lib/Signal/WASignalGroup/GroupProtocol.js +1909 -0
  11. package/lib/Signal/WASignalGroup/ciphertext_message.js +16 -0
  12. package/lib/Signal/WASignalGroup/generate-proto.sh +1 -0
  13. package/lib/Signal/WASignalGroup/group.proto +42 -0
  14. package/lib/Signal/WASignalGroup/group_cipher.js +120 -0
  15. package/lib/Signal/WASignalGroup/group_session_builder.js +46 -0
  16. package/lib/Signal/WASignalGroup/index.js +6 -0
  17. package/lib/Signal/WASignalGroup/keyhelper.js +21 -0
  18. package/lib/Signal/WASignalGroup/protobufs.js +3 -0
  19. package/lib/Signal/WASignalGroup/queue_job.js +69 -0
  20. package/lib/Signal/WASignalGroup/readme.md +6 -0
  21. package/lib/Signal/WASignalGroup/sender_chain_key.js +50 -0
  22. package/lib/Signal/WASignalGroup/sender_key_distribution_message.js +78 -0
  23. package/lib/Signal/WASignalGroup/sender_key_message.js +92 -0
  24. package/lib/Signal/WASignalGroup/sender_key_name.js +70 -0
  25. package/lib/Signal/WASignalGroup/sender_key_record.js +56 -0
  26. package/lib/Signal/WASignalGroup/sender_key_state.js +129 -0
  27. package/lib/Signal/WASignalGroup/sender_message_key.js +39 -0
  28. package/lib/Signal/libsignal.d.ts +4 -0
  29. package/lib/Signal/libsignal.js +162 -0
  30. package/lib/Socket/Client/abstract-socket-client.d.ts +15 -0
  31. package/lib/Socket/Client/abstract-socket-client.js +13 -0
  32. package/lib/Socket/Client/index.d.ts +2 -0
  33. package/lib/Socket/Client/index.js +22 -0
  34. package/lib/Socket/Client/mobile-socket-client.d.ts +12 -0
  35. package/lib/Socket/Client/mobile-socket-client.js +65 -0
  36. package/lib/Socket/Client/types.d.ts +16 -0
  37. package/lib/Socket/Client/types.js +18 -0
  38. package/lib/Socket/Client/websocket.d.ts +13 -0
  39. package/lib/Socket/Client/websocket.js +62 -0
  40. package/lib/Socket/business.d.ts +187 -0
  41. package/lib/Socket/business.js +268 -0
  42. package/lib/Socket/chats.d.ts +98 -0
  43. package/lib/Socket/chats.js +1113 -0
  44. package/lib/Socket/communities.d.ts +223 -0
  45. package/lib/Socket/communities.js +433 -0
  46. package/lib/Socket/groups.d.ts +131 -0
  47. package/lib/Socket/groups.js +352 -0
  48. package/lib/Socket/index.d.ts +191 -0
  49. package/lib/Socket/index.js +23 -0
  50. package/lib/Socket/messages-recv.d.ts +177 -0
  51. package/lib/Socket/messages-recv.js +1764 -0
  52. package/lib/Socket/messages-send.d.ts +168 -0
  53. package/lib/Socket/messages-send.js +1303 -0
  54. package/lib/Socket/mex.d.ts +2 -0
  55. package/lib/Socket/mex.js +47 -0
  56. package/lib/Socket/newsletter.d.ts +147 -0
  57. package/lib/Socket/newsletter.js +286 -0
  58. package/lib/Socket/registration.d.ts +266 -0
  59. package/lib/Socket/registration.js +166 -0
  60. package/lib/Socket/socket.d.ts +45 -0
  61. package/lib/Socket/socket.js +766 -0
  62. package/lib/Socket/usync.d.ts +37 -0
  63. package/lib/Socket/usync.js +83 -0
  64. package/lib/Store/index.d.ts +4 -0
  65. package/lib/Store/index.js +24 -0
  66. package/lib/Store/make-cache-manager-store.d.ts +14 -0
  67. package/lib/Store/make-cache-manager-store.js +90 -0
  68. package/lib/Store/make-in-memory-store.d.ts +123 -0
  69. package/lib/Store/make-in-memory-store.js +429 -0
  70. package/lib/Store/make-ordered-dictionary.d.ts +12 -0
  71. package/lib/Store/make-ordered-dictionary.js +86 -0
  72. package/lib/Store/object-repository.d.ts +10 -0
  73. package/lib/Store/object-repository.js +31 -0
  74. package/lib/Types/Auth.d.ts +120 -0
  75. package/lib/Types/Auth.js +3 -0
  76. package/lib/Types/Call.d.ts +14 -0
  77. package/lib/Types/Call.js +3 -0
  78. package/lib/Types/Chat.d.ts +138 -0
  79. package/lib/Types/Chat.js +9 -0
  80. package/lib/Types/Contact.d.ts +20 -0
  81. package/lib/Types/Contact.js +3 -0
  82. package/lib/Types/Events.d.ts +229 -0
  83. package/lib/Types/Events.js +3 -0
  84. package/lib/Types/GroupMetadata.d.ts +66 -0
  85. package/lib/Types/GroupMetadata.js +3 -0
  86. package/lib/Types/Label.d.ts +48 -0
  87. package/lib/Types/Label.js +31 -0
  88. package/lib/Types/LabelAssociation.d.ts +35 -0
  89. package/lib/Types/LabelAssociation.js +13 -0
  90. package/lib/Types/Message.d.ts +473 -0
  91. package/lib/Types/Message.js +13 -0
  92. package/lib/Types/MexUpdates.d.ts +9 -0
  93. package/lib/Types/MexUpdates.js +18 -0
  94. package/lib/Types/Newsletter.d.ts +109 -0
  95. package/lib/Types/Newsletter.js +40 -0
  96. package/lib/Types/Product.d.ts +92 -0
  97. package/lib/Types/Product.js +3 -0
  98. package/lib/Types/Signal.d.ts +68 -0
  99. package/lib/Types/Signal.js +3 -0
  100. package/lib/Types/Socket.d.ts +122 -0
  101. package/lib/Types/Socket.js +3 -0
  102. package/lib/Types/State.d.ts +41 -0
  103. package/lib/Types/State.js +14 -0
  104. package/lib/Types/USync.d.ts +26 -0
  105. package/lib/Types/USync.js +3 -0
  106. package/lib/Types/index.d.ts +79 -0
  107. package/lib/Types/index.js +48 -0
  108. package/lib/Utils/auth-utils.d.ts +21 -0
  109. package/lib/Utils/auth-utils.js +205 -0
  110. package/lib/Utils/baileys-event-stream.d.ts +18 -0
  111. package/lib/Utils/baileys-event-stream.js +70 -0
  112. package/lib/Utils/business.d.ts +29 -0
  113. package/lib/Utils/business.js +255 -0
  114. package/lib/Utils/chat-utils.d.ts +82 -0
  115. package/lib/Utils/chat-utils.js +781 -0
  116. package/lib/Utils/check-npm-version.d.ts +15 -0
  117. package/lib/Utils/check-npm-version.js +52 -0
  118. package/lib/Utils/crypto.d.ts +56 -0
  119. package/lib/Utils/crypto.js +179 -0
  120. package/lib/Utils/decode-wa-message.d.ts +41 -0
  121. package/lib/Utils/decode-wa-message.js +253 -0
  122. package/lib/Utils/event-buffer.d.ts +39 -0
  123. package/lib/Utils/event-buffer.js +565 -0
  124. package/lib/Utils/generics.d.ts +129 -0
  125. package/lib/Utils/generics.js +618 -0
  126. package/lib/Utils/history.d.ts +23 -0
  127. package/lib/Utils/history.js +110 -0
  128. package/lib/Utils/index.d.ts +19 -0
  129. package/lib/Utils/index.js +41 -0
  130. package/lib/Utils/link-preview.d.ts +23 -0
  131. package/lib/Utils/link-preview.js +120 -0
  132. package/lib/Utils/logger.d.ts +13 -0
  133. package/lib/Utils/logger.js +7 -0
  134. package/lib/Utils/lt-hash.d.ts +14 -0
  135. package/lib/Utils/lt-hash.js +58 -0
  136. package/lib/Utils/make-mutex.d.ts +9 -0
  137. package/lib/Utils/make-mutex.js +49 -0
  138. package/lib/Utils/message-retry-manager.d.ts +82 -0
  139. package/lib/Utils/message-retry-manager.js +177 -0
  140. package/lib/Utils/messages-media.d.ts +129 -0
  141. package/lib/Utils/messages-media.js +806 -0
  142. package/lib/Utils/messages.d.ts +103 -0
  143. package/lib/Utils/messages.js +1579 -0
  144. package/lib/Utils/noise-handler.d.ts +20 -0
  145. package/lib/Utils/noise-handler.js +155 -0
  146. package/lib/Utils/process-message.d.ts +49 -0
  147. package/lib/Utils/process-message.js +428 -0
  148. package/lib/Utils/signal.d.ts +42 -0
  149. package/lib/Utils/signal.js +166 -0
  150. package/lib/Utils/use-mongo-file-auth-state.d.ts +6 -0
  151. package/lib/Utils/use-mongo-file-auth-state.js +84 -0
  152. package/lib/Utils/use-multi-file-auth-state.d.ts +18 -0
  153. package/lib/Utils/use-multi-file-auth-state.js +238 -0
  154. package/lib/Utils/use-single-file-auth-state.d.ts +13 -0
  155. package/lib/Utils/use-single-file-auth-state.js +80 -0
  156. package/lib/Utils/validate-connection.d.ts +13 -0
  157. package/lib/Utils/validate-connection.js +187 -0
  158. package/lib/WABinary/constants.d.ts +30 -0
  159. package/lib/WABinary/constants.js +1316 -0
  160. package/lib/WABinary/decode.d.ts +9 -0
  161. package/lib/WABinary/decode.js +288 -0
  162. package/lib/WABinary/encode.d.ts +3 -0
  163. package/lib/WABinary/encode.js +265 -0
  164. package/lib/WABinary/generic-utils.d.ts +28 -0
  165. package/lib/WABinary/generic-utils.js +142 -0
  166. package/lib/WABinary/index.d.ts +5 -0
  167. package/lib/WABinary/index.js +25 -0
  168. package/lib/WABinary/jid-utils.d.ts +53 -0
  169. package/lib/WABinary/jid-utils.js +92 -0
  170. package/lib/WABinary/types.d.ts +22 -0
  171. package/lib/WABinary/types.js +3 -0
  172. package/lib/WAM/BinaryInfo.d.ts +16 -0
  173. package/lib/WAM/BinaryInfo.js +17 -0
  174. package/lib/WAM/constants.d.ts +47 -0
  175. package/lib/WAM/constants.js +15371 -0
  176. package/lib/WAM/encode.d.ts +3 -0
  177. package/lib/WAM/encode.js +165 -0
  178. package/lib/WAM/index.d.ts +3 -0
  179. package/lib/WAM/index.js +23 -0
  180. package/lib/WAUSync/Protocols/USyncBotProfileProtocol.d.ts +28 -0
  181. package/lib/WAUSync/Protocols/USyncBotProfileProtocol.js +69 -0
  182. package/lib/WAUSync/Protocols/USyncContactProtocol.d.ts +10 -0
  183. package/lib/WAUSync/Protocols/USyncContactProtocol.js +36 -0
  184. package/lib/WAUSync/Protocols/USyncDeviceProtocol.d.ts +26 -0
  185. package/lib/WAUSync/Protocols/USyncDeviceProtocol.js +62 -0
  186. package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.d.ts +14 -0
  187. package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.js +35 -0
  188. package/lib/WAUSync/Protocols/USyncLIDProtocol.d.ts +9 -0
  189. package/lib/WAUSync/Protocols/USyncLIDProtocol.js +30 -0
  190. package/lib/WAUSync/Protocols/USyncStatusProtocol.d.ts +14 -0
  191. package/lib/WAUSync/Protocols/USyncStatusProtocol.js +46 -0
  192. package/lib/WAUSync/Protocols/index.d.ts +6 -0
  193. package/lib/WAUSync/Protocols/index.js +26 -0
  194. package/lib/WAUSync/USyncQuery.d.ts +31 -0
  195. package/lib/WAUSync/USyncQuery.js +92 -0
  196. package/lib/WAUSync/USyncUser.d.ts +12 -0
  197. package/lib/WAUSync/USyncUser.js +30 -0
  198. package/lib/WAUSync/index.d.ts +3 -0
  199. package/lib/WAUSync/index.js +23 -0
  200. package/lib/index.d.ts +13 -0
  201. package/lib/index.js +33 -0
  202. package/package.json +88 -10
  203. package/index.js +0 -38
@@ -0,0 +1,37 @@
1
+ import { Boom } from '@hapi/boom'
2
+ import { SocketConfig } from '../Types'
3
+ import { BinaryNode } from '../WABinary'
4
+ import { USyncQuery } from '../WAUSync'
5
+
6
+ export declare const makeUSyncSocket: (config: SocketConfig) => {
7
+ executeUSyncQuery: (usyncQuery: USyncQuery) => Promise<import("../WAUSync").USyncQueryResult | undefined>
8
+ type: "md"
9
+ ws: import("./Client").WebSocketClient
10
+ ev: import("../Types").BaileysEventEmitter & {
11
+ process(handler: (events: Partial<import("../Types").BaileysEventMap>) => void | Promise<void>): () => void
12
+ buffer(): void
13
+ createBufferedFunction<A extends any[], T>(work: (...args: A) => Promise<T>): (...args: A) => Promise<T>
14
+ flush(force?: boolean | undefined): boolean
15
+ isBuffering(): boolean
16
+ }
17
+ authState: {
18
+ creds: import("../Types").AuthenticationCreds
19
+ keys: import("../Types").SignalKeyStoreWithTransaction
20
+ }
21
+ signalRepository: import("../Types").SignalRepository
22
+ user: import("../Types").Contact | undefined
23
+ generateMessageTag: () => string
24
+ query: (node: BinaryNode, timeoutMs?: number | undefined) => Promise<BinaryNode>
25
+ waitForMessage: <T_1>(msgId: string, timeoutMs?: number | undefined) => Promise<T_1>
26
+ waitForSocketOpen: () => Promise<void>
27
+ sendRawMessage: (data: Uint8Array | Buffer) => Promise<void>
28
+ sendNode: (frame: BinaryNode) => Promise<void>
29
+ logout: (msg?: string | undefined) => Promise<void>
30
+ end: (error: Error | undefined) => void
31
+ onUnexpectedError: (err: Error | Boom<any>, msg: string) => void
32
+ uploadPreKeys: (count?: number) => Promise<void>
33
+ uploadPreKeysToServerIfRequired: () => Promise<void>
34
+ requestPairingCode: (phoneNumber: string, code?: string) => Promise<string>
35
+ waitForConnectionUpdate: (check: (u: Partial<import("../Types").ConnectionState>) => boolean | undefined, timeoutMs?: number | undefined) => Promise<void>
36
+ sendWAMBuffer: (wamBuffer: Buffer) => Promise<BinaryNode>
37
+ }
@@ -0,0 +1,83 @@
1
+ "use strict"
2
+
3
+ Object.defineProperty(exports, "__esModule", { value: true })
4
+
5
+ const boom_1 = require("@hapi/boom")
6
+ const WABinary_1 = require("../WABinary")
7
+ const socket_1 = require("./socket")
8
+
9
+ const makeUSyncSocket = (config) => {
10
+ const Neele = socket_1.makeSocket(config)
11
+ const { generateMessageTag, query, } = Neele
12
+
13
+ const executeUSyncQuery = async (usyncQuery) => {
14
+ if (usyncQuery.protocols.length === 0) {
15
+ throw new boom_1.Boom('USyncQuery must have at least one protocol')
16
+ }
17
+
18
+ // todo: validate users, throw WARNING on no valid users
19
+ // variable below has only validated users
20
+ const validUsers = usyncQuery.users
21
+
22
+ const userNodes = validUsers.map((user) => {
23
+ return {
24
+ tag: 'user',
25
+ attrs: {
26
+ jid: !user.phone ? user.id : undefined,
27
+ },
28
+ content: usyncQuery.protocols
29
+ .map((a) => a.getUserElement(user))
30
+ .filter(a => a !== null)
31
+ }
32
+ })
33
+
34
+ const listNode = {
35
+ tag: 'list',
36
+ attrs: {},
37
+ content: userNodes
38
+ }
39
+
40
+ const queryNode = {
41
+ tag: 'query',
42
+ attrs: {},
43
+ content: usyncQuery.protocols.map((a) => a.getQueryElement())
44
+ }
45
+
46
+ const iq = {
47
+ tag: 'iq',
48
+ attrs: {
49
+ to: WABinary_1.S_WHATSAPP_NET,
50
+ type: 'get',
51
+ xmlns: 'usync',
52
+ },
53
+ content: [
54
+ {
55
+ tag: 'usync',
56
+ attrs: {
57
+ context: usyncQuery.context,
58
+ mode: usyncQuery.mode,
59
+ sid: generateMessageTag(),
60
+ last: 'true',
61
+ index: '0',
62
+ },
63
+ content: [
64
+ queryNode,
65
+ listNode
66
+ ]
67
+ }
68
+ ],
69
+ }
70
+
71
+ const result = await query(iq)
72
+
73
+ return usyncQuery.parseUSyncQueryResult(result)
74
+ }
75
+ return {
76
+ ...Neele,
77
+ executeUSyncQuery
78
+ }
79
+ }
80
+
81
+ module.exports = {
82
+ makeUSyncSocket
83
+ }
@@ -0,0 +1,4 @@
1
+ export * from './make-cache-manager-store'
2
+ export * from './make-in-memory-store'
3
+ export * from './make-ordered-dictionary'
4
+ export * from './object-repository'
@@ -0,0 +1,24 @@
1
+ "use strict"
2
+
3
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
4
+ if (k2 === undefined) k2 = k
5
+ var desc = Object.getOwnPropertyDescriptor(m, k)
6
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
7
+ desc = { enumerable: true, get: function() { return m[k] } }
8
+ }
9
+ Object.defineProperty(o, k2, desc)
10
+ }) : (function(o, m, k, k2) {
11
+ if (k2 === undefined) k2 = k
12
+ o[k2] = m[k]
13
+ }))
14
+
15
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
16
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p)
17
+ }
18
+
19
+ Object.defineProperty(exports, "__esModule", { value: true })
20
+
21
+ __exportStar(require("./make-cache-manager-store"), exports)
22
+ __exportStar(require("./make-in-memory-store"), exports)
23
+ __exportStar(require("./make-ordered-dictionary"), exports)
24
+ __exportStar(require("./object-repository"), exports)
@@ -0,0 +1,14 @@
1
+ import { Store } from 'cache-manager'
2
+ import { AuthenticationCreds } from '../Types'
3
+
4
+ export declare const makeCacheManagerAuthState: (store: Store, sessionKey: string) => Promise<{
5
+ clearState: () => Promise<void>
6
+ saveCreds: () => Promise<void>
7
+ state: {
8
+ creds: AuthenticationCreds
9
+ keys: {
10
+ get: (type: string, ids: string[]) => Promise<{}>
11
+ set: (data: any) => Promise<void>
12
+ }
13
+ }
14
+ }>
@@ -0,0 +1,90 @@
1
+ "use strict"
2
+
3
+ var __importDefault = (this && this.__importDefault) || function (mod) {
4
+ return (mod && mod.__esModule) ? mod : { "default": mod }
5
+ }
6
+
7
+ Object.defineProperty(exports, "__esModule", { value: true })
8
+
9
+ const cache_manager_1 = require("cache-manager")
10
+ const WAProto_1 = require("../../WAProto")
11
+ const Utils_1 = require("../Utils")
12
+ const logger_1 = __importDefault(require("../Utils/logger"))
13
+
14
+ const makeCacheManagerAuthState = async (store, sessionKey) => {
15
+ const defaultKey = (file) => `${sessionKey}:${file}`
16
+ const databaseConn = await cache_manager_1.caching(store)
17
+ const writeData = async (file, data) => {
18
+ let ttl = undefined
19
+ if (file === 'creds') {
20
+ ttl = 63115200 // 2 years
21
+ }
22
+ await databaseConn.set(defaultKey(file), JSON.stringify(data, Utils_1.BufferJSON.replacer), ttl)
23
+ }
24
+ const readData = async (file) => {
25
+ try {
26
+ const data = await databaseConn.get(defaultKey(file))
27
+ if (data) {
28
+ return JSON.parse(data, Utils_1.BufferJSON.reviver)
29
+ }
30
+ return null
31
+ }
32
+ catch (error) {
33
+ logger_1.default.error(error)
34
+ return null
35
+ }
36
+ }
37
+ const removeData = async (file) => {
38
+ try {
39
+ return await databaseConn.del(defaultKey(file))
40
+ }
41
+ catch (_a) {
42
+ logger_1.default.error(`Error removing ${file} from session ${sessionKey}`)
43
+ }
44
+ }
45
+ const clearState = async () => {
46
+ try {
47
+ const result = await databaseConn.store.keys(`${sessionKey}*`)
48
+ await Promise.all(result.map(async (key) => await databaseConn.del(key)))
49
+ }
50
+ catch (err) {
51
+ }
52
+ }
53
+ const creds = (await readData('creds')) || (0, Utils_1.initAuthCreds)()
54
+ return {
55
+ clearState,
56
+ saveCreds: () => writeData('creds', creds),
57
+ state: {
58
+ creds,
59
+ keys: {
60
+ get: async (type, ids) => {
61
+ const data = {}
62
+ await Promise.all(ids.map(async (id) => {
63
+ let value = await readData(`${type}-${id}`)
64
+ if (type === 'app-state-sync-key' && value) {
65
+ value = WAProto_1.proto.Message.AppStateSyncKeyData.fromObject(value)
66
+ }
67
+ data[id] = value
68
+ }))
69
+ return data
70
+ },
71
+ set: async (data) => {
72
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
73
+ const tasks = []
74
+ for (const category in data) {
75
+ for (const id in data[category]) {
76
+ const value = data[category][id]
77
+ const key = `${category}-${id}`
78
+ tasks.push(value ? writeData(key, value) : removeData(key))
79
+ }
80
+ }
81
+ await Promise.all(tasks)
82
+ },
83
+ }
84
+ }
85
+ }
86
+ }
87
+
88
+ module.exports = {
89
+ makeCacheManagerAuthState
90
+ }
@@ -0,0 +1,123 @@
1
+ import type KeyedDB from '@adiwajshing/keyed-db'
2
+ import type { Comparable } from '@adiwajshing/keyed-db/lib/Types'
3
+ import type { Logger } from 'pino'
4
+ import { proto } from '../../WAProto'
5
+ import type makeMDSocket from '../Socket'
6
+ import type { BaileysEventEmitter, Chat, ConnectionState, Contact, GroupMetadata, PresenceData, WAMessage, WAMessageCursor, WAMessageKey } from '../Types'
7
+ import { Label } from '../Types/Label'
8
+ import { LabelAssociation } from '../Types/LabelAssociation'
9
+ import { ObjectRepository } from './object-repository'
10
+
11
+ type WASocket = ReturnType<typeof makeMDSocket>
12
+
13
+ export declare const waChatKey: (pin: boolean) => {
14
+ key: (c: Chat) => string
15
+ compare: (k1: string, k2: string) => number
16
+ }
17
+
18
+ export declare const waMessageID: (m: WAMessage) => string
19
+
20
+ export declare const waLabelAssociationKey: Comparable<LabelAssociation, string>
21
+
22
+ export type BaileysInMemoryStoreConfig = {
23
+ chatKey?: Comparable<Chat, string>
24
+ labelAssociationKey?: Comparable<LabelAssociation, string>
25
+ logger?: Logger
26
+ socket?: WASocket
27
+ }
28
+
29
+ export declare const makeInMemoryStore: (config: BaileysInMemoryStoreConfig) => {
30
+ chats: KeyedDB<Chat, string>
31
+ contacts: {
32
+ [_: string]: Contact
33
+ }
34
+ messages: {
35
+ [_: string]: {
36
+ array: proto.IWebMessageInfo[]
37
+ get: (id: string) => proto.IWebMessageInfo | undefined
38
+ upsert: (item: proto.IWebMessageInfo, mode: "append" | "prepend") => void
39
+ update: (item: proto.IWebMessageInfo) => boolean
40
+ remove: (item: proto.IWebMessageInfo) => boolean
41
+ updateAssign: (id: string, update: Partial<proto.IWebMessageInfo>) => boolean
42
+ clear: () => void
43
+ filter: (contain: (item: proto.IWebMessageInfo) => boolean) => void
44
+ toJSON: () => proto.IWebMessageInfo[]
45
+ fromJSON: (newItems: proto.IWebMessageInfo[]) => void
46
+ }
47
+ }
48
+ groupMetadata: {
49
+ [_: string]: GroupMetadata
50
+ }
51
+ state: ConnectionState
52
+ presences: {
53
+ [id: string]: {
54
+ [participant: string]: PresenceData
55
+ }
56
+ }
57
+ labels: ObjectRepository<Label>
58
+ labelAssociations: KeyedDB<LabelAssociation, string>
59
+ bind: (ev: BaileysEventEmitter) => void
60
+ /** loads messages from the store, if not found -- uses the legacy connection */
61
+ loadMessages: (jid: string, count: number, cursor: WAMessageCursor) => Promise<proto.IWebMessageInfo[]>
62
+ /**
63
+ * Get all available labels for profile
64
+ *
65
+ * Keep in mind that the list is formed from predefined tags and tags
66
+ * that were "caught" during their editing.
67
+ */
68
+ getLabels: () => ObjectRepository<Label>
69
+ /**
70
+ * Get labels for chat
71
+ *
72
+ * @returns Label IDs
73
+ **/
74
+ getChatLabels: (chatId: string) => LabelAssociation[]
75
+ /**
76
+ * Get labels for message
77
+ *
78
+ * @returns Label IDs
79
+ **/
80
+ getMessageLabels: (messageId: string) => string[]
81
+ loadMessage: (jid: string, id: string) => Promise<proto.IWebMessageInfo | undefined>
82
+ mostRecentMessage: (jid: string) => Promise<proto.IWebMessageInfo>
83
+ fetchImageUrl: (jid: string, Neele: WASocket | undefined) => Promise<string | null | undefined>
84
+ fetchGroupMetadata: (jid: string, Neele: WASocket | undefined) => Promise<GroupMetadata>
85
+ fetchMessageReceipts: ({ remoteJid, id }: WAMessageKey) => Promise<proto.IUserReceipt[] | null | undefined>
86
+ toJSON: () => {
87
+ chats: KeyedDB<Chat, string>
88
+ contacts: {
89
+ [_: string]: Contact
90
+ }
91
+ messages: {
92
+ [_: string]: {
93
+ array: proto.IWebMessageInfo[]
94
+ get: (id: string) => proto.IWebMessageInfo | undefined
95
+ upsert: (item: proto.IWebMessageInfo, mode: "append" | "prepend") => void
96
+ update: (item: proto.IWebMessageInfo) => boolean
97
+ remove: (item: proto.IWebMessageInfo) => boolean
98
+ updateAssign: (id: string, update: Partial<proto.IWebMessageInfo>) => boolean
99
+ clear: () => void
100
+ filter: (contain: (item: proto.IWebMessageInfo) => boolean) => void
101
+ toJSON: () => proto.IWebMessageInfo[]
102
+ fromJSON: (newItems: proto.IWebMessageInfo[]) => void
103
+ }
104
+ }
105
+ labels: ObjectRepository<Label>
106
+ labelAssociations: KeyedDB<LabelAssociation, string>
107
+ }
108
+ fromJSON: (json: {
109
+ chats: Chat[]
110
+ contacts: {
111
+ [id: string]: Contact
112
+ }
113
+ messages: {
114
+ [id: string]: proto.IWebMessageInfo[]
115
+ }
116
+ labels: {
117
+ [labelId: string]: Label
118
+ }
119
+ labelAssociations: LabelAssociation[]
120
+ }) => void
121
+ writeToFile: (path: string) => void
122
+ readFromFile: (path: string) => void
123
+ }