import { MJConfig, MJMessage, LoadingHandler, MJEmit, OnModal } from "./interfaces";
import { MidjourneyApi } from "./midjourney.api";
import WebSocket from "isomorphic-ws";
export declare class WsMessage {
    config: MJConfig;
    MJApi: MidjourneyApi;
    ws: WebSocket;
    private closed;
    private event;
    private waitMjEvents;
    private skipMessageId;
    private reconnectTime;
    private lastSequence;
    private inflate;
    private readonly textDecoder;
    UserId: string;
    connecting: boolean;
    constructor(config: MJConfig, MJApi: MidjourneyApi);
    private heartbeat;
    close(): void;
    checkWs(): Promise<void>;
    isReady(): Promise<boolean>;
    onceReady(): Promise<unknown>;
    reconnect(): void;
    private decodeMessage;
    private open;
    private auth;
    timeout(ms: number): Promise<unknown>;
    private messageCreate;
    private messageUpdate;
    private onInteractionSuccess;
    private onModalCreate;
    private onReady;
    private onMessageCreate;
    private onMessageUpdate;
    private onMessageDelete;
    private parseMessage;
    private continue;
    private verifyHuman;
    private EventError;
    private done;
    private processingImage;
    private filterMessages;
    private getEventByContent;
    private getEventByHash;
    private getEventById;
    private getEventByNonce;
    private getNonceFromContent;
    private updateMjEventIdByNonce;
    private updateHashByNonce;
    private updateHashByid;
    protected log(...args: any[]): Promise<void>;
    emit(event: string, message: any): void;
    private emitImage;
    private emitMJ;
    on(event: string, callback: (message: any) => void): void;
    onSystem(event: "ready" | "messageCreate" | "messageUpdate" | "messageDelete" | "modalCreate" | "interactionCreate" | "interactionSuccess", callback: (message: any) => void): void;
    private emitSystem;
    once(event: string, callback: (message: any) => void): void;
    remove(event: string, callback: (message: any) => void): void;
    removeEvent(event: string): void;
    onceMJ(nonce: string, callback: (data: any) => void): void;
    private removeSkipMessageId;
    private removeWaitMjEvent;
    onceImage(nonce: string, callback: (data: MJEmit) => void): void;
    waitImageMessage({ nonce, prompt, onmodal, messageId, loading, }: {
        nonce: string;
        prompt?: string;
        messageId?: string;
        onmodal?: OnModal;
        loading?: LoadingHandler;
    }): Promise<MJMessage | null>;
    waitOnceMJ(nonce: string): Promise<any>;
    waitOnce(nonce: string): Promise<any>;
}
