import { SerializedVector, Vector } from './vector.js'; import { Color, SerializedColor } from './color.js'; import { Flow } from './flow.js'; import { Hooks } from './hooks.js'; import { Node } from './node.js'; import { Renderable, Renderer, Serializable } from '../common/interfaces.js'; export declare class Group extends Hooks implements Serializable, Renderable { renderer: Renderer; flow?: Flow; nodes: Node[]; get name(): string | undefined; set name(name: string); get position(): Vector | undefined; set position(position: Vector); nodeDeltas: Vector[]; hitColor?: Color; private textWidth?; private textHeight?; private _name?; private renderState; private _position?; width?: number; height?: number; style?: GroupStyle; id?: string; private constructor(); static create(flow: Flow, position: Vector, options?: GroupOptions): Group; add(node: Node): boolean; remove(node: Node): boolean; static isNodeInside(group: Group, node: Node, scale: number, transform: DOMMatrix): boolean; private setHitColor; private computeTextMetrics; private updateRenderState; private recomputeNodePositions; render(): void; private _render; private _offRender; private getRenderParams; onClick(screenPosition: Vector, realPosition: Vector): void; serialize(): SerializedGroup; } export interface SerializedGroup { position?: SerializedVector; width?: number; height?: number; name?: string; style?: GroupStyle; id?: string; hitColor?: SerializedColor; nodes?: (string | undefined)[]; } export interface GroupStyle { color?: string; borderColor?: string; titleColor?: string; fontSize?: string; font?: string; } export interface GroupOptions { name: string; width?: number; height?: number; style?: GroupStyle; id?: string; hitColor?: Color; } export interface GroupRenderParams { position: SerializedVector; width: number; height: number; }