export type AsyncStatus = 'loading' | 'success' | 'error' | 'not-executed'; export type AsyncState = { status: 'not-executed'; error: undefined; result: Result; } | { status: 'success'; error: undefined; result: Result; } | { status: 'error'; error: Error; result: Result; } | { status: AsyncStatus; error: Error | undefined; result: Result; }; export type UseAsyncActions = { reset: () => void; execute: (...args: Args) => Promise; }; export type UseAsyncMeta = { promise: Promise | undefined; lastArgs: Args | undefined; }; export declare function useAsync(asyncFn: (...params: Args) => Promise, initialValue: Result): [AsyncState, UseAsyncActions, UseAsyncMeta]; export declare function useAsync(asyncFn: (...params: Args) => Promise, initialValue?: Result): [AsyncState, UseAsyncActions, UseAsyncMeta];