import { DependencyList } from 'react';
import { UnwrapPromise } from './useTask';
export type UseTaskEffectProps<TTask extends (...args: []) => Promise<any>, TError extends any = any> = {
    task: TTask;
    deps: DependencyList | string | number;
    enabled?: boolean;
    loadingAtInit?: boolean;
    startLoadingOnBeforeStart?: boolean;
    onBeforeStart?: () => Promise<boolean>;
    onSuccess?(data: UnwrapPromise<ReturnType<TTask>> | undefined): void;
    onError?(error: TError | undefined): void;
    onFinally?(): void;
    preserve?: boolean;
    preserveWhenError?: boolean;
    debounceTime?: number;
};
export default function useTask<TTask extends (...args: []) => Promise<any>, TError extends any>({ task, onBeforeStart, onSuccess, onError, onFinally, preserve, preserveWhenError, deps, enabled, loadingAtInit, startLoadingOnBeforeStart, debounceTime, }: UseTaskEffectProps<TTask, TError>): {
    data: UnwrapPromise<ReturnType<TTask>> | undefined;
    error: TError | undefined;
    state: "PENDING" | "IDLE" | "SUCCESS" | "FAIL" | "CANCELED";
    isIdle: boolean;
    isLoading: boolean;
    isSuccess: boolean;
    isError: boolean;
    refetch: () => void;
    refetchAsync: () => Promise<UnwrapPromise<ReturnType<TTask>> | undefined>;
    cancel: () => void;
};
