/**
 * Copyright (c) 2020-present, Goldman Sachs
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
export type RawLineageModel = object;
export declare class Graph {
    nodes: LineageNode[];
    edges: LineageEdge[];
}
export declare class LineageNode {
    data: NodeData;
}
export declare class NodeData {
    id: string;
    text: string;
    type: string;
    displayType?: string;
}
export declare class LineageEdge {
    data: EdgeData;
}
export declare class EdgeData {
    id: string;
    text: string;
    type: string;
    source: LineageNode;
    target: LineageNode;
}
export declare class PropertyPathTree {
    display: string;
    value: string;
    children: PropertyPathTree[];
    qualifierSubTree?: PropertyPathTree;
}
export declare class ReportColumn {
    name: string;
    propertyTree: PropertyPathTree;
    columns: ColumnWithContext[];
    accessorColumns: LineageColumn[];
}
export declare class ColumnWithContext {
    column: LineageColumn;
    context: string;
}
export declare class LineageSchema {
    name: string;
    database: LineageDatabase;
}
export declare class LineageDatabase {
    package: string;
    name: string;
}
export declare class Owner {
    schema: LineageSchema;
    name: string;
    columns?: LineageColumn[];
    primaryKey?: LineageColumn[];
}
export declare class LineageColumn {
    owner: Owner;
    nullable: boolean;
    name: string;
    type: string;
}
export declare class ReportLineage {
    columns: ReportColumn[];
}
export declare class LineageModel {
    databaseLineage: Graph;
    classLineage: Graph;
    functionTrees: PropertyPathTree[];
    reportLineage: ReportLineage;
    propertyLineage?: PropertyLineageReport;
}
export declare class PropertyLineageReport {
    propertyOwner: PropertyLineageNode[];
    ownerLink: OwnerLink[];
}
export declare class PropertyLineageNode {
    id: string;
    name: string;
}
export declare class StorePropertyLineageNode extends PropertyLineageNode {
}
export declare class PropertyOwnerNode extends PropertyLineageNode {
    properties: LineageProperty[];
}
export declare class RootQuery extends PropertyOwnerNode {
}
export declare class LineageQuery extends PropertyOwnerNode {
}
export declare class RelationalPropertyOwner extends PropertyOwnerNode {
    namedRelation: string;
    relationType: string;
    relationName: string;
    schemaName: string;
    relationOwnerPath: string;
}
export declare class MappedSetOwner extends PropertyOwnerNode {
    setImplementationID: string;
}
export declare class MappedClassOwner extends PropertyOwnerNode {
    mapping?: string;
    setImplementationID?: string;
    _class: string;
}
export declare class OwnerLink {
    source: string;
    target: string;
}
export declare class LineageProperty {
    name: string;
    dataType?: string;
    sourceInfo?: SourceInformation;
    scope?: string;
    propertyType: string;
    ownerID: string;
    sourceProperties: LineageProperty[];
    annotations: Annotation[];
}
export declare class LineageModelProperty extends LineageProperty {
    propertyTree: PropertyPathTree;
}
export declare class SourceInformation {
    sourceId: string;
    startLine: number;
    startColumn: number;
    endLine: number;
    endColumn: number;
}
export declare class Annotation {
}
//# sourceMappingURL=LineageModel.d.ts.map