import { EdgeIdentity, EdgeType, Lineage, LineageEdge, LineageOptions, MetadataProviderFn, Relation, RelationPrimary } from '../lineage.typing';
import { FlinkSQLRelationVisitor, InsertRelation, QueryRelation, TableRelation, ViewRelation } from './flinksql-relation.visitor';
export declare class LineageVisitor extends FlinkSQLRelationVisitor<void> {
    private options;
    private getTableMetadata?;
    relations: Array<{
        relationPrimary?: RelationPrimary;
        relation: Relation;
    }>;
    edges: LineageEdge[];
    private edgeIdSeq;
    private queryIdSeq;
    private viewIdSeq;
    constructor(options: LineageOptions, getTableMetadata?: MetadataProviderFn | undefined);
    private findColumnByEdgeIdentity;
    protected defaultResult(): void;
    getLineage(): Lineage;
    aggregateResult(_aggregate: void, _nextResult: void): void;
    onColumnReference(source: EdgeIdentity, target: EdgeIdentity, currentClause?: EdgeType): void;
    onRelation(relation: TableRelation | QueryRelation | InsertRelation | ViewRelation, alias?: string): void;
}
