import { TableSource } from "../models/Clause";
import { SqlComponent, SqlComponentVisitor } from "../models/SqlComponent";
/**
 * A specialized table source collector designed for CTE dependency analysis.
 *
 * Unlike the general-purpose TableSourceCollector, this collector:
 * - Always includes CTE references in results (treats CTEs as valid table sources)
 * - Always performs deep traversal of subqueries, WHERE clauses, etc.
 * - Is optimized for dependency analysis rather than database schema analysis
 *
 * This collector is specifically designed for use by CTEDependencyAnalyzer to track
 * which tables/CTEs are referenced by queries at any nesting level.
 */
export declare class CTETableReferenceCollector implements SqlComponentVisitor<void> {
    private handlers;
    private tableSources;
    private visitedNodes;
    private tableNameMap;
    private isRootVisit;
    constructor();
    /**
     * Collects all table references from the given SQL component
     * @param query The SQL component to analyze
     * @returns Array of TableSource objects representing all table references
     */
    collect(query: SqlComponent): TableSource[];
    /**
     * Gets all collected table sources
     */
    getTableSources(): TableSource[];
    /**
     * Reset the collection of table sources
     */
    private reset;
    /**
     * Gets a unique identifier for a table source
     */
    private getTableIdentifier;
    /**
     * Main entry point for the visitor pattern.
     */
    visit(arg: SqlComponent): void;
    /**
     * Internal visit method used for all nodes.
     */
    private visitNode;
    private visitSimpleSelectQuery;
    private visitBinarySelectQuery;
    private visitValuesQuery;
    private visitFromClause;
    private visitSourceExpression;
    private visitTableSource;
    private visitFunctionSource;
    private visitValueComponent;
    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 visitOffsetClause;
    private visitFetchClause;
    private visitForClause;
    private visitOrderByItem;
    private visitSelectClause;
    private visitSelectItem;
    private visitParenExpression;
    private visitBinaryExpression;
    private visitJsonPredicateExpression;
    private visitUnaryExpression;
    private visitCaseExpression;
    private visitSwitchCaseArgument;
    private visitCaseKeyValuePair;
    private visitBetweenExpression;
    private visitFunctionCall;
    private visitArrayExpression;
    private visitArrayQueryExpression;
    private visitTupleExpression;
    private visitCastExpression;
    private visitValueList;
    private visitStringSpecifierExpression;
}
