import { Vector3D } from '@google/model-viewer/lib/model-viewer-base'; import { Euler, Group, Line, Matrix4, Vector3 } from 'three'; import { EventEmitter } from 'events'; import { EulerYXZ } from './eulerYXZ'; import { Sensor } from './sensor'; export declare class MeasurementTool extends EventEmitter { private _isEditModeActive; private _measurementPoints; private _measuredLength; private _currentOrientation; private _currentTranslation; private _imageSensor; private _imageCamOrientation; private _measurementDistances; private _showMeasurementDistances; private _sceneElementGroup; set imageSensor(sensor: Sensor); set imageCamOrientation(imageCamOrientation: Matrix4); get sceneElementGroup(): Group; set isEditModeActive(isEditModeActive: boolean); get isEditModeActive(): boolean; get numPoints(): number; get measurementPoints(): MeasurementPoint[]; get measurementDistances(): MeasurementDistance[]; get measuredLength(): number; set translation(translation: Vector3); set eulerOrientation(orientation: EulerYXZ); addPointFromImage(imageXCoor: number, imageYCoor: number): void; addPointFrom3DScene(position: Vector3D, normal: Vector3D, updateHotspotInImage?: boolean, label?: string | number): void; resetPoints(): void; showPoints(): void; hidePoints(): void; get showMeasurementDistances(): boolean; set showMeasurementDistances(value: boolean); saveMeasurement(format?: 'csv' | 'json'): void; loadMeasurement(url: string): Promise; private _updateHotspotInImage; } export declare class MeasurementSceneLineElement { private _distanceLine; private _lineGeometry; private _lineMaterial; private _translation; private _pointsInModelCoor; constructor(); get lineElement(): Line; addPoint(point: Vector3, translationInScene: Vector3, sceneOrientation: Euler): void; addPointInModelCoor(point: Vector3, translationInScene: Vector3, sceneOrientation: Euler): void; setTranslation(translation: Vector3): void; setEulerOrientation(orientation: Euler): void; set opacity(value: number); show(): void; hide(): void; reset(): void; } export declare class MeasurementDistance { private _sceneLineElement; private _distanceAnnotation; private _numVisiblePoints; private _isHidden; constructor(index: number, startPoint: MeasurementPoint, endPoint: MeasurementPoint, translationInScene: Vector3, sceneOrientation: Euler); get distance(): number; get sceneElement(): Line; get annotationElement(): HTMLButtonElement; translate(translation: Vector3): void; changeSceneOrientation(orientation: Euler): void; show(): void; hide(): void; reset(): void; private _handlePointVisibilityChanged; private _updateAnnotationVisibility; } export declare class SceneHotspotElement extends EventEmitter { protected _domElement: HTMLButtonElement; private _positionInModelCoor; private _positionInSceneCoor; private _normalInModelCoor; private _normalInSceneCoor; constructor(positionInScene: Vector3, normalInScene: Vector3, sceneOrientation: Euler); get domElement(): HTMLButtonElement; get positionInModelCoor(): Vector3; get positionInSceneCoor(): Vector3; get normalInSceneCoor(): Vector3; get positionInSceneCoorAsString(): string; get normalInSceneCoorAsString(): string; updatePosition(sceneOrientation: Euler): void; show(): void; hide(): void; delete(): void; private _handleFocusChanged; } export declare class MeasurementPoint extends SceneHotspotElement { constructor(label: string | number, position: Vector3, normal: Vector3, sceneOrientation: Euler); set label(value: string); get label(): string; distanceTo(measurementPoint: MeasurementPoint): number; } export declare class MeasurementDistanceAnnotation extends SceneHotspotElement { private _distance; constructor(index: number, distance: number, position: Vector3, normal: Vector3, sceneOrientation: Euler); get distance(): number; } export type Measurement = { pos: number[]; normal: number[]; distance?: number; label: string; }[];