import { SelectQuery, SimpleSelectQuery } from '../models/SelectQuery';
import { SqlParameterValue, ValueComponent } from '../models/ValueComponent';
export type OptionalConditionPruningParameters = Record<string, SqlParameterValue>;
export type OptionalConditionParameterState = 'absent' | 'present' | 'unknown';
export type OptionalConditionParameterStates = Record<string, OptionalConditionParameterState>;
export type SupportedOptionalConditionBranchKind = 'expression';
export interface SupportedOptionalConditionBranch {
    query: SimpleSelectQuery;
    parameterName: string;
    expression: ValueComponent;
    kind: SupportedOptionalConditionBranchKind;
}
export interface OptionalConditionSourceRange {
    start: number;
    end: number;
    text: string;
}
export interface SupportedOptionalConditionBranchSpan {
    parameterName: string;
    kind: SupportedOptionalConditionBranchKind;
    sourceRange: OptionalConditionSourceRange;
    removalRange: OptionalConditionSourceRange;
}
/**
 * Prunes supported optional WHERE branches when an explicitly targeted parameter is absent-equivalent.
 * For the MVP, only `null` and `undefined` are treated as absent and unsupported shapes remain exact no-op.
 */
export declare const pruneOptionalConditionBranches: (query: SelectQuery, pruningParameters: OptionalConditionPruningParameters) => SelectQuery;
/**
 * Collects supported top-level optional condition branches from the query graph.
 * The returned branch expressions keep object identity so callers can move them without re-rendering.
 */
export declare const collectSupportedOptionalConditionBranches: (query: SelectQuery) => SupportedOptionalConditionBranch[];
/**
 * Collects supported optional condition branches with source-text ranges.
 *
 * The AST collector remains the authority for whether a branch is supported. The range metadata
 * is derived from tokenizer positions so development tools can generate runtime metadata without
 * reparsing SQL in production.
 */
export declare const collectSupportedOptionalConditionBranchSpans: (sql: string) => SupportedOptionalConditionBranchSpan[];
