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