export interface IDependencyGraphPrinter { draw(): string; } export interface IDependencySchema { getSchema(): [name: string, deps: string[]][]; getDependencyDotFile(): string; } export interface IContainer { register(object: TYPE): void; register(object: { default: TYPE }): void; register(name: string, object: TYPE): void; registerConstructor(constructorFunction: { new(...args: any[]): TYPE }, dependencyNames?: string[]): void; registerConstructor(name: string, constructorFunction: { new(...args: any[]): TYPE }, dependencyNames?: string[]): void; registerValue(name: string, object: TYPE): void; registerFactory(name: string, factory: (...args: any[]) => TYPE, dependencyNames?: string[]): void; registerAdaptor(name: string, adaptor: TYPE): void; cache(): IContainer; get(name: string, target?: unknown): TYPE; scanComponents(path: string): void; getDependencyGraph(name: string): IDependencyGraphPrinter; getDependencySchema(): IDependencySchema; } interface IYaiocClassConstructor { new(childContainer?: IContainer): IContainer } export interface IYaiocConstructor { (): IContainer; container(childContainer?: IContainer): IContainer; Container: IYaiocClassConstructor; } export interface IContainerAdaptor { getComponentInstance(conatiner: IContainer, target?: string): T } declare var defaultExport: IYaiocConstructor; export default defaultExport;