import type { CallbackInterface, Loadable, RecoilValue, Snapshot } from 'recoil'; export declare type Cancelled = () => boolean; export declare type WaitFor = (promiseOrMs: Promise | number) => Promise; export declare type Fork = (taskCreator: (recoilTask: RecoilTaskInterface) => (...args: Args) => Return, executeArgs: Args, debugKey?: string) => { id: number; cancel: () => void; task: Promise; getTaskState: () => Task | undefined; }; export declare type RecoilTaskInterface = CallbackInterface & { getSnapshot: RecoilGetSnapshot; getLoadable: Snapshot['getLoadable']; cancelled: Cancelled; waitFor: WaitFor; fork: Fork; }; export declare type RecoilGetPromise = (recoilValue: RecoilValue) => Promise; export declare type RecoilGetLoadable = (recoilValue: RecoilValue) => Loadable; export declare type RecoilGetSnapshot = () => Snapshot; export declare type RecoilStore = { set: CallbackInterface['set']; reset: CallbackInterface['reset']; refresh: CallbackInterface['refresh']; gotoSnapshot: CallbackInterface['gotoSnapshot']; getSnapshot: RecoilGetSnapshot; getPromise: Snapshot['getPromise']; getLoadable: Snapshot['getLoadable']; }; export declare enum TaskStatus { Running = 0, Error = 1, Done = 2 } export declare type TaskOptions = { key?: string; errorStack?: boolean; loaderStack?: string | boolean; exclusive?: boolean; dataSelector?: RecoilValue; autoStart?: Args; cancelOnUnmount?: boolean; }; export declare type Task = { parentId?: number; id: number; status: TaskStatus; args: ReadonlyArray; startedAt: Date; endAt?: Date; error?: Error; data?: Data; options?: TaskOptions; extra?: unknown; }; export declare type ErrorAtom = { id: number; key?: string; error?: unknown; taskId?: number; };