import { Component, ComponentConstructor, ComponentLiteral, ComponentStateLiteral } from './component'; import { SlotLiteral } from './slot'; import { Textbus } from '../textbus'; export interface Metadata { [key: string]: any; } export interface AsyncComponentLiteral extends ComponentLiteral { async: true; metadata: any; } export interface AsyncSlotLiteral = Record, U = any> extends SlotLiteral { async: true; metadata: U; } export interface AsyncComponentConstructor = Record> extends ComponentConstructor { fromJSONAndMetadata?(textbus: Textbus, data: ComponentStateLiteral, metadata: M): Component; }