export interface Modifier { id: string; source?: string; apply: (value: V, context: PipelineContext) => V; } export interface PipelineContext { base: V; index: number; trace: readonly TraceStep[]; } export interface TraceStep { id: string; source?: string; index: number; before: V; after: V; changed: boolean; } export interface PipelineResult { base: V; value: V; trace: readonly TraceStep[]; } export declare function runPipeline(base: V, modifiers: readonly Modifier[], equals?: (a: V, b: V) => boolean): PipelineResult; export interface ModifierPipeline { add(modifier: Modifier): void; insertAt(index: number, modifier: Modifier): void; remove(id: string): boolean; clear(): void; list(): readonly Modifier[]; run(base: V): PipelineResult; } export declare function createModifierPipeline(initial?: readonly Modifier[], equals?: (a: V, b: V) => boolean): ModifierPipeline;