import type { App } from '../../App'; import type { Group } from '../../shapes/Group'; import type { DiagramEditorHandle, DiagramEditorOptions, DiagramEditorTool } from './types'; export declare class DiagramEditor implements DiagramEditorHandle { readonly root: Group; private app; private options; private flags; private overlay; private tool; private selectedId; private selectedEdgeId; private connectFromId; private previewLine; private handlers; private keyHandler; private destroyed; private dragRaf; constructor(app: App, root: Group, options?: DiagramEditorOptions); setTool(tool: DiagramEditorTool): void; getTool(): DiagramEditorTool; selectNode(id: string | null): void; selectEdge(id: string | null): void; getSelectedEdgeId(): string | null; getSelectedNodeId(): string | null; /** * After org collapse/expand (or any relayout that hides nodes): drop selection * chrome for hidden nodes so the dotted border doesn't linger in empty space. */ afterStructureChange(): void; reroute(): void; wireNode(node: Group): void; wireEdges(): void; /** Remove listeners bound to edge nodes that were destroyed during reroute. */ private pruneDetachedEdgeHandlers; deleteSelectedEdge(): void; private rewireEdgeEndpoint; private addEdge; private updateNodeLabel; private refreshOverlay; private drawEdgeSelection; /** Diagram-local → stage/world (accounts for fitToBounds scale/offset). */ private rootLocalToStage; /** Stage/world → diagram-local. */ private stageToRootLocal; private findEdgeGroup; private updateEdgeWaypoints; private addBendPointAt; private orderWaypointsAlongEdge; private removeLastBendPoint; private addBendHandle; private addEndpointHandle; private addResizeHandles; private addRotateHandle; private addPorts; private drawPreviewLine; private clearPreview; private emitChange; destroy(): void; }