import { Color3 } from "@babylonjs/core/Maths/math.color.js"; import type { TransformNode } from "@babylonjs/core/Meshes/transformNode.js"; import type { Scene } from "@babylonjs/core/scene.js"; import type { Vector3Value } from "@skenora/contracts"; import type { DrawingPlane } from "./shape-drawing-controller.js"; export type ShapeEditPhase = "preview" | "commit" | "cancel"; export interface ShapeEditingOptions { plane?: DrawingPlane; closed?: boolean; snap?: number; handleDiameter?: number; handleColor?: Color3; selectedColor?: Color3; lineColor?: Color3; onChange?: (points: readonly Vector3Value[], phase: ShapeEditPhase) => void; onSelectionChange?: (index: number | null) => void; } /** * Local-space control-point editor for polygon, polyline, wall and tube paths. * The host decides how preview/commit events are persisted. */ export declare class ShapeEditingController { #private; readonly scene: Scene; constructor(scene: Scene); get active(): boolean; get points(): readonly Vector3Value[]; get selectedIndex(): number | null; begin(target: TransformNode, points: readonly Vector3Value[], options?: ShapeEditingOptions): void; setPoints(points: readonly Vector3Value[]): void; movePoint(index: number, point: Vector3Value): void; addPoint(point: Vector3Value, index?: number): number; insertPointOnNearestEdge(point: Vector3Value): number; removePoint(index: number): boolean; selectPoint(index: number | null): boolean; commit(): readonly Vector3Value[]; cancel(): void; dispose(): void; } //# sourceMappingURL=shape-editing-controller.d.ts.map