///
import type { Agent } from "https";
import type { Logger } from "pino";
import type { URL } from "url";
import { MediaConnInfo } from "./Message";
import { AxiosRequestConfig } from 'axios';
import { proto } from '../Proto';
export declare type WAVersion = [number, number, number];
export declare type WABrowserDescription = [string, string, string];
export declare type CommonSocketConfig = {
/** provide an auth state object to maintain the auth state */
auth?: T;
/** 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?: CacheStore;
shouldIgnoreJid: (jid: string) => boolean | undefined;
customUploadHosts: MediaConnInfo['hosts'];
treatCiphertextMessagesAsReal: boolean;
retryRequestDelayMs: number;
msgRetryCounterCache?: CacheStore;
userDevicesCache?: CacheStore;
options: AxiosRequestConfig<{}>;
patchMessageBeforeSending: (msg: proto.IMessage, recipientJids: string[]) => Promise | proto.IMessage;
};
export declare type CacheStore = {
get(key: string): T | undefined;
set(key: string, value: T): void;
del(key: string): void;
flushAll(): void;
};