import { Newable, ServiceIdentifier } from '@inversifyjs/common'; import { BindingActivation, BindingConstraints, BindingDeactivation, DynamicValueBuilder, Factory, MetadataName, MetadataTag, Provider, ResolutionContext } from '@inversifyjs/core'; import { BindingIdentifier } from './BindingIdentifier'; import { MapToResolvedValueInjectOptions } from './MapToResolvedValueInjectOptions'; export interface BoundServiceSyntax { getIdentifier(): BindingIdentifier; } export interface BindToFluentSyntax { to(type: Newable): BindInWhenOnFluentSyntax; toSelf(): BindInWhenOnFluentSyntax; toConstantValue(value: T): BindWhenOnFluentSyntax; toDynamicValue(builder: DynamicValueBuilder): BindInWhenOnFluentSyntax; toFactory(factory: T extends Factory ? (context: ResolutionContext) => T | Promise : never): BindWhenOnFluentSyntax; /** * @deprecated Use `toFactory()` instead. Providers will be removed in v8. * Providers exist for historical reasons from v5 when async dependencies weren't supported. * Factories are more flexible and can handle both sync and async operations. */ toProvider(provider: T extends Provider ? (context: ResolutionContext) => T : never): BindWhenOnFluentSyntax; toResolvedValue(factory: () => T | Promise): BindInWhenOnFluentSyntax; toResolvedValue(factory: (...args: TArgs) => T | Promise, injectOptions: MapToResolvedValueInjectOptions): BindInWhenOnFluentSyntax; toService(service: ServiceIdentifier): void; } export interface BindInFluentSyntax extends BoundServiceSyntax { inSingletonScope(): BindWhenOnFluentSyntax; inTransientScope(): BindWhenOnFluentSyntax; inRequestScope(): BindWhenOnFluentSyntax; } export interface BindInWhenOnFluentSyntax extends BindInFluentSyntax, BindWhenOnFluentSyntax { } export interface BindOnFluentSyntax extends BoundServiceSyntax { onActivation(activation: BindingActivation): BindWhenFluentSyntax; onDeactivation(deactivation: BindingDeactivation): BindWhenFluentSyntax; } export interface BindWhenOnFluentSyntax extends BindWhenFluentSyntax, BindOnFluentSyntax { } export interface BindWhenFluentSyntax extends BoundServiceSyntax { when(constraint: (metadata: BindingConstraints) => boolean): BindOnFluentSyntax; whenAnyAncestor(constraint: (metadata: BindingConstraints) => boolean): BindOnFluentSyntax; whenAnyAncestorIs(serviceIdentifier: ServiceIdentifier): BindOnFluentSyntax; whenAnyAncestorNamed(name: MetadataName): BindOnFluentSyntax; whenAnyAncestorTagged(tag: MetadataTag, tagValue: unknown): BindOnFluentSyntax; whenDefault(): BindOnFluentSyntax; whenNamed(name: MetadataName): BindOnFluentSyntax; whenNoAncestor(constraint: (metadata: BindingConstraints) => boolean): BindOnFluentSyntax; whenNoAncestorIs(serviceIdentifier: ServiceIdentifier): BindOnFluentSyntax; whenNoAncestorNamed(name: MetadataName): BindOnFluentSyntax; whenNoAncestorTagged(tag: MetadataTag, tagValue: unknown): BindOnFluentSyntax; whenNoParent(constraint: (metadata: BindingConstraints) => boolean): BindOnFluentSyntax; whenNoParentIs(serviceIdentifier: ServiceIdentifier): BindOnFluentSyntax; whenNoParentNamed(name: MetadataName): BindOnFluentSyntax; whenNoParentTagged(tag: MetadataTag, tagValue: unknown): BindOnFluentSyntax; whenParent(constraint: (metadata: BindingConstraints) => boolean): BindOnFluentSyntax; whenParentIs(serviceIdentifier: ServiceIdentifier): BindOnFluentSyntax; whenParentNamed(name: MetadataName): BindOnFluentSyntax; whenParentTagged(tag: MetadataTag, tagValue: unknown): BindOnFluentSyntax; whenTagged(tag: MetadataTag, tagValue: unknown): BindOnFluentSyntax; } //# sourceMappingURL=BindingFluentSyntax.d.ts.map