import { Plane } from 'three';
import { LineSegments2 } from 'three/examples/jsm/lines/LineSegments2.js';
import { Extension } from './core-extensions/Extension';
import { IViewer } from '../..';
import { ISectionProvider } from './core-extensions/Providers';
export declare enum PlaneId {
    POSITIVE_X = "POSITIVE_X",
    POSITIVE_Y = "POSITIVE_Y",
    POSITIVE_Z = "POSITIVE_Z",
    NEGATIVE_X = "NEGATIVE_X",
    NEGATIVE_Y = "NEGATIVE_Y",
    NEGATIVE_Z = "NEGATIVE_Z"
}
export interface PlaneOutline {
    renderable: LineSegments2;
}
export declare class SectionOutlines extends Extension {
    protected sectionProvider: ISectionProvider;
    get inject(): string[];
    private static readonly INITIAL_BUFFER_SIZE;
    private static readonly Z_OFFSET;
    private tmpVec;
    private tmpVec2;
    private up;
    private down;
    private left;
    private right;
    private forward;
    private back;
    private planeOutlines;
    private lastSectionPlanes;
    private sectionPlanesChanged;
    private _enabled;
    constructor(viewer: IViewer, sectionProvider: ISectionProvider);
    getPlaneOutline(planeId: PlaneId): PlaneOutline;
    enable(value: boolean): void;
    sectionUpdated(planes: Plane[]): void;
    private updatePlaneOutline;
    private createPlaneOutline;
    private onSectionBoxDragStart;
    private onSectionBoxDragEnd;
    private setSectionPlaneChanged;
    private updateOutlines;
    private resizeGeometryBuffer;
    private getPlaneId;
}
