import { Observable } from '@tanbo/stream'; import { State } from './types'; import { Component, ComponentLiteral } from './component'; import { ContentType, Slot, SlotJSON } from './slot'; import { FormatLiteral } from './format'; import { AsyncComponentLiteral, AsyncSlotLiteral, Metadata } from './async-literals'; export declare class AsyncModelLoader { onRequestLoad: Observable; onLoaded: Observable; get isLoaded(): boolean; private _loaded; private requestLoadEvent; private loadedEvent; constructor(); load(): void; markAsLoaded(): void; } /** * 异步加载组件 * * metadata 用于记录子文档静态数据 */ export declare abstract class AsyncComponent extends Component { metadata: M; constructor(state: T, metadata: M); loader: AsyncModelLoader; toJSON(): AsyncComponentLiteral; } export declare class AsyncSlotJSON, U extends Record = Record> extends SlotJSON implements AsyncSlotLiteral { metadata: U; async: true; constructor(schema: ContentType[], content: Array, attributes: Record, formats: FormatLiteral, state: T, metadata: U); } /** * 异步加载插槽 * * metadata 用于记录子文档静态数据 */ export declare class AsyncSlot = Record, M extends Metadata = Metadata> extends Slot { loader: AsyncModelLoader; readonly metadata: M; constructor(schema: ContentType[], state: U | undefined, metadata: M); toJSON(): AsyncSlotJSON; }