import { Group, Box3, BufferGeometry, MeshStandardMaterial, Mesh, Box3Helper, LineBasicMaterial, PlaneGeometry, Vector3, Plane, Raycaster } from 'three';
import { TransformControls } from 'three/examples/jsm/controls/TransformControls';
import { IViewer } from '../../IViewer';
import { Extension } from './core-extensions/Extension';
import { ICameraProvider } from './core-extensions/Providers';
import { ISectionProvider } from './core-extensions/Providers';
export declare enum SectionToolEvent {
    DragStart = "section-box-drag-start",
    DragEnd = "section-box-drag-end",
    Updated = "section-box-changed"
}
export declare class SectionTool extends Extension implements ISectionProvider {
    protected cameraProvider: ICameraProvider;
    get inject(): string[];
    get provide(): string;
    protected dragging: boolean;
    protected display: Group;
    protected boxGeometry: BufferGeometry;
    protected boxMaterial: MeshStandardMaterial;
    protected boxMesh: Mesh;
    protected boxMeshHelper: Box3Helper;
    protected boxMeshHelperMaterial: LineBasicMaterial;
    protected plane: PlaneGeometry;
    protected hoverPlane: Mesh;
    protected sphere: Mesh;
    protected sidesSimple: {
        [id: string]: {
            verts: number[];
            axis: string;
        };
    };
    protected currentRange: number[];
    protected planes: Plane[];
    protected prevPosition: Vector3;
    protected attachedToBox: boolean;
    protected controls: TransformControls;
    protected allowSelection: boolean;
    protected raycaster: Raycaster;
    private _enabled;
    get enabled(): boolean;
    set enabled(value: boolean);
    constructor(viewer: IViewer, cameraProvider: ICameraProvider);
    private _setupControls;
    private _draggingChangeHandler;
    private _clickHandler;
    private _generateSimpleCube;
    private _generateOrUpdatePlanes;
    private _attachControlsToBox;
    getCurrentBox(): Box3;
    setBox(targetBox: any, offset?: number): void;
    toggle(): void;
    displayOff(): void;
    displayOn(): void;
}
