import { AxiosResponse, AxiosRequestConfig } from "axios";
import { Strategy, ResponseData, StandardResponseData, SnailSuccessListener, SnailErrorListener, SnailHitCacheListener, SnailFinishListener } from "../typings";
import { SnailApi } from "./snailApi";
/**
 * SnailMethod
 * 泛型参数: RT => response.data类型,默认标准json返回
 *  DK => response.data.data 类型
 */
export declare class SnailMethod<RT extends ResponseData = StandardResponseData> {
    private Name;
    private apiInstance;
    private target;
    private strategies;
    private Request;
    private Response;
    private Error;
    private EventEmit;
    private propertyKey;
    private Url;
    private Path;
    private Method;
    private Adapter;
    private Version?;
    constructor(apiInstance: SnailApi, target: Object, propertyKey: string | symbol);
    send: (...args: any) => Promise<unknown>;
    private init;
    private initUrl;
    private initVersion;
    private getExpireSources;
    private createRequest;
    onSuccess: (listener: SnailSuccessListener<RT>) => void;
    onError: <ErrorData = any>(listener: SnailErrorListener<RT, ErrorData>) => void;
    onHitCache: (listener: SnailHitCacheListener<RT>) => void;
    onFinish: (listener: SnailFinishListener<RT>) => void;
    private getCacheData;
    private setCacheData;
    get response(): AxiosResponse<RT, any>;
    get request(): AxiosRequestConfig<any>;
    get version(): string | undefined;
    get name(): string;
    get error(): any;
    registerStrategies: (...strategys: Array<new () => Strategy>) => void;
    private getStrategies;
    private getMethodOptions;
    private isNoCache;
    private enableLog;
    private applyHitSource;
    private applyProgress;
}
