/**
 * It can assume 3 states
 * [undefined] = The hook has just initialized, and will call the memoize function
 * [T] = The hook initialized the value
 * [null, error] = The hook failed to initialize and the error is available
 */
export default function useAsyncMemo<T>(funcToMemoize: () => Promise<T>, depArr: any[]): [
    value: T | undefined | null,
    error: any,
    loading: boolean,
    retry: () => Promise<T>,
    setValue: (value: T) => void
];
