import * as React from 'react';
import { MapViewState, MapCoordinate, MapControlPosition, MapLibreFlyToOptions } from '@page-speed/maps';
import { A as ActionConfig, O as OptixFlowConfig } from './blocks-BlWXj9GI.js';
import 'class-variance-authority';
import './button-variants-8mtEHxev.js';
import 'class-variance-authority/types';
import '@opensite/hooks/usePlatformFromUrl';

type PanelPosition = "top-left" | "top-right" | "bottom-left" | "bottom-right";
type GeoMapMediaType = "image" | "video";
interface GeoMapMediaItem {
    id?: string | number;
    src: string;
    type?: GeoMapMediaType;
    alt?: string;
    poster?: string;
}
interface GeoMapMarker {
    id?: string | number;
    latitude: number;
    longitude: number;
    label?: React.ReactNode;
    eyebrow?: React.ReactNode;
    title?: React.ReactNode;
    summary?: React.ReactNode;
    locationLine?: React.ReactNode;
    locationUrl?: string;
    hoursLine?: React.ReactNode;
    mediaItems?: GeoMapMediaItem[];
    markerContentComponent?: React.ReactNode;
    actions?: ActionConfig[];
    draggable?: boolean;
    pinColor?: string;
    pinClassName?: string;
    markerElement?: React.ReactNode | ((args: {
        isSelected: boolean;
    }) => React.ReactNode);
}
interface GeoMapCluster {
    id?: string | number;
    label?: React.ReactNode;
    title?: React.ReactNode;
    summary?: React.ReactNode;
    latitude?: number;
    longitude?: number;
    markers: GeoMapMarker[];
    pinColor?: string;
    pinClassName?: string;
    markerElement?: React.ReactNode | ((args: {
        isSelected: boolean;
        count: number;
    }) => React.ReactNode);
}
interface GeoMapSelection {
    type: "none" | "marker" | "cluster";
    marker?: GeoMapMarker;
    cluster?: GeoMapCluster;
}
interface GeoMapProps {
    className?: string;
    mapWrapperClassName?: string;
    mapClassName?: string;
    panelClassName?: string;
    panelPosition?: PanelPosition;
    stadiaApiKey?: string;
    mapStyle?: string;
    styleUrl?: string;
    mapLibreCssHref?: string;
    markers?: GeoMapMarker[];
    clusters?: GeoMapCluster[];
    viewState?: Partial<MapViewState>;
    defaultViewState?: Partial<MapViewState>;
    onViewStateChange?: (state: Partial<MapViewState>) => void;
    onMapClick?: (coord: MapCoordinate) => void;
    onMarkerDrag?: (markerId: string | number | null, coord: MapCoordinate) => void;
    showNavigationControl?: boolean;
    showGeolocateControl?: boolean;
    navigationControlPosition?: MapControlPosition;
    geolocateControlPosition?: MapControlPosition;
    flyToOptions?: MapLibreFlyToOptions;
    markerFocusZoom?: number;
    clusterFocusZoom?: number;
    selectedMarkerId?: string | number;
    initialSelectedMarkerId?: string | number;
    onSelectionChange?: (selection: GeoMapSelection) => void;
    clearSelectionOnMapClick?: boolean;
    mapChildren?: React.ReactNode;
    optixFlowConfig?: OptixFlowConfig;
}
declare function GeoMap({ className, mapWrapperClassName, mapClassName, panelClassName, panelPosition, stadiaApiKey, mapStyle, styleUrl, mapLibreCssHref, markers, clusters, viewState, defaultViewState, onViewStateChange, onMapClick, onMarkerDrag, showNavigationControl, showGeolocateControl, navigationControlPosition, geolocateControlPosition, flyToOptions, markerFocusZoom, clusterFocusZoom, selectedMarkerId, initialSelectedMarkerId, onSelectionChange, clearSelectionOnMapClick, mapChildren, optixFlowConfig, }: GeoMapProps): React.JSX.Element;

export { GeoMap, type GeoMapCluster, type GeoMapMarker, type GeoMapMediaItem, type GeoMapMediaType, type GeoMapProps, type GeoMapSelection };
