import { CommonTable, PartitionByClause } from "../models/Clause";
import { SelectQuery } from "../models/SelectQuery";
import { SqlComponent, SqlComponentVisitor } from "../models/SqlComponent";
import { ValueList } from "../models/ValueComponent";
/**
 * A visitor that collects all CommonTable instances from a SQL query structure.
 * This includes tables from:
 * - WITH clauses
 * - Subqueries
 * - Inline queries
 * - UNION queries
 * - Value components that may contain queries
 */
export declare class CTECollector implements SqlComponentVisitor<void> {
    private handlers;
    private commonTables;
    private visitedNodes;
    private isRootVisit;
    constructor();
    /**
     * Get all collected CommonTables
     */
    getCommonTables(): CommonTable[];
    /**
     * Reset the collection of CommonTables
     */
    private reset;
    collect(query: SelectQuery): CommonTable[];
    /**
     * Main entry point for the visitor pattern.
     * Implements the shallow visit pattern to distinguish between root and recursive visits.
     */
    visit(arg: SqlComponent): void;
    /**
     * Internal visit method used for all nodes.
     * This separates the visit flag management from the actual node visitation logic.
     */
    private visitNode;
    private visitSimpleSelectQuery;
    private visitBinarySelectQuery;
    private visitValuesQuery;
    private visitWithClause;
    private visitCommonTable;
    private visitSelectClause;
    private visitSelectItem;
    private visitFromClause;
    private visitSourceExpression;
    private visitTableSource;
    private visitFunctionSource;
    private visitParenSource;
    private visitSubQuerySource;
    private visitInlineQuery;
    private visitJoinClause;
    private visitJoinOnClause;
    private visitJoinUsingClause;
    private visitWhereClause;
    private visitGroupByClause;
    private visitHavingClause;
    private visitOrderByClause;
    private visitWindowFrameClause;
    private visitLimitClause;
    private visitForClause;
    private visitOrderByItem;
    private visitParenExpression;
    private visitBinaryExpression;
    private visitUnaryExpression;
    private visitCaseExpression;
    private visitSwitchCaseArgument;
    private visitCaseKeyValuePair;
    private visitBetweenExpression;
    private visitFunctionCall;
    private visitArrayExpression;
    private visitArrayQueryExpression;
    private visitTupleExpression;
    private visitCastExpression;
    private visitTypeValue;
    private visitWindowFrameExpression;
    private visitWindowFrameSpec;
    private visitIdentifierString;
    private visitRawString;
    private visitColumnReference;
    private visitParameterExpression;
    private visitLiteralValue;
    visitPartitionByClause(partitionBy: PartitionByClause): void;
    visitValueList(valueList: ValueList): void;
}
