import { InjectDIToken } from "@bonbons/di"; import { EntityConstructor, IComponentContract, ICompositionContract, IDirectiveContract, IFrameworkDepts, IFrameworkStructure, IModuleContract } from "../core"; import { BasicEntityProvider } from "./entity-parser"; export interface IMetadataGroup { entity: IDirectiveContract | IComponentContract | ICompositionContract | IModuleContract; inputs: Record; attaches: Record; groups: Record; references: Record; observers: Record; entityExtensions?: Partial>>; } export interface IMapEntry { moduleName?: string; name: string; displayName: string; value: T; provider: string; metadata: IMetadataGroup; } export interface IModuleEntry extends IMapEntry { components: { [name: string]: IMapEntry; }; directives: { [name: string]: IMapEntry; }; compositions: { [name: string]: IMapEntry; }; } export interface IGlobalMap { modules: { [key: string]: IModuleEntry; }; globalComponentList: IMapEntry[]; globalDirectiveList: IMapEntry[]; globalCompositionList: IMapEntry[]; } export declare class GlobalMap { readonly maps: IGlobalMap; readonly providers: Partial>; useProvider(name: keyof IFrameworkDepts, provider: typeof BasicEntityProvider): this; useModule(mdname: EntityConstructor, register: (injectable: InjectDIToken) => InjectDIToken): this; getModule(name: string): IModuleEntry; getComponent(module: string, name: string): IMapEntry; getDirective(module: string, name: string): IMapEntry; getComposition(module: string, name: string): IMapEntry; getComponentByType(component: InjectDIToken): IMapEntry; getDirectiveByType(directive: InjectDIToken): IMapEntry; getCompositionByType(composition: InjectDIToken): IMapEntry; getProvider(name: keyof IFrameworkDepts): typeof BasicEntityProvider; initMetadatas(resolver: (provider: typeof BasicEntityProvider) => BasicEntityProvider): void; } export declare function getEitityMetadata(mdname: EntityConstructor, provider?: BasicEntityProvider): IMetadataGroup;