/** * Represents an axis for conditional bindings. * Axes allow selecting different implementations based on runtime configuration. * * Example: Axis.of('Environment', ['Prod', 'Test', 'Dev']) */ export declare class Axis { readonly name: string; readonly choices: readonly string[]; constructor(name: string, choices: readonly string[]); static of(name: string, choices: string[]): Axis; hasChoice(choice: string): boolean; toString(): string; } /** * Represents a specific point on an axis. * Used to select which implementation to use for a binding. */ export declare class AxisPoint { readonly axis: Axis; readonly choice: string; constructor(axis: Axis, choice: string); static of(axis: Axis, choice: string): AxisPoint; equals(other: AxisPoint): boolean; toString(): string; } /** * A set of axis points that determines which implementations to use. * Multiple axis points can be active simultaneously. */ export declare class Activation { private readonly points; constructor(points?: AxisPoint[]); static of(...points: AxisPoint[]): Activation; static empty(): Activation; /** * Get the choice for a specific axis, if activated */ getChoice(axis: Axis): string | undefined; /** * Check if this activation has a choice for the given axis */ hasAxis(axis: Axis): boolean; /** * Get all activated axis points */ getPoints(): AxisPoint[]; /** * Create a new activation with an additional point */ withPoint(point: AxisPoint): Activation; /** * Merge this activation with another, with the other taking precedence */ merge(other: Activation): Activation; toString(): string; } /** * Tags associated with a binding to enable conditional selection */ export declare class BindingTags { private readonly tags; constructor(tags?: Map); static empty(): BindingTags; static of(points: AxisPoint[]): BindingTags; /** * Add a tag for an axis */ withTag(axis: Axis, choice: string): BindingTags; /** * Check if this binding matches the given activation. * A binding matches if all its tags are satisfied by the activation. * - Bindings with no tags match any activation (including empty) * - Bindings with tags only match if activation specifies matching choices for all tagged axes */ matches(activation: Activation): boolean; /** * Count how many tags this binding has. * Used to determine specificity when multiple bindings match. */ specificity(): number; getTags(): Map; toString(): string; } //# sourceMappingURL=Activation.d.ts.map