import { EntityConstructor, IComponentContract, IDirectiveContract, IFrameworkDepts, IFrameworkStructure, IModuleContract } from "../core/decorators"; import { BasicEntityProvider } from "./entity-parser"; import { InjectDIToken } from "@bonbons/di"; export interface IMetadataGroup { entity: IDirectiveContract | IComponentContract | IModuleContract; inputs: { [name: string]: any; }; attaches: { [name: string]: any; }; props: { [name: string]: any; }; groups: { [name: string]: any; }; 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; }; } export interface IGlobalMap { modules: { [key: string]: IModuleEntry; }; } 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; getProvider(name: keyof IFrameworkDepts): typeof BasicEntityProvider; initMetadatas(resolver: (provider: typeof BasicEntityProvider) => BasicEntityProvider): void; } export declare function getMetadata(mdname: EntityConstructor, provider?: BasicEntityProvider): IMetadataGroup;