/**
 * Map type definitions
 * @countermeasure/web-components/visualization/map
 */
export interface MapMarker {
    /** Stable identifier. */
    id: string;
    /** Latitude in decimal degrees. */
    lat: number;
    /** Longitude in decimal degrees. */
    lng: number;
    /** Tooltip / popup title. */
    label?: string;
    /** Inline SVG/HTML icon overriding the default pin. */
    icon?: string;
    /** CSS colour applied to the default pin. */
    color?: string;
    /** HTML rendered in the popup balloon when the marker is clicked. */
    popup?: string;
    /** Free-form metadata tag map. */
    data?: Record<string, string>;
}
export interface MapRegion {
    /** Stable identifier. */
    id: string;
    /** Region display name. */
    name: string;
    /** Fill colour applied to the region polygon. */
    color?: string;
    /**
     * Fill opacity (0-1).
     * @default 0.5
     */
    opacity?: number;
    /** Free-form metadata tag map. */
    data?: Record<string, string>;
}
export interface MapConfig {
    /** Container element (or selector) the map is mounted into. */
    container: HTMLElement | string;
    /**
     * Initial map centre.
     * @default { lat: 0, lng: 0 }
     */
    center?: {
        lat: number;
        lng: number;
    };
    /**
     * Initial zoom level.
     * @default 2
     */
    zoom?: number;
    /** Markers rendered on top of the basemap. */
    markers?: MapMarker[];
    /** Polygon regions rendered beneath markers. */
    regions?: MapRegion[];
    /**
     * Tile URL template. Defaults to OpenStreetMap when omitted unless allowExternalTiles is false.
     * Provide a first-party or proxied URL in sensitive deployments.
     */
    tileUrl?: string;
    /**
     * Set false to prevent loading the default third-party OpenStreetMap tiles.
     * Explicit tileUrl values are still honored.
     * @default true
     */
    allowExternalTiles?: boolean;
    /**
     * Minimum zoom level allowed.
     * @default 1
     */
    minZoom?: number;
    /**
     * Maximum zoom level allowed.
     * @default 18
     */
    maxZoom?: number;
    /** Fired when a marker is clicked. */
    onMarkerClick?: (marker: MapMarker) => void;
    /** Fired when a region polygon is clicked. */
    onRegionClick?: (region: MapRegion) => void;
    /** Additional CSS class names. */
    className?: string;
}
//# sourceMappingURL=types.d.ts.map