import { Vertex } from './Vertex';
import { Entity } from '@alephdata/followthemoney';
import { GraphLayout } from './GraphLayout';
import { Rectangle } from './Rectangle';
interface IGroupingData {
    id: string;
    label?: string;
    color: string;
    vertices: Array<string>;
}
export declare class Grouping {
    private readonly layout;
    readonly id: string;
    readonly label: string | undefined;
    color: string;
    readonly vertices: Set<string>;
    constructor(layout: GraphLayout, data: IGroupingData);
    setColor(color: string): Grouping;
    hasVertex(vertex: Vertex): boolean;
    addVertex(vertex: Vertex): Grouping;
    removeVertex(vertex: Vertex): Grouping;
    getVertexIds(): Array<string>;
    getVertices(): Array<Vertex>;
    getEntities(): Array<Entity>;
    getBoundingRect(): Rectangle;
    clone(): Grouping;
    toJSON(): IGroupingData;
    static fromJSON(layout: GraphLayout, data: any): Grouping;
    static fromVertices(layout: GraphLayout, label: string, vertices: Vertex[], color?: string): Grouping;
    static fromSelection(layout: GraphLayout, vertices: Vertex[]): Grouping;
}
export {};
