import { LidarState, ColorScheme, ColormapName, ColorRangeConfig, LidarSampleDataset } from '../core/types'; /** * Callbacks for panel interactions */ export interface PanelBuilderCallbacks { onFileSelect: (file: File) => void; onUrlSubmit: (url: string) => void; onPointSizeChange: (size: number) => void; onOpacityChange: (opacity: number) => void; onColorSchemeChange: (scheme: ColorScheme) => void; onColormapChange: (colormap: ColormapName) => void; onColorRangeChange: (config: ColorRangeConfig) => void; onUsePercentileChange: (usePercentile: boolean) => void; onElevationRangeChange: (range: [number, number] | null) => void; onPickableChange: (pickable: boolean) => void; onZOffsetEnabledChange: (enabled: boolean) => void; onZOffsetChange: (offset: number) => void; onTerrainChange: (enabled: boolean) => void; onUnload: (id: string) => void; onZoomTo: (id: string) => void; onClassificationToggle: (classificationCode: number, visible: boolean) => void; onClassificationShowAll: () => void; onClassificationHideAll: () => void; onShowMetadata?: (id: string) => void; onCrossSectionPanel?: () => HTMLElement | null; onShareUrl?: () => string; } /** * Builds and manages the LiDAR control panel UI. */ export declare class PanelBuilder { private _callbacks; private _state; private _sampleData; private _sampleDataLabel; private _fileInput?; private _urlInput?; private _loadButton?; private _colorSelect?; private _colormapSelect?; private _colormapGroup?; private _colorbar?; private _colorbarContainer?; private _colorRangeControl?; private _colorRangeContainer?; private _percentileCheckbox?; private _percentileGroup?; private _pointSizeSlider?; private _opacitySlider?; private _pointCloudsList?; private _pickableCheckbox?; private _elevationSlider?; private _elevationCheckbox?; private _zOffsetCheckbox?; private _zOffsetSlider?; private _zOffsetSliderContainer?; private _terrainCheckbox?; private _loadingIndicator?; private _errorMessage?; private _classificationLegend?; private _classificationLegendContainer?; private _shareFeedbackTimeout?; constructor(callbacks: PanelBuilderCallbacks, initialState: LidarState, options?: { sampleData?: LidarSampleDataset[]; sampleDataLabel?: string; }); /** * Builds and returns the panel content. * * @returns The panel content element */ build(): HTMLElement; /** * Updates the UI to reflect the current state. * * @param state - New state */ updateState(state: LidarState): void; /** * Updates the loading progress display. * * @param progress - Progress value (0-100) * @param message - Optional progress message */ updateLoadingProgress(progress: number, message?: string): void; /** * Builds the file input section. */ private _buildFileSection; /** * Builds the "Load sample data" dropdown: a custom (not native `