/// <reference types="node" />
import EventEmitter from "events";
/**
 * **Command Manager** is used to emit `command lifecycle events` like - request start, request end, upload and download progress.
 * It is also the place of `request aborting` system, here we store all the keys and controllers that are isolated for each builder instance.
 */
export declare class CommandManager {
    emitter: EventEmitter;
    events: {
        emitLoading: (queueKey: string, requestId: string, values: import("./..").CommandLoadingEventType) => void;
        emitRequestStart: (queueKey: string, requestId: string, details: import("./..").CommandEventDetails<import("../..").CommandInstance>) => void;
        emitResponseStart: (queueKey: string, requestId: string, details: import("./..").CommandEventDetails<import("../..").CommandInstance>) => void;
        emitUploadProgress: (queueKey: string, requestId: string, values: import("../..").FetchProgressType, details: import("./..").CommandEventDetails<import("../..").CommandInstance>) => void;
        emitDownloadProgress: (queueKey: string, requestId: string, values: import("../..").FetchProgressType, details: import("./..").CommandEventDetails<import("../..").CommandInstance>) => void;
        emitResponse: (cacheKey: string, requestId: string, response: import("../..").ClientResponseType<unknown, unknown>, details: import("./..").CommandResponseDetails) => void;
        emitAbort: (abortKey: string, requestId: string, command: import("../..").CommandInstance) => void;
        emitRemove: <T extends import("../..").CommandInstance>(queueKey: string, requestId: string, details: import("./..").CommandEventDetails<T>) => void;
        onLoading: (queueKey: string, callback: (values: import("./..").CommandLoadingEventType) => void) => VoidFunction;
        onLoadingById: (requestId: string, callback: (values: import("./..").CommandLoadingEventType) => void) => VoidFunction;
        onRequestStart: <T_1 extends import("../..").CommandInstance>(queueKey: string, callback: (details: import("./..").CommandEventDetails<T_1>) => void) => VoidFunction;
        onRequestStartById: <T_2 extends import("../..").CommandInstance>(requestId: string, callback: (details: import("./..").CommandEventDetails<T_2>) => void) => VoidFunction;
        onResponseStart: <T_3 extends import("../..").CommandInstance>(queueKey: string, callback: (details: import("./..").CommandEventDetails<T_3>) => void) => VoidFunction;
        onResponseStartById: <T_4 extends import("../..").CommandInstance>(requestId: string, callback: (details: import("./..").CommandEventDetails<T_4>) => void) => VoidFunction;
        onUploadProgress: <T_5 extends import("../..").CommandInstance = import("../..").CommandInstance>(queueKey: string, callback: (values: import("../..").FetchProgressType, details: import("./..").CommandEventDetails<T_5>) => void) => VoidFunction;
        onUploadProgressById: <T_6 extends import("../..").CommandInstance = import("../..").CommandInstance>(requestId: string, callback: (values: import("../..").FetchProgressType, details: import("./..").CommandEventDetails<T_6>) => void) => VoidFunction;
        onDownloadProgress: <T_7 extends import("../..").CommandInstance = import("../..").CommandInstance>(queueKey: string, callback: (values: import("../..").FetchProgressType, details: import("./..").CommandEventDetails<T_7>) => void) => VoidFunction;
        onDownloadProgressById: <T_8 extends import("../..").CommandInstance = import("../..").CommandInstance>(requestId: string, callback: (values: import("../..").FetchProgressType, details: import("./..").CommandEventDetails<T_8>) => void) => VoidFunction;
        onResponse: <ResponseType_1, ErrorType>(cacheKey: string, callback: (response: import("../..").ClientResponseType<ResponseType_1, ErrorType>, details: import("./..").CommandResponseDetails) => void) => VoidFunction;
        onResponseById: <ResponseType_2, ErrorType_1>(requestId: string, callback: (response: import("../..").ClientResponseType<ResponseType_2, ErrorType_1>, details: import("./..").CommandResponseDetails) => void) => VoidFunction;
        onAbort: (abortKey: string, callback: (command: import("../..").CommandInstance) => void) => VoidFunction;
        onAbortById: (requestId: string, callback: (command: import("../..").CommandInstance) => void) => VoidFunction;
        onRemove: <T_9 extends import("../..").CommandInstance = import("../..").CommandInstance>(queueKey: string, callback: (details: import("./..").CommandEventDetails<T_9>) => void) => VoidFunction;
        onRemoveById: <T_10 extends import("../..").CommandInstance = import("../..").CommandInstance>(requestId: string, callback: (details: import("./..").CommandEventDetails<T_10>) => void) => VoidFunction;
    };
    abortControllers: Map<string, Map<string, AbortController>>;
    addAbortController: (abortKey: string, requestId: string) => void;
    getAbortController: (abortKey: string, requestId: string) => AbortController;
    removeAbortController: (abortKey: string, requestId: string) => void;
    useAbortController: (abortKey: string, requestId: string) => void;
    abortByKey: (abortKey: string) => void;
    abortByRequestId: (abortKey: string, requestId: string) => void;
    abortAll: () => void;
}