import { Plane } from 'three';
import { LineSegments2 } from 'three/examples/jsm/lines/LineSegments2.js';
import { Extension } from '../Extension.js';
import { SectionTool, type IViewer } from '../../../index.js';
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: SectionTool;
    get inject(): (typeof SectionTool)[];
    private static readonly OUTLINE_Z_OFFSET;
    private static readonly INITIAL_BUFFER_SIZE;
    private tmpVec;
    private up;
    private down;
    private left;
    private right;
    private forward;
    private back;
    private planeOutlines;
    private lastSectionPlanes;
    private sectionPlanesChanged;
    constructor(viewer: IViewer, sectionProvider: SectionTool);
    private getPlaneOutline;
    get enabled(): boolean;
    set enabled(value: boolean);
    sectionUpdated(planes: Plane[]): void;
    requestUpdate(force?: boolean): void;
    private updatePlaneOutline;
    private createPlaneOutline;
    private onSectionBoxDragStart;
    private onSectionBoxDragEnd;
    private setSectionPlaneChanged;
    private updateOutlines;
    private resizeGeometryBuffer;
    private getPlaneId;
}
