import 'reflect-metadata'; import { IContainer } from './IContainer'; import { Type, Token, Factory, SymbolType, ToInstance, Providers } from './types'; import { MapSet } from './utils/index'; import { ActionComponent } from './core/index'; import { LifeScope } from './LifeScope'; import { IParameter } from './IParameter'; /** * Container. */ export declare class Container implements IContainer { protected provideTypes: MapSet, Type>; protected factories: MapSet, Function>; protected singleton: MapSet, any>; constructor(); /** * Retrieves an instance from the container based on the provided token. * * @template T * @param {Token} token * @param {string} [alias] * @param {T} [notFoundValue] * @returns {T} * @memberof Container */ get(token: Token, alias?: string): T; /** * resolve type instance with token and param provider. * * @template T * @param {Token} token * @param {T} [notFoundValue] * @param {...Providers[]} providers * @memberof Container */ resolve(token: Token, ...providers: Providers[]): T; /** * clear cache. * * @param {Type} targetType * @memberof IContainer */ clearCache(targetType: Type): void; /** * get token. * * @template T * @param {Token} token * @param {string} [alias] * @returns {Token} * @memberof Container */ getToken(token: Token, alias?: string): Token; /** * get tocken key. * * @template T * @param {Token} token * @param {string} [alias] * @returns {SymbolType} * @memberof Container */ getTokenKey(token: Token, alias?: string): SymbolType; /** * register type. * @abstract * @template T * @param {Token} token * @param {T} [value] * @returns {this} * @memberOf Container */ register(token: Token, value?: Factory): this; /** * has register the token or not. * * @template T * @param {Token} token * @param {string} [alias] * @returns {boolean} * @memberof Container */ has(token: Token, alias?: string): boolean; /** * has register type. * * @template T * @param {SymbolType} key * @returns * @memberof Container */ hasRegister(key: SymbolType): boolean; /** * unregister the token * * @template T * @param {Token} token * @returns {this} * @memberof Container */ unregister(token: Token): this; /** * register stingleton type. * @abstract * @template T * @param {Token} token * @param {Factory} [value] * @returns {this} * @memberOf Container */ registerSingleton(token: Token, value?: Factory): this; /** * bind provider. * * @template T * @param {Token} provide * @param {Token} provider * @returns {this} * @memberof Container */ bindProvider(provide: Token, provider: Token | Factory): this; /** * get token implements class type. * * @template T * @param {Token} token * @returns {Type} * @memberof Container */ getTokenImpl(token: Token): Type; /** * get life scope of container. * * @returns {LifeScope} * @memberof IContainer */ getLifeScope(): LifeScope; /** * invoke method async. * * @template T * @param {Token} token * @param {(string | symbol)} propertyKey * @param {*} [instance] * @param {...Providers[]} providers * @returns {Promise} * @memberof Container */ invoke(token: Token, propertyKey: string | symbol, instance?: any, ...providers: Providers[]): Promise; /** * invoke method. * * @template T * @param {Token} token * @param {(string | symbol)} propertyKey * @param {*} [instance] * @param {...Providers[]} providers * @returns {T} * @memberof Container */ syncInvoke(token: Token, propertyKey: string | symbol, instance?: any, ...providers: Providers[]): T; createSyncParams(params: IParameter[], ...providers: Providers[]): any[]; createParams(params: IParameter[], ...providers: Providers[]): Promise; protected cacheDecorator(map: Map, action: ActionComponent): void; protected init(): void; protected registerFactory(token: Token, value?: Factory, singleton?: boolean): void; protected createCustomFactory(key: SymbolType, factory?: ToInstance, singleton?: boolean): (...providers: any[]) => any; protected createTypeFactory(key: SymbolType, ClassT?: Type, singleton?: boolean): (...providers: any[]) => any; }