/// import { AxiosRequestConfig } from "axios"; import type { Agent } from "https"; import type NodeCache from "node-cache"; import type { Logger } from "pino"; import type { URL } from "url"; import { proto } from "../../WAProto"; import { AuthenticationState, TransactionCapabilityOptions } from "./Auth"; import { MediaConnInfo } from "./Message"; export declare type WAVersion = [number, number, number]; export declare type WABrowserDescription = [string, string, string]; export declare type MessageRetryMap = { [msgId: string]: number; }; export declare type SocketConfig = { /** the WS url to connect to WA */ waWebSocketUrl: string | URL; /** Fails the connection if the socket times out in this interval */ connectTimeoutMs: number; /** Default timeout for queries, undefined for no timeout */ defaultQueryTimeoutMs: number | undefined; /** ping-pong interval for WS connection */ keepAliveIntervalMs: number; /** proxy agent */ agent?: Agent; /** pino logger */ logger: Logger; /** version to connect with */ version: WAVersion; /** override browser config */ browser: WABrowserDescription; /** agent used for fetch requests -- uploading/downloading media */ fetchAgent?: Agent; /** should the QR be printed in the terminal */ printQRInTerminal: boolean; /** should events be emitted for actions done by this socket connection */ emitOwnEvents: boolean; /** provide a cache to store media, so does not have to be re-uploaded */ mediaCache?: NodeCache; /** custom upload hosts to upload media to */ customUploadHosts: MediaConnInfo["hosts"]; /** time to wait between sending new retry requests */ retryRequestDelayMs: number; /** time to wait for the generation of the next QR in ms */ qrTimeout?: number; /** provide an auth state object to maintain the auth state */ auth: AuthenticationState; /** manage history processing with this control; by default will sync up everything */ shouldSyncHistoryMessage: (msg: proto.Message.IHistorySyncNotification) => boolean; /** transaction capability options for SignalKeyStore */ transactionOpts: TransactionCapabilityOptions; /** provide a cache to store a user's device list */ userDevicesCache?: NodeCache; /** provide a cache to store metadata, used to prevent redundant requests to WA & speed up msg sending. Pass undefined to disable */ groupMetadataCache?: NodeCache; /** provide a cache to store recently sent messages, used to resend the message when someone fails to decrypt it (waiting for this message problem). Default cache store message per 20 seconds. Pass undefined to disable*/ sentMessagesCache?: NodeCache; /** marks the client as online whenever the socket successfully connects */ markOnlineOnConnect: boolean; /** * map to store the retry counts for failed messages; * used to determine whether to retry a message or not */ msgRetryCounterMap?: MessageRetryMap; /** width for link preview images */ linkPreviewImageThumbnailWidth: number; /** Should Baileys ask the phone for full history, will be received async */ syncFullHistory: boolean; /** Should baileys fire init queries automatically, default true */ fireInitQueries: boolean; /** * generate a high quality link preview, * entails uploading the jpegThumbnail to WA * */ generateHighQualityLinkPreview: boolean; /** * Returns if a jid should be ignored, * no event for that jid will be triggered. * Messages from that jid will also not be decrypted * */ shouldIgnoreJid: (jid: string) => boolean | undefined; /** options for axios */ options: AxiosRequestConfig; /** * fetch a message from your store * implement this so that messages failed to send (solves the "this message can take a while" issue) can be retried. * `reason: "secret"` signals the caller only needs `messageContextInfo.messageSecret`, so the consumer can return a minimal shape. * */ getMessage: (key: proto.IMessageKey, reason?: GetMessageReason) => Promise; }; export declare type GetMessageReason = "retry" | "bad-ack" | "secret";