/// export * from './Auth'; export * from './GroupMetadata'; export * from './Chat'; export * from './Contact'; export * from './State'; export * from './Message'; import type EventEmitter from "events"; import type { Agent } from "https"; import type { Logger } from "pino"; import type { URL } from "url"; import { AuthenticationState } from './Auth'; import { Chat, PresenceData } from './Chat'; import { Contact } from './Contact'; import { ConnectionState } from './State'; import { GroupMetadata, ParticipantAction } from './GroupMetadata'; import { MessageInfoUpdate, MessageUpdateType, WAMessage, WAMessageUpdate } from './Message'; export declare type WAVersion = [number, number, number]; export declare type WABrowserDescription = [string, string, string]; export declare type ReconnectMode = 'no-reconnects' | 'on-any-error' | 'on-connection-error'; export declare type SocketConfig = { /** provide an auth state object to maintain the auth state */ auth?: AuthenticationState; /** the WS url to connect to WA */ waWebSocketUrl: string | URL; /** Fails the connection if the socket times out in this interval */ connectTimeoutMs: number; /** 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; }; export declare enum DisconnectReason { connectionClosed = 428, connectionLost = 408, timedOut = 408, loggedOut = 401, badSession = 500, restartRequired = 410 } export declare type WAInitResponse = { ref: string; ttl: number; status: 200; }; declare type WABusinessHoursConfig = { day_of_week: string; mode: string; open_time?: number; close_time?: number; }; export declare type WABusinessProfile = { description: string; email: string; business_hours: { timezone: string; config?: WABusinessHoursConfig[]; business_config?: WABusinessHoursConfig[]; }; website: string[]; categories: { id: string; localized_display_name: string; }[]; wid?: string; }; export declare type CurveKeyPair = { private: Uint8Array; public: Uint8Array; }; export declare type BaileysEventMap = { /** connection state has been updated -- WS closed, opened, connecting etc. */ 'connection.update': Partial; /** auth state updated -- some pre keys, or identity keys etc. */ 'auth-state.update': AuthenticationState; /** set chats (history sync), messages are reverse chronologically sorted */ 'chats.set': { chats: Chat[]; messages: WAMessage[]; }; /** upsert chats */ 'chats.upsert': Chat[]; /** update the given chats */ 'chats.update': Partial[]; /** delete chats with given ID */ 'chats.delete': string[]; /** presence of contact in a chat updated */ 'presence.update': { id: string; presences: { [participant: string]: PresenceData; }; }; 'contacts.set': { contacts: Chat[]; }; 'contacts.upsert': Contact[]; 'contacts.update': Partial[]; 'messages.delete': { jid: string; ids: string[]; } | { jid: string; all: true; }; 'messages.update': WAMessageUpdate[]; /** * add/update the given messages. If they were received while the connection was online, * the update will have type: "notify" * */ 'messages.upsert': { messages: WAMessage[]; type: MessageUpdateType; }; 'message-info.update': MessageInfoUpdate[]; 'groups.update': Partial[]; /** apply an action to participants in a group */ 'group-participants.update': { id: string; participants: string[]; action: ParticipantAction; }; 'blocklist.set': { blocklist: string[]; }; 'blocklist.update': { blocklist: string[]; type: 'add' | 'remove'; }; }; export interface BaileysEventEmitter extends EventEmitter { on(event: T, listener: (arg: BaileysEventMap[T]) => void): this; off(event: T, listener: (arg: BaileysEventMap[T]) => void): this; removeAllListeners(event: T): this; emit(event: T, arg: BaileysEventMap[T]): boolean; }