import { BoundInjectionToken, ClassType, ClassTypeWithArgument, FactoryInjectionToken, InjectionToken, InjectionTokenSchemaType } from "../token/injection-token.mjs"; import { Join, UnionToArray } from "../utils/types.mjs"; import { InjectableScope } from "../enums/injectable-scope.enum.mjs"; import { Injectors } from "../utils/get-injectors.mjs"; import { Factorable } from "../interfaces/factory.interface.mjs"; import { Registry } from "../token/registry.mjs"; import { NameResolver } from "../internal/core/name-resolver.mjs"; import { LifecycleEventBus } from "../internal/lifecycle/lifecycle-event-bus.mjs"; import { ServiceInvalidator } from "../internal/core/service-invalidator.mjs"; import { TokenResolver } from "../internal/core/token-resolver.mjs"; import { UnifiedStorage } from "../internal/holder/unified-storage.mjs"; import { AbstractContainer } from "./abstract-container.mjs"; import { ScopedContainer } from "./scoped-container.mjs"; import { ScopeTracker } from "../internal/core/scope-tracker.mjs"; import { ServiceInitializer } from "../internal/core/service-initializer.mjs"; import { InstanceResolver } from "../internal/core/instance-resolver.mjs"; import { ZodType, z } from "zod/v4"; //#region src/container/container.d.mts /** * Main dependency injection container. * * Provides a simplified public API for dependency injection. * Handles singleton and transient services directly, * while request-scoped services require using beginRequest() to create a ScopedContainer. */ declare class Container extends AbstractContainer { protected readonly registry: Registry; protected readonly logger: Console | null; protected readonly injectors: Injectors; protected readonly defaultScope = InjectableScope.Singleton; protected readonly requestId: undefined; private readonly storage; private readonly serviceInitializer; private readonly serviceInvalidator; private readonly tokenResolver; private readonly nameResolver; private readonly scopeTracker; private readonly eventBus; private readonly instanceResolver; private readonly activeRequestIds; constructor(registry?: Registry, logger?: Console | null, injectors?: Injectors); private registerSelf; /** * Gets an instance from the container. * NOTE: Request-scoped services cannot be resolved directly from Container. * Use beginRequest() to create a ScopedContainer for request-scoped services. */ get(token: T): InstanceType extends Factorable ? Promise : Promise>; get, R>(token: T, args: R): Promise>; get(token: InjectionToken, args: z.input): Promise; get(token: InjectionToken): R extends false ? Promise : S extends ZodType ? `Error: Your token requires args: ${Join, ', '>}` : 'Error: Your token requires args'; get(token: InjectionToken): Promise; get(token: BoundInjectionToken): Promise; get(token: FactoryInjectionToken): Promise; /** * Invalidates a service and its dependencies. */ invalidate(service: unknown): Promise; /** * Disposes the container and cleans up all resources. */ dispose(): Promise; /** * @internal * Attempts to get an instance synchronously if it already exists. * Overrides base class to support requestId parameter for ScopedContainer compatibility. */ tryGetSync(token: any, args?: any, requestId?: string): T | null; /** * Begins a new request context and returns a ScopedContainer. */ beginRequest(requestId: string, metadata?: Record): ScopedContainer; /** * Gets all active request IDs. */ getActiveRequestIds(): ReadonlySet; /** * Checks if a request is active. */ hasActiveRequest(requestId: string): boolean; /** * Removes a request ID from active requests. * Called by ScopedContainer when request ends. */ removeRequestId(requestId: string): void; getStorage(): UnifiedStorage; getServiceInitializer(): ServiceInitializer; getServiceInvalidator(): ServiceInvalidator; getTokenResolver(): TokenResolver; getNameResolver(): NameResolver; getScopeTracker(): ScopeTracker; getEventBus(): LifecycleEventBus; getRegistry(): Registry; getInstanceResolver(): InstanceResolver; } //#endregion export { Container }; //# sourceMappingURL=container.d.mts.map