import * as THREE from 'three';
import { MeshBasicMaterialParameters, MeshStandardMaterialParameters, Object3D } from 'three';
import { Line2 } from 'three/examples/jsm/lines/Line2.js';
import { LineMaterialParameters } from 'three/examples/jsm/lines/LineMaterial.js';
import { CSS2DObject, CSS2DRenderer } from 'three/examples/jsm/renderers/CSS2DRenderer.js';
export interface IEnterDistanceService {
    setupMouseCords(event: MouseEvent, mouse: THREE.Vector2, canvas: HTMLCanvasElement): void;
    getIntersectsPoints(mouse: THREE.Vector2, camera: THREE.PerspectiveCamera, scene: THREE.Scene, ignoreTargetName: string[]): {
        targetObject: THREE.Object3D | null;
        points: number[];
    };
    makeLineMesh(points: number[] | Float32Array, options?: {
        lineMaterial?: LineMaterialParameters;
        lineName: string;
    }): Line2;
    addObjectAsChild(objectParent: THREE.Object3D, objectChildren: THREE.Object3D, options?: {
        setChildMatrixFromParent: boolean;
    }): void;
    updateLineGeometry(targetLine: Line2, points: number[]): void;
    setLabelRenderer(canvasContainer: HTMLDivElement, canvas: HTMLCanvasElement): CSS2DRenderer;
    makeMeasurementLabel(innerText: string, targetLine: Line2): CSS2DObject;
    makePointMesh(points: Float32Array | number[], options?: {
        width?: number;
        height?: number;
        depth?: number;
        MeshStandardMaterial?: MeshStandardMaterialParameters;
        meshName?: string;
        color?: number | string;
    }): THREE.Mesh;
}
declare class EnterDistanceService implements IEnterDistanceService {
    #private;
    makeMeasurementLabel(innerText: string, targetLine: Line2): CSS2DObject;
    makeLineMesh(points: Float32Array | number[], options?: {
        lineMaterial?: LineMaterialParameters;
        lineName?: string;
    }): Line2;
    setupMouseCords(event: MouseEvent, mouse: THREE.Vector2, canvas: HTMLCanvasElement): void;
    getIntersectsPoints(mouse: THREE.Vector2, camera: THREE.PerspectiveCamera, scene: THREE.Scene, ignoreTargetName: string[]): {
        points: number[];
        targetObject: THREE.Object3D<THREE.Event> | null;
    };
    addObjectAsChild(objectParent: Object3D, objectChildren: Object3D, options?: {
        setChildMatrixFromParent: boolean;
    }): void;
    updateLineGeometry(targetLine: Line2, points: number[]): void;
    setLabelRenderer(canvasContainer: HTMLDivElement, canvas: HTMLCanvasElement): CSS2DRenderer;
    makePointMesh(points: Float32Array | number[], options?: {
        MeshStandardMaterial?: MeshBasicMaterialParameters;
        meshName?: string;
        width?: number;
        height?: number;
        depth?: number;
        color?: number | string;
    }): THREE.Mesh;
}
export default EnterDistanceService;
