import { IApiHandler } from "./IApiHandler";
import { IApiParamsCollection } from "./IApiParamsCollection";
import { IApi } from "./IApi";
import { ExceptionFunction, ExpectFunction, FailFunction, GeneralObject, ObjectMapping, ResolveParams, ResponseHandlerDefineFunction, ResponseHandlerFunction, SendHandlerResponse, SuccessFunction } from "./TypeDefine";
import { ISendResponse } from "./ISendResponse";
declare abstract class ApiHandler<T extends IApi> implements IApiHandler<T['params']> {
    api: T;
    expect: ExpectFunction;
    success: SuccessFunction;
    exception: ExceptionFunction;
    fail: FailFunction;
    private cache;
    private argsQueue;
    private limitSet;
    private beforeList;
    private afterList;
    private guardList;
    private completeList;
    getURL(): string;
    composeURL(args: ResolveParams<T['params']>): string;
    protected constructor(api: T, responseHandlerDefineFunction: ResponseHandlerDefineFunction);
    private analysisHanger;
    abstract send(args: ResolveParams<T['params']>): Promise<ISendResponse<any>>;
    clearCache(): void;
    private saveCacheHandler;
    private cacheHandler;
    sendNotSuccessTips(args: ResolveParams<T['params']>): Promise<SendHandlerResponse>;
    private startNext;
    private sendLimit;
    private hangerBefore;
    private hangerComplete;
    private hangerAfter;
    private hangerGuard;
    sendHandler(args: ResolveParams<T['params']>, responseHandlerFunction?: ResponseHandlerFunction): Promise<SendHandlerResponse>;
    protected processResponse(define: Function, custom: Function | undefined | null, ...args: any[]): void;
    private static filteredData;
    static toQueryString(data: GeneralObject): string;
    static toPathString(data: GeneralObject): string;
    static paramsToObject(params: string[], args: ObjectMapping<string, any>): ObjectMapping<string, any>;
    static assemblyParameters(params: string[], args: ObjectMapping<string, any> | undefined, api: IApi): string | ObjectMapping<string, any> | undefined;
    static assemblyParametersToUnion(params: IApiParamsCollection, args: ObjectMapping<string, any> | undefined, api: IApi): {
        body: {};
        query: string;
        path: string;
    };
}
export { ApiHandler };
