import { ComfyClientConfig, ComfyConnectOptions, DirectoryType, DownloadProgressMessage, ExecutedMessage, ExecutingMessage, ExecutionCachedMessage, ExecutionErrorMessage, ExecutionInterruptedMessage, ExecutionStartMessage, Filename, ImageChanel, ImagePreview, ProgressMessage, StatusMessage } from '../types';
type ComfyUIClientEvents = {
    status: [StatusMessage['data']['status'] | null];
    /**
     * execute events
     */
    /**
     * enqueue
     * 任务入队成功，此时可能有部分分支验证错误
     */
    enqueue: [ExecutionStartMessage['data']];
    /**
     * execution start
     * 任务执行开始。prompt执行前通知
     */
    execution_start: [ExecutionStartMessage['data']];
    /**
     * execution cached
     * 任务执行已缓存。如果此节点在前面已经执行过，则会缓存此节点，在execution_start后会将已缓存所有节点通知
     */
    execution_cached: [ExecutionCachedMessage['data']];
    /**
     * executing
     * 节点开始执行
     */
    executing: [ExecutingMessage['data']];
    /**
     * progress
     * 节点进度
     */
    progress: [ProgressMessage['data']];
    /**
     * executed
     * 节点执行完成
     */
    executed: [ExecutedMessage['data']];
    /**
     * execution interrupted
     * 节点被打断
     */
    execution_interrupted: [ExecutionInterruptedMessage['data']];
    /**
     * execution error
     * 节点执行错误
     */
    execution_error: [ExecutionErrorMessage['data']];
    /**
     * execution finish
     * 任务执行完成
     */
    execution_finish: [Omit<ExecutingMessage['data'], 'node'>];
    /**
     * model download progress
     * 模型下载进度
     */
    download_progress: [DownloadProgressMessage['data']];
    /**
     * unhandled
     * 未处理消息
     * type: 消息类型
     * data: 消息数据
     */
    unhandled: [type: string, data: any];
    /**
     * websocket events
     */
    open: any;
    error: [Error];
    close: any;
    message: [any];
    reconnected: any;
    reconnecting: any;
    /**
     * event for load image data from websocket
     */
    image_data: [
        {
            image: ArrayBuffer;
            mime: 'image/jpeg' | 'image/png' | 'image/webp' | string;
        }
    ];
};
type EventValidTypes = string | symbol | object;
type EventNames<T extends EventValidTypes> = T extends string | symbol ? T : keyof T;
type EventArgumentMap<T extends object> = {
    [K in keyof T]: T[K] extends (...args: any[]) => void ? Parameters<T[K]> : T[K] extends any[] ? T[K] : any[];
};
type EventListener<T extends EventValidTypes, K extends EventNames<T>> = T extends string | symbol ? (...args: any[]) => void : (...args: EventArgumentMap<Exclude<T, string | symbol>>[Extract<K, keyof T>]) => void;
export declare class ComfyUIWsClient {
    #private;
    private readonly config?;
    private logError;
    constructor(config?: ComfyClientConfig | undefined);
    /**
     * Generates the URL for the API endpoint based on the provided route.
     *
     * @param route - The route for the API endpoint.
     * @return The generated URL for the API endpoint.
     */
    apiURL(route: string): string;
    /**
     * Generates a URL for viewing a specific file with the given filename, subfolder, and type.
     *
     * @param filename - The name of the file to view.
     * @param subfolder - The subfolder where the file is located.
     * @param type - The type of the file.
     * @param preview
     * @param channel
     * @return The URL for viewing the file.
     */
    viewURL(filename: Filename, subfolder?: string, type?: DirectoryType, preview?: ImagePreview, channel?: ImageChanel): string;
    /**
     * Fetches API data based on the provided route and options.
     *
     * NOTE: CORS policy: Request header field comfy-user is not allowed by Access-Control-Allow-Headers in preflight response. Please use empty string in browser.
     *
     * @param route - The route for the API request.
     * @param options - (Optional) Additional options for the request.
     * @return A promise that resolves to the API response.
     */
    fetchApi(route: string, options?: RequestInit): Promise<Response>;
    /**
     * Adds an event listener for the specified event type.
     *
     * @param type - The type of event to listen for.
     * @param callback - The callback function to be executed when the event is triggered.
     * @param options - (Optional) Additional options for the event listener.
     * @return A function that removes the event listener when called.
     */
    addEventListener<T extends EventNames<ComfyUIClientEvents>>(type: T, callback: EventListener<ComfyUIClientEvents, T>, options?: any): () => void;
    /**
     * Adds a once event listener for the specified event type.
     *
     * @param type - The type of event to listen for.
     * @param callback - The callback function to be executed when the event is triggered.
     * @param options - (Optional) Additional options for the event listener.
     * @return A function that removes the event listener when called.
     */
    addOnceEventListener<T extends EventNames<ComfyUIClientEvents>>(type: T, callback: EventListener<ComfyUIClientEvents, T>, options?: any): () => void;
    /**
     * Remove a event listener for the specified event type with callback.
     * @param type
     * @param callback
     */
    removeEventListener<T extends EventNames<ComfyUIClientEvents>>(type: T, callback: EventListener<ComfyUIClientEvents, T>): void;
    /**
     * Adds an event listener for the specified event type. a shortcut of addEventListener
     *
     * @param type - The type of event to listen for.
     * @param callback - The callback function to be executed when the event is triggered.
     * @param options - (Optional) Additional options for the event listener.
     * @return A function that removes the event listener when called.
     */
    on<T extends EventNames<ComfyUIClientEvents>>(type: T, callback: EventListener<ComfyUIClientEvents, T>, options?: any): () => void;
    /**
     * Adds a once event listener for the specified event type. a shortcut of addOnceEventListener
     *
     * @param type - The type of event to listen for.
     * @param callback - The callback function to be executed when the event is triggered.
     * @param options - (Optional) Additional options for the event listener.
     * @return A function that removes the event listener when called.
     */
    once<T extends EventNames<ComfyUIClientEvents>>(type: T, callback: EventListener<ComfyUIClientEvents, T>, options?: any): () => void;
    /**
     * Remove a event listener for the specified event type with callback. a shortcut of removeEventListener
     * @param type
     * @param callback
     */
    off<T extends EventNames<ComfyUIClientEvents>>(type: T, callback: EventListener<ComfyUIClientEvents, T>): void;
    protected addSocketCallback<K extends keyof WebSocketEventMap>(socket: WebSocket, type: K, listener: (this: WebSocket, ev: WebSocketEventMap[K]) => any, options?: boolean | AddEventListenerOptions): () => void;
    /**
     * Removes all event listeners from the given WebSocket and clears the socket_callbacks object.
     */
    protected removeSocketCallbacks(): void;
    private loadImageData;
    close(): void;
    /**
     * Connects to the WebSocket server by creating a new socket connection.
     *
     * @param options - The options for connecting to the server.
     * @return - The instance of the class.
     */
    connect({ polling, websocket, }?: ComfyConnectOptions): this;
    waitForConnect(options?: ComfyConnectOptions): Promise<void>;
    /**
     * Disconnects the WebSocket connection and cleans up event listeners.
     */
    disconnect(): void;
    log: (level: "debug" | "info" | "log" | "trace" | "warn" | "error", message?: any, error?: Error) => void;
    getFetchHeaders(options?: RequestInit): import("undici-types").HeadersInit | undefined;
    protected doFetch(input: string | URL | globalThis.Request, init?: RequestInit): Promise<Response>;
}
export {};
