import { Entity, Property, Value } from '@alephdata/followthemoney';
import { Point, IPointData } from './Point';
import { GraphLayout } from './GraphLayout';
import { Edge } from "./Edge";
interface IVertexData {
    id: string;
    type: string;
    label: string;
    fixed: boolean;
    hidden: boolean;
    color: string;
    radius: number;
    position?: IPointData;
    entityId?: string;
}
export declare class Vertex {
    readonly layout: GraphLayout;
    readonly id: string;
    readonly type: string;
    readonly label: string;
    readonly entityId?: string;
    fixed: boolean;
    hidden: boolean;
    color: string;
    radius: number;
    position: Point;
    garbage: boolean;
    constructor(layout: GraphLayout, data: IVertexData);
    getOwnEdges(): Edge[];
    getDegree(): number;
    isHidden(): boolean;
    isEntity(): boolean;
    getEntity(): Entity | undefined;
    clone(): Vertex;
    getPosition(): Point;
    setPosition(position: Point): Vertex;
    snapPosition(fuzzy: Point): Vertex;
    setColor(color: string): Vertex;
    setRadius(radius: number): Vertex;
    update(other: Vertex): Vertex;
    toJSON(): IVertexData;
    static fromJSON(layout: GraphLayout, data: any): Vertex;
    static fromEntity(layout: GraphLayout, entity: Entity): Vertex;
    static fromValue(layout: GraphLayout, property: Property, value: Value): Vertex;
}
export {};
