import 'maplibre-gl/dist/maplibre-gl.css';
import { Renderer, type SceneDef } from '@expofp/renderer';
import { type LngLatBoundsLike, Map as MaplibreMap, type StyleSpecification } from 'maplibre-gl';
export declare const MAP_DIM_LAYER_ID = "expofp-map-dim";
/**
 * Configuration for the map tile source.
 * Abstracted so we can swap between online and offline (PMTiles) later
 * without touching MaplibreWrapper.
 */
export interface TileSourceConfig {
    /** Maplibre style URL or inline style JSON object */
    style: string | StyleSpecification;
}
export interface CameraPaddingOptions {
    top: number;
    bottom: number;
    left: number;
    right: number;
}
/** Geographic configuration derived from fpGeo.properties */
export interface GeoConfig {
    /** Center of the venue in [lng, lat] */
    center: [number, number];
    /** Map bearing in degrees */
    bearing: number;
    /** Initial zoom level */
    zoom: number;
    /** Optional initial bounds. When present, MapLibre computes the initial zoom. */
    bounds?: LngLatBoundsLike;
    /** Padding used with initial bounds. */
    fitPadding?: CameraPaddingOptions;
    /** Small correction after bounds-based initial fit. */
    zoomAdjustment?: number;
}
export interface MapOptions {
    pitch?: number;
    maxPitch?: number;
    minZoom?: number;
    maxZoom?: number;
    maxBounds?: LngLatBoundsLike;
}
export interface MaplibreWrapperProps {
    /** The scene definition to render inside the map */
    sceneDef: SceneDef;
    /** Geographic configuration for map positioning and floorplan locking */
    geoConfig: GeoConfig;
    /** Static SVG-to-Mercator transform prepared by the adapter */
    staticTransform: number[];
    /** Tile source configuration (online style URL for now) */
    tileSource: TileSourceConfig;
    /** Map camera constraints and defaults */
    mapOptions?: MapOptions;
    /** Called when the renderer instance is ready for external interaction */
    onRendererReady?: (renderer: Renderer, map: MaplibreMap, sceneDef: SceneDef, requestRepaint: () => void) => void;
    /** Called when the dim overlay layer is available for paint updates. */
    onMapDimLayerReady?: (map: MaplibreMap) => void;
    /** Called when the map style cannot be loaded. */
    onMapLoadError?: (error: unknown) => void;
}
/**
 * A pure, state-agnostic React component that renders a Maplibre map
 * with the ExpoFP floorplan embedded via CustomLayerInterface.
 *
 * This component does NOT import MobX or any application state.
 * All state synchronization is done externally via the onRendererReady callback.
 */
export default function MaplibreWrapper({ sceneDef, geoConfig, staticTransform, tileSource, mapOptions, onRendererReady, onMapDimLayerReady, onMapLoadError, }: MaplibreWrapperProps): import("react").JSX.Element;
//# sourceMappingURL=MaplibreWrapper.d.ts.map