import { AsyncComponent, Component } from './options'
export type AsyncComponentResolveResult<T = Component> = T | { default: T }
export type AsyncComponentLoader<T = any> = () => Promise<
AsyncComponentResolveResult<T>
>
export interface AsyncComponentOptions {
loader: AsyncComponentLoader
loadingComponent?: Component
errorComponent?: Component
delay?: number
timeout?: number
onError?: (
error: Error,
retry: () => void,
fail: () => void,
attempts: number
) => any
}
export function defineAsyncComponent(
source: AsyncComponentLoader | AsyncComponentOptions
): AsyncComponent