//#region src/core/bindings.d.ts type BindClass = abstract new (...args: any[]) => T; type BindToken = BindClass | InjectionToken | symbol; type BindFactory = (ctx: any) => T | Promise; type BindingScope = 'singleton' | 'request' | 'transient'; type BindingOptions = { scope?: BindingScope; }; type ValueProvider = { useValue: T; }; type ClassProvider = BindingOptions & { useClass: BindClass; dependencies?: BindToken[]; }; type FactoryProvider = BindingOptions & { useFactory: BindFactory; }; type ExistingProvider = { useExisting: BindToken; }; type BindProvider = ValueProvider | ClassProvider | FactoryProvider | ExistingProvider; type BindValue = T | BindFactory | BindClass | BindProvider; type BindDecorator = MethodDecorator & ClassDecorator & { any>(value: Value, context: ClassMethodDecoratorContext): void | Value; any>(value: Value, context: ClassDecoratorContext): void | Value; }; type BindingMetadata = { tokens?: BindToken[]; method?: PropertyKey; }; declare class InjectionToken { readonly description: string; readonly __type?: T; readonly key: symbol; constructor(description: string); toString(): string; } declare class ContainerResolutionError extends Error { readonly path: BindToken[]; constructor(message: string, path: BindToken[]); } declare class Container { readonly parent?: Container | undefined; private readonly context?; private readonly requestScope; private static readonly activeScope; private static readonly containers; private static readonly globalContainer; private readonly registry; private readonly instances; private readonly pending; constructor(parent?: Container | undefined, context?: any | undefined, requestScope?: boolean); static get global(): Container; static current(): Container; static run(container: Container, callback: () => T): T; static create(parent?: Container): Container; createRequestScope(ctx: any): Container; static bind(token: BindToken, value: BindValue, options?: BindingOptions): void; static unbind(token: BindToken): void; static clear(): void; static has(token: BindToken): boolean; static bindings(): Record>; static resolve(token: BindToken, ctx?: any, autoDiscover?: boolean): Promise; bind(token: BindToken, value: BindValue, options?: BindingOptions): void; unbind(token: BindToken): void; clear(): void; has(token: BindToken): boolean; entries(): ReadonlyMap; bindings(): Record>; resolve(token: BindToken, ctx?: any, autoDiscover?: boolean): Promise; resolveOrFail(token: BindToken, ctx?: any, autoDiscover?: boolean): Promise; private resolveToken; private findProvider; private resolveProvider; private instantiate; private findRequestScope; private lineage; private findEquivalentToken; private getComparableStaticProps; private staticPropsMatch; } declare function Bind(...tokens: BindToken[]): BindDecorator; declare function getMetadataKey(): symbol; declare function getStandardMetadata(metadata: object | undefined, propertyKey?: PropertyKey): BindingMetadata | undefined; declare function setStandardMetadata(metadata: object | undefined, propertyKey: PropertyKey, value: BindingMetadata): void; declare function getBindingMetadataFromTargets(targets: Array<{ target?: object; propertyKey?: PropertyKey; }>): BindingMetadata | undefined; declare function getBindingMetadata(target: object, propertyKey?: PropertyKey): BindingMetadata | undefined; declare function setBindingMetadata(target: object, propertyKey: PropertyKey, metadata: BindingMetadata): void; declare function getDesignParamTypes(target: object, propertyKey?: PropertyKey): BindToken[]; declare function isClass(value: any): boolean; //#endregion export { Bind, BindClass, BindDecorator, BindFactory, BindProvider, BindToken, BindValue, BindingOptions, BindingScope, ClassProvider, Container, ContainerResolutionError, ExistingProvider, FactoryProvider, InjectionToken, ValueProvider, getBindingMetadata, getBindingMetadataFromTargets, getDesignParamTypes, getMetadataKey, getStandardMetadata, isClass, setBindingMetadata, setStandardMetadata };