import { Provider, Token, InstanceCreator, TokenResult, InstanceOpts, ConstructorOf, InjectorOpts, Domain, Tag, IHookStore, IValidAspectHook, IDisposable } from './types'; export declare class Injector { private opts; id: string; depth: number; tag?: string; hookStore: IHookStore; parent?: Injector; private tagMatrix; private domainMap; creatorMap: Map; private instanceDisposedEmitter; constructor(providers?: Provider[], opts?: InjectorOpts, parent?: Injector); createChild(providers?: Provider[], opts?: InjectorOpts): InstanceType>; get>(token: T, args?: ConstructorParameters, opts?: InstanceOpts): TokenResult; get(token: T, opts?: InstanceOpts): TokenResult; get = ConstructorOf>(token: T, opts?: ConstructorParameters): TokenResult; private getTokenForDomain; getFromDomain(...domains: Domain[]): Array; /** * Only check this injector whether has the singleton instance. */ hasInstance(instance: any): boolean; addProviders(...providers: Provider[]): void; overrideProviders(...providers: Provider[]): void; parseDependencies(...targets: Token[]): void; exchangeToken(token: Token, tag: Tag): Token; createHooks(hooks: IValidAspectHook[]): IDisposable; createHook(hook: IValidAspectHook): IDisposable; onceInstanceDisposed(instance: any, cb: () => void): () => void; disposeOne(token: Token, key?: string): void | Promise; disposeAll(key?: string): Promise; protected getTagToken(token: Token, tag: Tag): Token | undefined | null; private setProviders; private addToDomain; private resolveToken; getCreator(token: Token): [InstanceCreator | null, Injector]; private createInstance; private createInstanceFromClassCreator; private getParameters; private createInstanceWithInjector; private createInstanceFromFactory; }