import { Range } from 'vscode-languageserver-textdocument';
export interface Lineage {
    nodes: Relation[];
    edges: LineageEdge[];
}
export declare type RelationType = 'table' | 'query' | 'insert' | 'view';
export interface Relation {
    type: RelationType;
    id: string;
    label: string;
    range?: Range;
    isSourceOnly?: boolean;
    isTargetOnly?: boolean;
    columns: RelationColumn[];
    data?: RelationPrimary;
}
export declare type EdgeType = 'insert' | 'view' | 'create' | 'select' | 'from' | 'where' | 'group by' | 'order by' | 'having' | 'join';
export interface EdgeIdentity {
    relationId: string;
    columnId?: string;
}
export interface LineageEdge {
    type: 'edge';
    id: string;
    label?: string;
    source: EdgeIdentity;
    target: EdgeIdentity;
    edgeType?: EdgeType;
}
export interface RelationColumn {
    id: string;
    label: string;
    isAssumed?: boolean;
    range?: Range;
    inconsistent?: boolean;
    type?: string;
}
export interface LineageOptions {
    mergeLeaves?: boolean;
    ignoreDDLs?: boolean;
}
export interface RelationPrimary {
    type: RelationType;
    catalogName?: string;
    databaseName?: string;
    relationName: string;
    alias?: string;
    range?: Range;
}
export interface RelationColumnMetadata {
    id: string;
    label: string;
    data?: unknown;
}
export declare type MetadataProviderFn = (relationPrimary: RelationPrimary) => {
    columns: RelationColumnMetadata[];
} | undefined;
