export default class ThreeDEngine {
    constructor(containerRef: any, cameraOptions: any, cameraHandler: any, setColorHandler: any, backgroundColor: any, pickingEnabled: any, linesThreshold: any, renderingThreshold: any, onSelection: any, selectionStrategy: any, onHoverListeners: any, onEmptyHoverListener: any, preserveDrawingBuffer: any, dracoDecoderPath: any);
    scene: THREE.Scene;
    cameraManager: CameraManager;
    cameraOptions: any;
    onSelection: any;
    renderer: THREE.WebGLRenderer;
    controls: TrackballControls;
    mouse: {
        x: number;
        y: number;
    };
    mouseContainer: {
        x: number;
        y: number;
    };
    frameId: number;
    meshFactory: MeshFactory;
    pickingEnabled: any;
    onHoverListeners: any;
    onEmptyHoverListener: any;
    cameraHandler: any;
    setColorHandler: any;
    selectionStrategy: any;
    containerRef: any;
    width: any;
    height: any;
    lastRequestFrame: number;
    lastRenderTimer: Date;
    instancesMap: Map<any, any>;
    externalThreeDObjectsUUIDs: Set<any>;
    updateInstances(proxyInstances: any): Promise<void>;
    updateCamera(cameraOptions: any): void;
    stop(): void;
    animate(): void;
    renderScene(): void;
    resize(): void;
    requestFrame(): void;
    mouseDownEventListener: (event: any) => void;
    mouseUpEventListener: (event: any) => void;
    mouseMoveEventListener: (event: any) => void;
    /**
     * Setups the renderer
     * @param containerRef
     */
    setupRenderer(containerRef: any, options: any): void;
    /**
     * Set up the listeners use to detect mouse movement and window resizing
     */
    setupListeners: () => void;
    /**
     * Sets onHoverListeners
     */
    setOnHoverListeners(onHoverListeners: any): void;
    setOnEmptyHoverListener(onEmptyHoverListener: any): void;
    /**
     * Setups the camera
     * @param cameraOptions
     * @param aspect
     */
    setupCamera(cameraOptions: any, aspect: any): void;
    /**
     *
     * @param shaders
     */
    configureRenderer(shaders: any): void;
    composer: EffectComposer;
    /**
     * Setups the lights
     */
    setupLights(): void;
    setupControls(): void;
    clientX: any;
    clientY: any;
    updateExternalThreeDObjects(threeDObjects: any): void;
    /**
     * Adds instances to the ThreeJS Scene
     * @param proxyInstances
     */
    addInstancesToScene(proxyInstances: any): Promise<void>;
    addToScene(obj: any): void;
    clearScene(proxyInstances: any): Promise<any>;
    traverseInstance(proxyInstance: any, geppettoInstance: any): void;
    /**
     * Returns intersected objects from mouse click
     *
     * @returns {Array} a list of objects intersected by the current mouse coordinates
     */
    getIntersectedObjects(): any[];
    updateVisibleChildren(): void;
    visibleChildren: any[];
    /**
     * Check that the material for the already present instance did not change.
     * return true if the color changed, otherwise false.
     */
    checkMaterial(mesh: any, instance: any): boolean;
    updateInstanceMaterial(mesh: any, instance: any): void;
    setInstanceMaterial(mesh: any, instance: any): void;
    updateInstancesColor(proxyInstances: any): void;
    /**
     * Sets the color of the instances
     *
     * @param path
     * @param color
     */
    setInstanceColor(path: any, color: any): void;
    /**
     *
     * @param instancePath
     * @param visualGroups
     */
    setSplitGroupsColor(instancePath: any, visualGroups: any): void;
    updateGroupMeshes(proxyInstances: any): void;
    getVisualElements(instance: any, visualGroups: any): {};
    /**
     * Show connection lines for this instance.
     *
     * @param instancePath
     * @param {boolean} mode - Show or hide connection lines
     */
    showConnectionLines(instancePath: any, mode: boolean): void;
    /**
     *
     *
     * @param instance
     */
    showConnectionLinesForInstance(instance: any): void;
    updateInstancesConnectionLines(proxyInstances: any): void;
    /**
     * Removes connection lines, all if nothing is passed in or just the ones passed in.
     *
     * @param instance - optional, instance for which we want to remove the connections
     */
    removeConnectionLines(instance: any): void;
    /**
     * Sets whether to use wireframe for the materials of the meshes
     * @param wireframe
     */
    setWireframe(wireframe: any): void;
    wireframe: any;
    setBackgroundColor(color: any): void;
    updateControls(): void;
    /**
     * Returns the scene renderer
     * @returns renderer
     */
    getRenderer(): THREE.WebGLRenderer;
    /**
     * Returns the scene
     * @returns scene
     */
    getScene(): THREE.Scene;
    /**
     * Returns the wireframe flag
     * @returns wireframe
     */
    getWireframe(): any;
    /**
     * Sets selectionStrategy
     */
    setSelectionStrategy(selectionStrategy: any): void;
    /**
     * Sets onSelection
     */
    setOnSelection(onSelection: any): void;
    /**
     * Sets linesThreshold
     */
    setLinesThreshold(linesThreshold: any): void;
    /**
     * Sets pickingEnabled
     */
    setPickingEnabled(pickingEnabled: any): void;
    /**
     * Sets cameraHandler
     */
    seCameraHandler(cameraHandler: any): void;
    /**
     * Sets setColorHandler
     */
    setSetColorHandler(setColorHandler: any): void;
}
import * as THREE from "three";
import CameraManager from "./CameraManager";
import { TrackballControls } from "./TrackballControls";
import MeshFactory from "./MeshFactory";
import { EffectComposer } from "three/examples/jsm/postprocessing/EffectComposer.js";
