import { TablePrimary } from "..";
import { Edge, Table } from "../Lineage";
import { QueryStructureVisitor, TableRelation, QueryRelation } from "./QueryStructureVisitor";
/**
 * Visitor extending #QueryStructureVisitor and implementing #onRelation() and #onColumnReference()
 * to build column-based SQL lineage.
 */
export declare class LineageVisitor<TableData, ColumnData> extends QueryStructureVisitor<void> {
    /** Collected relations (tables). */
    tables: {
        tablePrimary?: TablePrimary;
        table: Table<TableData, ColumnData>;
    }[];
    /** Collected references (edges). */
    edges: Edge[];
    constructor(getTable: (table: TablePrimary) => {
        table: {
            id: string;
            data: TableData;
        };
        columns: {
            id: string;
            data: ColumnData;
        }[];
    } | undefined, options?: {
        positionalRefsEnabled?: boolean;
    });
    onColumnReference(tableId: string, columnId?: string): void;
    onRelation(relation: TableRelation | QueryRelation, alias?: string): void;
    protected defaultResult(): void;
    aggregateResult(_aggregate: void, _nextResult: void): void;
}
//# sourceMappingURL=LineageVisitor.d.ts.map