import { SelectQuery } from "../models/SelectQuery";
import { SqlComponentFormatOptions } from "./SqlComponentFormatter";
export interface ConditionDeduplicationApplied {
    kind: "dedupe_condition";
    conditionSql: string;
    scopeId: string;
    reason: string;
}
export interface ConditionDeduplicationResult {
    /** API output shape review: this phase mutates and returns the model only; ConditionOptimization remains responsible for compatibility sql output. */
    query: SelectQuery | null;
    applied: readonly ConditionDeduplicationApplied[];
}
export declare class ConditionDeduplicationOptimizer {
    private visited;
    private applied;
    optimize(query: SelectQuery | null, options: SqlComponentFormatOptions): ConditionDeduplicationResult;
    private visitSelectQuery;
    private visitSourceExpression;
    private visitValueComponent;
    private dedupeCondition;
}
