import { Observable, Subscription } from 'rxjs';
import { EnumSubscriptionState, type ExtractGeneric, type UseTaskObservable } from './@types/useTaskObservable';
export default function useTaskObservable<TFunc extends (...args: any[]) => Promise<any> | Observable<any>, TPreHandlerResult extends ReturnType<Observable<ExtractGeneric<ReturnType<TFunc>>>['pipe']>>({ task, observablePreHandler, onNext, onComplete, onError, onCancel }: UseTaskObservable<TFunc, TPreHandlerResult>): {
    data: ExtractGeneric<TPreHandlerResult> | undefined;
    err: any;
    state: EnumSubscriptionState;
    subscriptionState: EnumSubscriptionState;
    isIdle: boolean;
    isLoading: boolean;
    isSuccess: boolean;
    isFailed: boolean;
    isCanceled: boolean;
    isSubscriptionIdle: boolean;
    isSubscriptionLoading: boolean;
    isSubscriptionDataReceived: boolean;
    isSubscriptionSuccess: boolean;
    isSubscriptionFailed: boolean;
    isSubscriptionCanceled: boolean;
    run: (...args: Parameters<TFunc>) => void;
    cancel: () => void;
    subscription: Subscription | null;
};
