import { DeepStorage } from "./index"; export declare enum AsyncStatus { Created = 0, Running = 1, Failed = 2, Succeeded = 3 } export interface DeepAsyncState { status: AsyncStatus; data?: Data; error?: any; } export interface DeepAsync extends DeepAsyncState { completed: boolean; succeeded: boolean; running: boolean; started: boolean; failed: boolean; storage: DeepStorage>; run(): Promise>; update(updater: (prevState?: Response) => Response): Promise>; } export declare class AlreadyRunningError extends Error { } export declare class DefaultDeepAsync implements DeepAsync { storage: DeepStorage>; process: () => Promise; constructor(storage: DeepStorage>, process: () => Promise); run: () => Promise>; update: (updater: (prevState?: Response | undefined) => Response) => Promise>; readonly status: AsyncStatus; readonly running: boolean; readonly started: boolean; readonly succeeded: boolean; readonly failed: boolean; readonly completed: boolean; readonly data: Response | undefined; readonly error: any; } export declare const deepAsync: (process: () => Promise) => DefaultDeepAsync;