import type { EventEmit } from '@almadar/core';
export interface MapMarkerData {
    /** Unique marker identifier */
    id: string | number;
    /** Latitude */
    lat: number;
    /** Longitude */
    lng: number;
    /** Label shown in popup */
    label?: string;
    /** Optional category for styling */
    category?: string;
}
export interface MapRouteWaypoint {
    lat: number;
    lng: number;
}
export interface MapRouteData {
    /** Unique route identifier */
    id: string | number;
    /** Ordered waypoints rendered as a polyline */
    waypoints: MapRouteWaypoint[];
    /** Stroke color (CSS color). Defaults to a theme-aware accent. */
    color?: string;
    /** Stroke weight in pixels (default 4) */
    weight?: number;
    /** Stroke opacity 0..1 (default 0.8) */
    opacity?: number;
    /** Optional dashed pattern (e.g. "8 4") */
    dashArray?: string;
    /** Label shown in a popup at the midpoint */
    label?: string;
}
export interface MapViewProps {
    /** Array of markers to display */
    markers?: MapMarkerData[];
    /** Routes (polylines with optional popups) drawn over the tile layer */
    routes?: MapRouteData[];
    /** Map center latitude */
    centerLat?: number;
    /** Map center longitude */
    centerLng?: number;
    /** Zoom level (1-18, default 13) */
    zoom?: number;
    /** Height of the map container (default "400px") */
    height?: string;
    /** Callback when a marker is clicked (programmatic use) */
    onMarkerClick?: (marker: MapMarkerData) => void;
    /** Callback when the map is clicked (programmatic use) */
    onMapClick?: (lat: number, lng: number) => void;
    /** Event name dispatched via event bus when the map is clicked. Payload: { latitude, longitude } */
    mapClickEvent?: EventEmit<{
        latitude: number;
        longitude: number;
    }>;
    /** Event name dispatched via event bus when a marker is clicked. Payload: full MapMarkerData spread. */
    markerClickEvent?: EventEmit<MapMarkerData>;
    /** Whether to show a pin at the clicked location */
    showClickedPin?: boolean;
    /** Additional CSS classes */
    className?: string;
    /** Show attribution (default true) */
    showAttribution?: boolean;
}
/**
 * Server-safe wrapper. Renders an empty Box on the server (or until the
 * lazy implementation finishes loading on the client) so SSR never reaches
 * the leaflet code.
 */
export declare function MapView(props: MapViewProps): import("react/jsx-runtime").JSX.Element;
