import type { Agent } from 'https';
import type * as BaileysLib from '@whiskeysockets/baileys';
import type { WASocket } from '@whiskeysockets/baileys';
import { EngineEventCallbacks, EngineStatus } from '../interfaces/whatsapp-engine.interface';
import { type createLogger } from '../../common/services/logger.service';
import { BaileysAdapterConfig } from '../types/baileys.types';
import type { BaileysEvents } from './baileys-events';
import type { BaileysHistory } from './baileys-history';
import type { BaileysSessionStore } from './baileys-session-store';
export declare function createProxyAgent(proxyUrl: string): Agent;
export interface BaileysLifecycleHost {
    readonly logger: ReturnType<typeof createLogger>;
    readonly authPath: string;
    readonly config: BaileysAdapterConfig;
    readonly liveCalls: Map<string, {
        callFrom: string;
        expiresAt: number;
    }>;
    extractPhone(id: string | undefined): string | null;
    upsertContacts: BaileysSessionStore['upsertContacts'];
    upsertChats: BaileysSessionStore['upsertChats'];
    addLidMappings: BaileysSessionStore['addLidMappings'];
    handleMessagesUpsert: BaileysEvents['handleMessagesUpsert'];
    handleMessagesUpdate: BaileysEvents['handleMessagesUpdate'];
    logContactEvent: BaileysEvents['logContactEvent'];
    handleGroupParticipantsUpdate: BaileysEvents['handleGroupParticipantsUpdate'];
    handleGroupsUpdate: BaileysEvents['handleGroupsUpdate'];
    handleGroupJoinRequest: BaileysEvents['handleGroupJoinRequest'];
    handleCallEvents: BaileysEvents['handleCallEvents'];
    handlePresenceUpdate: BaileysEvents['handlePresenceUpdate'];
    captureHistoryMessages: BaileysHistory['captureHistoryMessages'];
    hydrateNames: BaileysHistory['hydrateNames'];
    getOnQRCode(): EngineEventCallbacks['onQRCode'];
    getOnReady(): EngineEventCallbacks['onReady'];
    getOnDisconnected(): EngineEventCallbacks['onDisconnected'];
    getOnError(): EngineEventCallbacks['onError'];
    getOnStateChanged(): EngineEventCallbacks['onStateChanged'];
    getOnCredentialTeardownStarted(): EngineEventCallbacks['onCredentialTeardownStarted'];
    getOnAccountRestriction(): EngineEventCallbacks['onAccountRestriction'];
}
export declare class BaileysLifecycle {
    private readonly host;
    private static readonly RECONNECT_STABILITY_RESET_MS;
    sock: WASocket | null;
    connectedAt: number;
    private status;
    private qrCode;
    private phoneNumber;
    private pushName;
    private intentionalClose;
    private readonly versionResolver;
    private connecting;
    private reconnectAttempts;
    private reconnectTimer?;
    private lastConnectionCloseAt;
    private lib?;
    constructor(host: BaileysLifecycleHost);
    loadLib(): Promise<typeof BaileysLib>;
    initialize(): Promise<void>;
    private connect;
    private connectInner;
    private handleConnectionUpdate;
    private reportReachoutTimelock;
    private probeAccountRestriction;
    private scheduleReconnect;
    private handleQrCode;
    disconnect(): Promise<void>;
    logout(): Promise<void>;
    private localSocketShutdown;
    private handleRemoteLoggedOut;
    private clearAuthState;
    destroy(): Promise<void>;
    forceDestroy(): Promise<void>;
    getStatus(): EngineStatus;
    probeLiveness(): Promise<boolean>;
    getQRCode(): string | null;
    requestPairingCode(phoneNumber: string): Promise<string>;
    getPhoneNumber(): string | null;
    getPushName(): string | null;
    ensureReady(): void;
    private setStatus;
}
