import { SelectQuery } from "../models/SelectQuery";
import { CTEQuery } from "../models/Clause";
/**
 * CTE dependency tree node for visualization
 */
export interface CTENode {
    name: string;
    columns: string[];
    dependencies: string[];
    dependents: string[];
    query: CTEQuery;
    level: number;
}
/**
 * CTE dependency graph for debugging complex queries
 */
export interface CTEGraph {
    nodes: Map<string, CTENode>;
    rootNodes: string[];
    leafNodes: string[];
}
/**
 * Debug utility for visualizing CTE dependencies and column search paths
 */
export declare class CTEDependencyTracer {
    private columnCollector;
    private silent;
    constructor(options?: {
        silent?: boolean;
    });
    /**
     * Build complete CTE dependency graph
     */
    buildGraph(query: SelectQuery): CTEGraph;
    /**
     * Trace column search path through CTE dependencies
     */
    traceColumnSearch(query: SelectQuery, columnName: string): {
        searchPath: string[];
        foundIn: string[];
        notFoundIn: string[];
        graph: CTEGraph;
    };
    /**
     * Print visual representation of CTE dependency graph
     */
    printGraph(graph: CTEGraph): void;
    /**
     * Print column search trace
     */
    printColumnTrace(columnName: string, trace: ReturnType<typeof this.traceColumnSearch>): void;
    /**
     * Find CTEs that are actually referenced in the given query.
     * Uses TableSourceCollector to properly identify table references from the AST.
     */
    private findReferencedCTEs;
    private extractReturningColumns;
    private extractColumnsFromItems;
    private extractColumnName;
    private isSelectQuery;
    private calculateLevels;
    private getSearchOrder;
}
