import { CSSProperties } from 'react';
import { LayerDef } from '../types';
/** Render-flag layers — passed straight through to ``. */
export interface RenderLayers {
labels?: boolean;
coverage?: boolean;
orbits?: boolean;
}
/** Object-group visibility — passed straight through to ``. */
export interface GroupVisibility {
spacecraft?: boolean;
groundStations?: boolean;
celestialBodies?: boolean;
}
/** Counts shown in the group toggles ("Spacecraft (5)"). All optional. */
export interface GroupCounts {
spacecraft?: number;
groundStations?: number;
celestialBodies?: number;
}
export interface LayerControlPanelProps {
/** Current render-flag state. Each key defaults to: orbits=on, labels=off, coverage=off. */
layers?: RenderLayers;
/** Called with the next render-flag state when any toggle is clicked. */
onLayersChange?: (next: RenderLayers) => void;
/** Current group-visibility state. Each key defaults to true (visible). */
visibility?: GroupVisibility;
/** Called with the next visibility state when any toggle is clicked. */
onVisibilityChange?: (next: GroupVisibility) => void;
/** Counts to render in group toggle labels (e.g. "Spacecraft (5)"). */
groupCounts?: GroupCounts;
/** App-defined layer toggles. The panel only renders the toggle UI. */
customLayers?: LayerDef[];
/** Current state of each custom layer (id → on/off). */
customLayerState?: Record;
/** Fires when a custom layer is toggled. The consumer renders the overlay itself. */
onCustomLayerChange?: (id: string, enabled: boolean) => void;
position?: "top-left" | "top-right" | "bottom-left" | "bottom-right";
offset?: {
x?: number;
y?: number;
};
hidden?: boolean;
style?: CSSProperties;
/** Hide the render-flags section (`true` to suppress). */
hideRenderFlags?: boolean;
/** Hide the object-group section. */
hideGroups?: boolean;
/** Hide the custom-layers section even if `customLayers` is non-empty. */
hideCustomLayers?: boolean;
}
export declare const LayerControlPanel: import('react').NamedExoticComponent;
export default LayerControlPanel;