import { SelectQuery, SimpleSelectQuery } from '../models/SelectQuery'; import { SqlParameterValue, ValueComponent } from '../models/ValueComponent'; export type OptionalConditionPruningParameters = Record; export type OptionalConditionParameterState = 'absent' | 'present' | 'unknown'; export type OptionalConditionParameterStates = Record; 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[];