import type { ProviderOpts } from "../interfaces/ProviderOpts.js"; import type { TokenProvider } from "../interfaces/TokenProvider.js"; import { Provider } from "./Provider.js"; import type { ProviderType } from "./ProviderType.js"; /** * Provider container managing registered providers and their metadata. * * Extends `Map` to provide specialized methods for adding, retrieving, and managing providers * within the dependency injection system. Acts as a registry for all injectable classes and values. * * ### Usage * * ```typescript * import {Container} from "@tsed/di"; * * const container = new Container(); * container.add(MyService, {scope: ProviderScope.SINGLETON}); * * const provider = container.getProvider(MyService); * const controllers = container.getProviders(ProviderType.CONTROLLER); * ``` * * @public */ export declare class Container extends Map { /** * * @param token * @param settings */ add(token: TokenProvider, settings?: Partial): this; /** * Add a provider to the * @param token * @param settings */ addProvider(token: TokenProvider, settings?: Partial): this; /** * * @param token */ hasProvider(token: TokenProvider): boolean; /** * Add a provider to the * @param token * @param provider */ setProvider(token: TokenProvider, provider: Provider): this; /** * The getProvider() method returns a specified element from a Map object. * @returns {T} Returns the element associated with the specified key or undefined if the key can't be found in the Map object. * @param token */ getProvider(token: TokenProvider | undefined): T | undefined; /** * Get all providers registered in the injector container. * * @param type Filter the list by the given ProviderType. * @returns {[TokenProvider , Provider][]} */ getProviders(type?: TokenProvider | ProviderType | string | string[]): Provider[]; addProviders(container: Map): void; }