import { Color3 } from "@babylonjs/core/Maths/math.color.js"; import type { Scene } from "@babylonjs/core/scene.js"; import type { Vector3Value } from "@skenora/contracts"; export type DrawingPlane = "xy" | "xz" | "yz"; export type DrawingAxisConstraint = "none" | "x" | "y" | "z"; export interface ShapeDrawingOptions { plane?: DrawingPlane; planeOffset?: number; closed?: boolean; snap?: number; axisConstraint?: DrawingAxisConstraint; closeDistance?: number; strokeColor?: Color3; onPreview?: (points: readonly Vector3Value[]) => void; onComplete?: (result: ShapeDrawingResult) => void; onCancel?: () => void; } export interface ShapeDrawingResult { points: readonly Vector3Value[]; closed: boolean; } /** Pointer-driven polygon/polyline capture independent of React and editor state. */ export declare class ShapeDrawingController { #private; readonly scene: Scene; constructor(scene: Scene); get active(): boolean; get points(): readonly Vector3Value[]; begin(options?: ShapeDrawingOptions): void; addPoint(point: { x: number; y: number; z: number; }): void; setCursor(point: { x: number; y: number; z: number; }): void; undoPoint(): boolean; complete(): ShapeDrawingResult | null; cancel(notify?: boolean): void; dispose(): void; } //# sourceMappingURL=shape-drawing-controller.d.ts.map