import { Ref } from "vue";
import type { FetchState, Options, PluginReturn, Service } from "./types";
export default class Fetch<TData, TParams extends any[]> {
    service: Service<TData, TParams>;
    options: Options<TData, TParams>;
    initState: Partial<FetchState<TData, TParams>>;
    pluginImpls: PluginReturn<TData, TParams>[];
    count: number;
    loading: Ref<boolean>;
    params: Ref<TParams | []>;
    data: Ref<TData | undefined>;
    error: Ref<Error | undefined>;
    constructor(service: Service<TData, TParams>, options: Options<TData, TParams>, initState?: Partial<FetchState<TData, TParams>>);
    runPluginHandler(event: keyof PluginReturn<TData, TParams>, ...rest: any[]): 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;
}
