import type { Lifetime } from './Lifetime'; /** * Represents a token that can be used for dependency injection. * @template T The type of the token. * * @public */ export type Token = new (...args: Array) => T; /** * Represents a dependency injection container. * * @public */ export declare class Container { private static _instance; private readonly _registry; /** * Constructs a new instance of the `Container` class. * * @protected */ protected constructor(); /** * Gets the singleton instance of the `Container` class. * * @public * @static * @readonly */ static get instance(): Container; /** * Registers a provider for the specified token. * * @public * @param token - The token to register. * @param clazz - The class to associate with the token. If not provided, the token itself will be used as the class. * @param lifetime - The optional lifetime of the instance. If not provided, the default lifetime is 'singleton'. */ provide(token: Token, clazz?: Token, lifetime?: Lifetime): void; /** * Resolves an instance for the specified token. * * @public * @param token - The token to resolve. * @returns The resolved instance. * @throws Error if no instance is found for the token. */ get(token: Token): T; /** * Read type information from metadata * * @private */ private getInjectedParams; } //# sourceMappingURL=Container.d.ts.map