import { Client } from '@xmpp/client';
import { Iso639_1Codes, XmppClientInterface, xmppSettingsInterface, IMessage } from '../types/types';
import { AllRoomPresenceSummary } from './xmpp/allRoomPresences.xmpp';
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 pendingSendById;
    private inFlightIds;
    private processingQueue;
    private currentlyProcessingQueueId;
    private isRecoveringRoomPresence;
    private recoveryRoomJid;
    private joinedRooms;
    private roomPresenceInFlight;
    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;
    constructor(username: string, password: string, xmppSettings?: xmppSettingsInterface);
    initializeClient(): Promise<void>;
    disconnect(): Promise<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 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>;
    leaveTheRoomStanza: (roomJID: string) => void;
    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) => Promise<IMessage[]>;
    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<unknown>;
    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): void;
    recoverRoomPresenceOnly(roomJID: string): Promise<boolean>;
    sendPingStanza(): void;
    handlePong(): void;
    handlePingTimeout(): void;
    private drainHeap;
    private isBrowserOnline;
    private scheduleReconnect;
}
export default XmppClient;
