interface VoidCallback { (): void } interface AsyncResult { error?: Error, result?: Result, promise?: Promise, isPending: boolean, cancel: VoidCallback, execute: VoidCallback, } interface Config { isOnDemand?: boolean, onError?: (error: Error, inputs: Inputs) => void; onCancel?: (inputs: Inputs) => void; onSuccess?: (result: Result, inputs: Inputs) => void; } declare class Task { public promise: Promise; public cancel: VoidCallback; constructor(promise: Promise | Result, cancel?: VoidCallback); } declare const useAsync: ( createTask: (inputs: Inputs) => Promise | Task | Result, inputs?: Inputs, config?: Config, ) => AsyncResult; export default useAsync; export { Task };