import { Vertex } from './Vertex';
import { Entity, Property } from '@alephdata/followthemoney';
import { GraphLayout } from './GraphLayout';
import { Rectangle } from './Rectangle';
import { Point, IPointData } from './Point';
interface IEdgeData {
    id: string;
    type: string;
    label: string;
    sourceId: string;
    targetId: string;
    labelPosition?: IPointData;
    entityId?: string;
    propertyQName?: string;
}
export declare class Edge {
    private readonly layout;
    readonly id: string;
    readonly type: string;
    readonly label: string;
    readonly sourceId: string;
    readonly targetId: string;
    labelPosition?: Point;
    readonly entityId?: string;
    readonly propertyQName?: string;
    garbage: boolean;
    constructor(layout: GraphLayout, data: IEdgeData);
    getSource(): Vertex | undefined;
    getTarget(): Vertex | undefined;
    isHidden(): boolean;
    isEntity(): boolean;
    getEntity(): Entity | undefined;
    isDirected(): boolean;
    getRect(): Rectangle;
    getCenter(): Point;
    isLinkedToVertex(vertex: Vertex): boolean;
    update(other: Edge): Edge;
    clone(): Edge;
    getLabelPosition(): Point | undefined;
    setLabelPosition(labelPosition?: Point): Edge;
    toJSON(): IEdgeData;
    static fromJSON(layout: GraphLayout, data: any): Edge;
    static fromEntity(layout: GraphLayout, entity: Entity, source: Vertex, target: Vertex): Edge;
    static fromValue(layout: GraphLayout, property: Property, source: Vertex, target: Vertex): Edge;
}
export {};
