import 'reflect-metadata'; import { Scope, Provider, Module } from './di-types'; import { BindingBuilder } from './binding-builder'; export declare class DIContainer { private providers; private instances; private modules; bind(token: string | symbol | Function): BindingBuilder; private bindProvider; bindClass(token: string, constructor: new (...args: any[]) => T, options?: { scope?: Scope; dependencies?: string[]; }): this; bindValue(token: string, value: T): this; bindFactory(token: string, factory: (...args: any[]) => T, options?: { scope?: Scope; dependencies?: string[]; injectContainer?: boolean; }): this; get(token: string): T; has(token: string): boolean; private createInstance; private resolveDependencies; private autoResolveDependencies; registerModule(name: string, module: Module): this; private resolveTokenKey; autoRegister(constructor: new (...args: any[]) => T): this; private extractDependencies; clear(): this; getTokens(): string[]; getProvider(token: string): Provider | undefined; }