import { SimpleSelectQuery } from "../models/SimpleSelectQuery";
import { ColumnReference, ValueComponent } from "../models/ValueComponent";
export type ClauseScopedColumnReferenceClause = "select" | "where" | "joinOn" | "groupBy" | "having" | "orderBy" | "window" | "limitOffset";
export interface ClauseScopedColumnReferenceInfo {
    clause: ClauseScopedColumnReferenceClause;
    reference: ColumnReference;
    qualifiedName: string;
    namespaces: string[];
    namespace: string | null;
    column: string;
    expression: ValueComponent;
}
export interface ClauseScopedColumnReferences {
    select: ClauseScopedColumnReferenceInfo[];
    where: ClauseScopedColumnReferenceInfo[];
    joinOn: ClauseScopedColumnReferenceInfo[];
    groupBy: ClauseScopedColumnReferenceInfo[];
    having: ClauseScopedColumnReferenceInfo[];
    orderBy: ClauseScopedColumnReferenceInfo[];
    window: ClauseScopedColumnReferenceInfo[];
    limitOffset: ClauseScopedColumnReferenceInfo[];
}
/**
 * Collects ColumnReference nodes grouped by the root SimpleSelectQuery clause that owns them.
 *
 * Subquery and CTE bodies are intentionally not traversed because they have their own query-body
 * ownership. Use ColumnReferenceCollector when comprehensive tree traversal is required.
 */
export declare class ClauseScopedColumnReferenceCollector {
    collect(query: SimpleSelectQuery): ClauseScopedColumnReferences;
    private createEmptyResult;
    private collectFromSelectClause;
    private collectFromJoinClauses;
    private collectFromWhereClause;
    private collectFromGroupByClause;
    private collectFromHavingClause;
    private collectFromOrderByClause;
    private collectFromLimitClause;
    private collectFromOffsetClause;
    private collectFromFetchClause;
    private collectFromWindowsClause;
    private collectFromValueComponent;
    private collectFromFunctionCall;
    private collectFromWindowFrameExpression;
    private createInfo;
    private getNameText;
}
