import { FactoryContext } from "../internal/context/factory-context.mjs"; import { ZodObject, ZodOptional, ZodRecord, z } from "zod/v4"; //#region src/token/injection-token.d.mts type ClassType = new (...args: any[]) => any; type ClassTypeWithoutArguments = new () => any; type ClassTypeWithArgument = new (arg: Arg) => any; type ClassTypeWithOptionalArgument = new (arg?: Arg) => any; type ClassTypeWithInstance = new (...args: any[]) => T; type ClassTypeWithInstanceAndArgument = new (arg: Arg) => T; type ClassTypeWithInstanceAndOptionalArgument = new (arg?: Arg) => T; type BaseInjectionTokenSchemaType = ZodObject | ZodRecord; type OptionalInjectionTokenSchemaType = ZodOptional | ZodOptional; type InjectionTokenSchemaType = BaseInjectionTokenSchemaType | OptionalInjectionTokenSchemaType; declare class InjectionToken ? false : S extends ZodOptional ? false : S extends ZodObject ? true : S extends ZodRecord ? true : false)> { readonly name: string | symbol | ClassType; readonly schema: ZodObject | undefined; readonly id: string; private formattedName; constructor(name: string | symbol | ClassType, schema: ZodObject | undefined, customId?: string); static create(name: T): InjectionToken, undefined>; static create(name: T, schema: Schema): Schema['_def']['type'] extends 'ZodOptional' ? InjectionToken, Schema, false> : InjectionToken, Schema, true>; static create(name: string | symbol): InjectionToken; static create(name: string | any, schema: Schema): InjectionToken; static bound(token: InjectionToken, value: z.input): BoundInjectionToken; static factory(token: InjectionToken, factory: (ctx: FactoryContext) => Promise>): FactoryInjectionToken; static refineType(token: BoundInjectionToken): BoundInjectionToken; toString(): string; } declare class BoundInjectionToken { readonly token: InjectionToken; readonly value: z.input; id: string; name: string | symbol | ClassType; schema: InjectionTokenSchemaType; constructor(token: InjectionToken, value: z.input); toString(): string; } declare class FactoryInjectionToken { readonly token: InjectionToken; readonly factory: (ctx: FactoryContext) => Promise>; value?: z.input; resolved: boolean; id: string; name: string | symbol | ClassType; schema: InjectionTokenSchemaType; constructor(token: InjectionToken, factory: (ctx: FactoryContext) => Promise>); resolve(ctx: FactoryContext): Promise>; toString(): string; } type AnyInjectableType = ClassType | InjectionToken | BoundInjectionToken | FactoryInjectionToken; type InjectionTokenType = InjectionToken | BoundInjectionToken | FactoryInjectionToken; //#endregion export { AnyInjectableType, BaseInjectionTokenSchemaType, BoundInjectionToken, ClassType, ClassTypeWithArgument, ClassTypeWithInstance, ClassTypeWithInstanceAndArgument, ClassTypeWithInstanceAndOptionalArgument, ClassTypeWithOptionalArgument, ClassTypeWithoutArguments, FactoryInjectionToken, InjectionToken, InjectionTokenSchemaType, InjectionTokenType, OptionalInjectionTokenSchemaType }; //# sourceMappingURL=injection-token.d.mts.map