import { Client } from '@xmpp/client';
import { Iso639_1Codes, XmppClientInterface, xmppSettingsInterface, IMessage } from '../types/types';
import { AllRoomPresenceSummary } from './xmpp/allRoomPresences.xmpp';
type HistorySource = 'active' | 'send_ack' | 'background' | 'default';
export declare class XmppClient implements XmppClientInterface {
    client: Client;
    devServer: string | undefined;
    host: string;
    service: string;
    conference: string;
    username: string;
    status: string;
    resource: string;
    password: string;
    reconnectAttempts: number;
    maxReconnectAttempts: number;
    reconnectDelay: number;
    private reconnecting;
    private reconnectPromise;
    presencesReady: boolean;
    private connectionSteps;
    private messageQueue;
    private highLaneBurstLimit;
    private highLaneStreak;
    private pendingSendById;
    private inFlightIds;
    private processingQueue;
    private currentlyProcessingQueueId;
    private currentSendCancel;
    private isRecoveringRoomPresence;
    private recoveryRoomJid;
    private joinedRooms;
    private roomPresenceInFlight;
    private historyPreloadInFlight;
    private mamRequestRegistry;
    private historyQueue;
    private historyQueueInFlight;
    private historyQueueInFlightHigh;
    private historyQueueWorkerScheduled;
    private historyQueueWorkerTimer;
    private roomHistoryEpoch;
    private criticalSendUntil;
    private activeRoomBoostUntil;
    private sendStartedAtById;
    private pendingSendIdsByRoom;
    private maxInFlightHistory;
    private softPauseAfterSendMs;
    private activeRoomBoostTtlMs;
    private activeSendBoostMs;
    private alwaysPrioritizeActiveRoom;
    private backgroundWhileCriticalSend;
    private disableLastRead;
    private presenceFailureBackoffMs;
    private startupPrivateStoreTimeoutMs;
    private startupPrivateStoreTtlMs;
    private roomPresenceBlockedUntil;
    private activeHistoryInFlight;
    private chatsPrivateStoreCache;
    private chatsPrivateStoreInFlight;
    private activeRoomJid;
    private sendIsActiveById;
    private sendClickToEchoByScope;
    private sendSlaWarningThresholdMs;
    private backgroundSuppressedStartedAt;
    checkOnline(): boolean;
    pingInterval: any;
    pingTimeout: any;
    lastPingId: string | null;
    pingIntervalMs: number;
    pongTimeoutMs: number;
    pingOnSendEnabled: boolean;
    idleThresholdMs: number;
    lastActivityTs: number;
    pingInFlight: boolean;
    private idlePingTimeout;
    private reconnectTimer;
    private offlineReconnectAttempts;
    private maxOfflineReconnectAttempts;
    private reconnectBaseDelayMs;
    private pausedDueToOfflineCap;
    private authFailureDetected;
    private intentionalLogout;
    private isTerminalAuthFailure;
    constructor(username: string, password: string, xmppSettings?: xmppSettingsInterface);
    initializeClient(): Promise<void>;
    disconnect(options?: {
        suppressReconnect?: boolean;
    }): Promise<void>;
    markIntentionalLogout: () => void;
    attachEventListeners(): void;
    private scheduleAdaptivePing;
    private startAdaptivePing;
    private markActivity;
    sendAllPresencesAndMarkReady(): Promise<void>;
    reconnect(): Promise<void>;
    allRoomPresencesStanza(): Promise<AllRoomPresenceSummary>;
    ensureConnected(timeout?: number): Promise<void>;
    close(): Promise<void>;
    wrapWithConnectionCheck<T>(operation: () => Promise<T>): Promise<T>;
    private clearMamRegistry;
    private clearHistoryQueue;
    private getSendLane;
    setActiveRoomJid(roomJID: string | null): void;
    private getTotalSendQueueLength;
    private hasPendingActiveRoomPresenceRequest;
    private hasPendingActiveRoomHistoryRequest;
    isActiveRoomGateOpen(): boolean;
    private hasPendingSendsForActiveRoom;
    private shouldSuppressBackgroundHistory;
    private updateBackgroundSuppressionMetrics;
    private pickNextSendEntry;
    private recordSendClickToEchoMetric;
    private getRoomEpoch;
    private getHistoryPriority;
    private nextHistoryTaskId;
    private getHistoryInFlightKey;
    private scheduleHistoryQueue;
    private pickNextHistoryTask;
    private processHistoryQueue;
    private executeHistoryTask;
    private parseMamMessages;
    private routeMamStanza;
    private requestMamHistory;
    promoteRoomHistory(roomJID: string): void;
    onCriticalSend(roomJID: string, messageId?: string): void;
    acknowledgeSentMessage(roomJID: string, messageId?: string): void;
    enqueueHistoryTask(params: {
        chatJID: string;
        max: number;
        before?: number;
        id?: string;
        source?: HistorySource;
    }): Promise<IMessage[] | undefined>;
    private enqueue;
    private processQueue;
    private withIdLock;
    private onBrowserOnline;
    private onBrowserOffline;
    getConnectionSteps(): Array<{
        ts: number;
        step: string;
    }>;
    private logStep;
    getRoomsStanza: (disableGetRooms?: boolean) => Promise<void>;
    getRoomsPagedStanza(maxResults?: number, after?: string | null): Promise<void>;
    createRoomStanza(title: string, description: string): Promise<string>;
    inviteRoomRequestStanza(to: string, roomJid: string): Promise<void>;
    notifyMembersChangedStanza(roomJid: string): Promise<void>;
    leaveTheRoomStanza: (roomJID: string) => void;
    private isValidMucRoomJid;
    private ensureRoomPresence;
    presenceInRoomStanza: (roomJID: string, settleDelay?: number, timeoutMs?: number, waitForJoin?: boolean) => Promise<boolean>;
    prioritizeRoomPresence: (roomJID: string) => Promise<boolean>;
    getHistoryStanza: (chatJID: string, max: number, before?: number, otherStanzaId?: string, options?: {
        coalesceRoom?: boolean;
        skipIfPreloaded?: boolean;
        source?: HistorySource;
    }) => Promise<any>;
    getLastMessageArchiveStanza(roomJID: string): void;
    setRoomImageStanza: (roomJid: string, roomThumbnail: string, type: string, roomBackground?: string) => void;
    getRoomInfoStanza: (roomJID: string) => void;
    getRoomMembersStanza: (roomJID: string) => void;
    setVCardStanza(xmppUsername: string): void;
    sendMessageWithPingCheck(sendFn: () => Promise<boolean>): Promise<boolean>;
    sendMessage: (roomJID: string, firstName: string, lastName: string, photo: string, walletAddress: string, userMessage: string, notDisplayedValue?: string, isReply?: boolean, showInChannel?: boolean, mainMessage?: string, customId?: string) => Promise<boolean>;
    sendTextMessageWithTranslateTagStanza: (roomJID: string, firstName: string, lastName: string, photo: string, walletAddress: string, userMessage: string, notDisplayedValue?: string, isReply?: boolean, showInChannel?: boolean, mainMessage?: string, langSource?: Iso639_1Codes, customId?: string) => Promise<boolean>;
    deleteMessageStanza(room: string, msgId: string): void;
    editMessageStanza(room: string, msgId: string, text: string): void;
    sendMessageReactionStanza(messageId: string, roomJid: string, reactionsList: string[], reactionSymbol?: any): void;
    sendTypingRequestStanza(chatId: string, fullName: string, start: boolean): void;
    getChatsPrivateStoreRequestStanza: () => Promise<Record<string, string | number> | null>;
    actionSetTimestampToPrivateStoreStanza(chatId: string, timestamp: number, chats?: string[]): Promise<void>;
    createPrivateRoomStanza(title: string, description: string, to: string): Promise<string>;
    sendMediaMessageStanza(roomJID: string, data: any, id: string): Promise<boolean>;
    recoverRoomPresenceOnly(roomJID: string): Promise<boolean>;
    sendPingStanza(): void;
    handlePong(): void;
    handlePingTimeout(): void;
    private drainHeap;
    private isBrowserOnline;
    private scheduleReconnect;
}
export default XmppClient;
