import * as THREE from "@intelligentgraphics/three";
import { Session } from "@intelligentgraphics/igd.productdata";
import { ThreeJS_API } from "@intelligentgraphics/ig.gfx.threejs";
import { PlannerManager } from "../Manager";
import { IMeasurementRenderer, IMeasurementTargetProvider } from "./Types";
export declare class MeasurementManager {
    private readonly session;
    private readonly plannerManager;
    private readonly api;
    private readonly renderer;
    private readonly provider;
    private visible;
    private targets;
    constructor(session: Session, plannerManager: PlannerManager, api: ThreeJS_API, renderer: IMeasurementRenderer, provider: IMeasurementTargetProvider);
    /**
     * Retrieves the current list of targets from the provider and renders the measurement again with the current visibility
     *
     */
    forceUpdate(): void;
    /**
     * Changes the visibility of the measurement of all targets.
     *
     * This won't override individually set visibilities, unless force is true.
     *
     * @param {boolean} visible
     */
    setVisibility(visible: boolean, force?: boolean): void;
    setTargetVisibility(identifier: string, visible: boolean): void;
    /**
     * Removes all measurement objects from the provided scene.
     *
     * The provided scene can only be an additional scene, not the primary one.
     *
     * @param {THREE.Scene} scene
     */
    removeFromScene(scene: THREE.Scene): void;
    private updateTargets;
    private deleteTarget;
    private render;
    private calculateGroupBounds;
}
