import { BoundInjectionToken, ClassType, ClassTypeWithArgument, ClassTypeWithoutArguments, FactoryInjectionToken, InjectionToken, InjectionTokenSchemaType } from "../token/injection-token.mjs"; import { InjectState, Join, UnionToArray } from "./types.mjs"; import { ServiceInitializationContext } from "../internal/context/service-initialization-context.mjs"; import { Factorable, FactorableWithArgs } from "../interfaces/factory.interface.mjs"; import { ZodType, z } from "zod/v4"; //#region src/utils/get-injectors.d.mts interface Injectors { asyncInject(token: T): InstanceType extends Factorable ? Promise : Promise>; asyncInject>(token: T, args: Args): Promise>; asyncInject>(token: T, args: z.input): Promise; asyncInject(token: InjectionToken, args: z.input): Promise; asyncInject(token: InjectionToken): R extends false ? Promise : S extends ZodType ? `Error: Your token requires args: ${Join, ', '>}` : 'Error: Your token requires args'; asyncInject(token: InjectionToken): Promise; asyncInject(token: BoundInjectionToken): Promise; asyncInject(token: FactoryInjectionToken): Promise; inject(token: T): InstanceType extends Factorable ? R : InstanceType; inject>(token: T, args: Args): InstanceType; inject>(token: T, args: z.input): R; inject(token: InjectionToken, args: z.input): T; inject(token: InjectionToken): R extends false ? T : S extends ZodType ? `Error: Your token requires args: ${Join, ', '>}` : 'Error: Your token requires args'; inject(token: InjectionToken): T; inject(token: BoundInjectionToken): T; inject(token: FactoryInjectionToken): T; /** * Optional injection that returns null if the service fails to initialize * or is not available. This is useful when you want to inject a service * that may not be configured or may fail gracefully. * * @example * ```ts * class MyService { * constructor() { * const optionalService = optional(OptionalServiceToken) * // optionalService will be null if initialization fails * if (optionalService) { * optionalService.doSomething() * } * } * } * ``` */ optional(token: T): (InstanceType extends Factorable ? R : InstanceType) | null; optional(token: InjectionToken, args: z.input): T | null; optional(token: InjectionToken): R extends false ? T | null : S extends ZodType ? `Error: Your token requires args: ${Join, ', '>}` : 'Error: Your token requires args'; optional(token: InjectionToken): T | null; optional(token: BoundInjectionToken): T | null; optional(token: FactoryInjectionToken): T | null; wrapSyncInit(cb: () => any): (injectState?: InjectState) => [any, Promise[], InjectState]; provideFactoryContext(context: ServiceInitializationContext | null): ServiceInitializationContext | null; } declare function getInjectors(): Injectors; //#endregion export { Injectors, getInjectors }; //# sourceMappingURL=get-injectors.d.mts.map