import { Camera, CircleGeometry, Group, Mesh, Plane, Quaternion, Raycaster, Vector2, Vector3, type Intersection } from 'three'; import { LineSegments2 } from 'three/examples/jsm/lines/LineSegments2.js'; import { TextLabel } from '../../objects/TextLabel.js'; import SpeckleBasicMaterial from '../../materials/SpeckleBasicMaterial.js'; export interface MeasurementPointGizmoStyle { dashedLine?: boolean; normalIndicatorPixelSize?: number; normalIndicatorColor?: number; normalIndicatorOpacity?: number; lineColor?: number; lineOpacity?: number; pointColor?: number; pointOpacity?: number; textColor?: number; textOpacity?: number; textPixelHeight?: number; pointPixelHeight?: number; } export declare class MeasurementPointGizmo extends Group { normalIndicator: LineSegments2; private normalIndicatorBuffer; private normalIndicatorNormal; private normalIndicatorTangent; private normalIndicatorBitangent; line: LineSegments2; point: Mesh; text: TextLabel; private _style; set style(value: MeasurementPointGizmoStyle); set highlight(value: boolean); private getNormalIndicatorMaterial; private getLineMaterial; private getPointMaterial; constructor(style?: MeasurementPointGizmoStyle); enable(normalIndicator: boolean, line: boolean, point: boolean, text: boolean): void; frameUpdate(camera: Camera, size: Vector2): void; updateNormalIndicator(position: Vector3, normal: Vector3): void; updatePoint(position: Vector3): void; updateLine(points: Vector3[]): void; updateText(value: string, position?: Vector3, quaternion?: Quaternion, scale?: Vector3): Promise; updateStyle(): void; raycast(raycaster: Raycaster, intersects: Array): void; updateClippingPlanes(planes: Plane[]): void; }