import { Ref, WatchSource } from 'vue-demi';
export declare type noop = (...args: any[]) => void;
export declare type Service<R, P extends any[]> = (...args: P) => Promise<R>;
export declare type RequestService = string | {
    [key: string]: any;
};
export declare type CombineService<R, P extends any[]> = RequestService | ((...args: P) => RequestService) | Service<R, P>;
export interface UseRequestResult<R = any, P extends any[] = any[]> {
    loading: Ref<boolean>;
    data: Ref<R>;
    error: Ref<Error | undefined>;
    params: Ref<P>;
    lastSuccessParams: Ref<P | undefined>;
    cancel: () => void;
    refresh: () => Promise<any>;
    run: (...args: P) => Promise<any>;
}
export interface UseRequestOptions<R = any, P extends any[] = any[]> {
    formatResult: (res: any) => R;
    manual: boolean;
    onSuccess: (data: R, params: P) => void;
    onError: (e: Error, params: P) => void;
    onFinally: () => void;
    defaultLoading: boolean;
    loadingDelay: number;
    defaultParams: P;
    pollingInterval: number;
    pollingWhenHidden: boolean;
    pollingSinceLastFinished: boolean;
    debounceInterval: number;
    loadingWhenDebounceStart: boolean;
    throttleInterval: number;
    initialData: R;
    requestMethod: (service: any) => Promise<any>;
    ready: Ref<boolean>;
    throwOnError: boolean;
    refreshDeps: Array<WatchSource>;
    refreshOnWindowFocus: boolean;
}
