import { Ref } from 'vue';
import { UseRequestFetchState, UseRequestOptions, UseRequestPluginReturn, UseRequestService, UseRequestOptionsWithFormatResult, UseRequestOptionsWithInitialData } from './types';
export default class Fetch<TData, TParams extends unknown[] = any> {
    serviceRef: Ref<UseRequestService<TData, TParams>>;
    options: Partial<UseRequestOptions<TData, TParams, any> & UseRequestOptionsWithFormatResult<TData, TParams, any, any> & UseRequestOptionsWithInitialData<TData, TParams, any>>;
    setUpdateData: (currentState: unknown, key?: keyof UseRequestFetchState<TData, TParams>) => void;
    initState: Partial<UseRequestFetchState<TData, TParams>>;
    pluginImpls: UseRequestPluginReturn<TData, TParams>[] | undefined;
    count: number;
    state: UseRequestFetchState<TData, TParams>;
    previousValidData: UseRequestFetchState<TData, TParams>['data'];
    constructor(serviceRef: Ref<UseRequestService<TData, TParams>>, options: Partial<UseRequestOptions<TData, TParams, any> & UseRequestOptionsWithFormatResult<TData, TParams, any, any> & UseRequestOptionsWithInitialData<TData, TParams, any>>, setUpdateData: (currentState: unknown, key?: keyof UseRequestFetchState<TData, TParams>) => void, initState?: Partial<UseRequestFetchState<TData, TParams>>);
    /**
     * set state
     * @param currentState currentState
     */
    setState(currentState?: Partial<UseRequestFetchState<TData, TParams>>): void;
    /**
     * should rename
     * @param data Result value `unknown`
     * @param key Result key `data`| `params` | `loading`| `error`
     */
    setData(data: unknown, key?: keyof UseRequestFetchState<TData, TParams> | (keyof UseRequestFetchState<TData, TParams>)[]): void;
    /**
     *
     * @param data Result value `unknown`
     * @param key Result key `data`| `params` | `loading`| `error`
     */
    setFetchState(data: unknown, key?: keyof UseRequestFetchState<TData, TParams> | (keyof UseRequestFetchState<TData, TParams>)[]): void;
    /**
     * Traverse the plugin that needs to be run,
     * which is a callback function for the plugin to obtain fetch instances and execute plugin logic at the corresponding nodes.
     */
    runPluginHandler(event: keyof UseRequestPluginReturn<TData, TParams>, ...rest: unknown[]): any;
    runAsync(...params: TParams): Promise<TData>;
    run(...params: TParams): void;
    cancel(): void;
    refresh(): void;
    refreshAsync(): Promise<TData>;
    mutate(data?: TData | ((oldData?: TData) => TData | undefined)): void;
}
