import type { ViralViewerApi } from "../../viral-viewer-api";
export type ElevationDirection = "top-down" | "bottom-up";
export interface ElevationSectionOptions {
    /** Y-coordinate (Three.js) of the section cut */
    elevation: number;
    /** How thick the visible slice is (default: 0.5) */
    thickness: number;
    /** View direction */
    direction: ElevationDirection;
}
/**
 * Creates a horizontal section/plan cut through the model at a given elevation.
 * Similar to Revit section views: clips the model to a thin horizontal slice
 * and positions an orthographic camera looking down or up.
 */
export declare class ViralElevationSection {
    viralViewerApi: ViralViewerApi;
    private _isActive;
    private _clippingPlanes;
    private _wasOrthographic;
    private _options;
    get isActive(): boolean;
    get options(): ElevationSectionOptions;
    constructor(viralViewerApi: ViralViewerApi);
    /**
     * Enable the elevation section view.
     * Clips the model to a thin horizontal slice and positions the camera.
     */
    enable(options?: Partial<ElevationSectionOptions>): void;
    /**
     * Disable the elevation section view and restore camera.
     */
    disable(): void;
    /**
     * Update elevation without re-enabling (live adjustment).
     */
    setElevation(elevation: number): void;
    /**
     * Update thickness without re-enabling (live adjustment).
     */
    setThickness(thickness: number): void;
    /**
     * Toggle direction between top-down and bottom-up.
     */
    setDirection(direction: ElevationDirection): void;
    /**
     * Set up two clipping planes to create a horizontal slice:
     * - Bottom plane: keeps y >= elevation (normal pointing up)
     * - Top plane: keeps y <= elevation + thickness (normal pointing down)
     */
    private _updateClippingPlanes;
    /**
     * Position the camera looking down or up at the section slice.
     * Does NOT reinitialize camera controls — just moves the existing camera.
     */
    private _positionCamera;
    dispose(): void;
}
