export declare const ERROR_CODE_REQUEST_BREAK = "ERROR_CODE_REQUEST_BREAK";
export declare const ERROR_CODE_REQUEST_ABORT = "ERROR_CODE_REQUEST_ABORT";
export declare const ERROR_CODE_REQUEST_DEFAULT = "ERROR_CODE_REQUEST";
export declare const ERROR_CDODE_TIME_OUT = "ERROR_CDODE_TIME_OUT";
/** 请求处理程序 */
export declare class Requester<T = {}> {
    option: RequesterOption;
    /** 请求前置callback */
    beforeCallbacks: {
        add: (callback: (requestOption: RequestOption & T) => false | Promise<false> | Promise<void> | void) => () => void;
        callbacks: ((requestOption: RequestOption & T) => false | Promise<false> | Promise<void> | void)[];
        reset: () => void;
        remove: (callBack: (requestOption: RequestOption & T) => false | Promise<false> | Promise<void> | void) => void;
    };
    /** 请求后置callback */
    afterCallbacks: {
        add: (callback: (requestOption: RequestOption & T, data: any | RequestError, response?: Response) => void) => () => void;
        callbacks: ((requestOption: RequestOption & T, data: any | RequestError, response?: Response) => void)[];
        reset: () => void;
        remove: (callBack: (requestOption: RequestOption & T, data: any | RequestError, response?: Response) => void) => void;
    };
    /** 请求错误callback */
    errorCallbacks: {
        add: (callback: (error: RequestError<T>, response?: Response) => void) => () => void;
        callbacks: ((error: RequestError<T>, response?: Response) => void)[];
        reset: () => void;
        remove: (callBack: (error: RequestError<T>, response?: Response) => void) => void;
    };
    constructor(option: RequesterOption);
    /** 请求中队列 */
    requestList: Array<RequestQueueItem>;
    /** 请求接口 */
    request<I = any, O = any>(url: string, option?: Partial<Omit<RequestOption<I>, "url"> & T>): Promise<O>;
    cancelAllRequest(): void;
    private execBeforeEvent;
    private deleteCache;
    private getCache;
    private execError;
}
export type RequestQueueItem = {
    cancel: Function;
    option: RequestOption;
};
export type RequestError<T = any> = {
    code: string;
    message: string;
    data?: any;
    option: RequestOption & T;
    e?: Error;
};
/**
 * 请求处理程序配置
 */
export type RequesterOption = {
    /** 请求地址根 */
    base?: string;
    /**
     * 接口超时时间
     * 当设置为false时，不做超时处理
     * @default 10s
     */
    timeout?: number | false;
    /** 错误码-信息映射转译 */
    errorCodeMessage?: Record<string, string>;
    /** 自定义默认错误处理 */
    defaultErrorFunc?: (err: RequestError, response?: Response) => void;
    /** 自定义请求数据转换 */
    transformReqData?: (data: any, option: RequestOption & Record<string, any>, requesteroption: RequesterOption) => any | Promise<any>;
    /** 自定义服务端返回数据转换 */
    transformRspData?: (data: any, option: RequestOption & Record<string, any>, requesteroption: RequesterOption) => any | Promise<any>;
    /** 自定义解析rsp数据，并进行成功、失败分流 */
    analyRspResult?: (data: any, success: (data: any) => void, error: (err: Omit<RequestError, "option">) => void, response: Response) => void;
    mock?: (option: RequestOption & Record<string, any>) => Promise<any>;
};
export type RequestMethod = "GET" | "POST" | "DELETE" | "PUT";
export type RequestCacheOption = {
    id: string;
    expires?: number;
};
/**
 * 请求参数配置
 */
export type RequestOption<T = any> = {
    url: string;
    method: RequestMethod;
    data?: T;
    rspType?: "json" | "stream";
    timeout?: number | false;
    cache?: RequestCacheOption | true;
    forceRefreshCache?: boolean;
    headers?: Record<string, any>;
    error?: (err: RequestError, response?: Response) => void | false;
    success?: (data: any, response?: Response) => void;
    stream?: (chunk: string, allChunk: string, response?: Response) => void;
};
