import { DefineComponent, Ref, ComponentOptionsMixin, PublicProps, ComponentProvideOptions } from 'vue';
/** 经纬度坐标 */
export interface LngLat {
    lng: number;
    lat: number;
}
/** 标准化轨迹点 */
export interface TrackPoint extends LngLat {
    speed?: number;
    time?: number;
}
/** 原始轨迹点（支持数组或对象格式） */
export type RawTrackPoint = [number, number] | [number, number, number] | LngLat;
/** 标记样式配置 */
export interface MarkerStyle {
    url?: string;
    size?: {
        width: number;
        height: number;
    };
    anchor?: {
        x: number;
        y: number;
    };
    label?: string;
    labelColor?: string;
    labelSize?: number;
    id?: string;
}
/** 标记配置 */
export interface MarkerOptions {
    position: [number, number];
    title?: string;
    icon?: string;
    iconSize?: {
        width: number;
        height: number;
    };
    iconOffset?: {
        x: number;
        y: number;
    };
    label?: string;
    labelStyle?: Record<string, string>;
    draggable?: boolean;
    autoShowInfo?: boolean;
    infoContent?: string;
    extData?: Record<string, any>;
    customStyle?: MarkerStyle;
}
/** 线配置 */
export interface PolylineOptions {
    path: [number, number][];
    color?: string;
    weight?: number;
    opacity?: number;
    lineDash?: number[];
    extData?: Record<string, any>;
}
/** 多边形配置 */
export interface PolygonOptions {
    paths: [number, number][][];
    fillColor?: string;
    fillOpacity?: number;
    strokeColor?: string;
    strokeWeight?: number;
    extData?: Record<string, any>;
}
/** 圆形配置 */
export interface CircleOptions {
    center: [number, number];
    radius: number;
    fillColor?: string;
    fillOpacity?: number;
    strokeColor?: string;
    strokeWeight?: number;
    extData?: Record<string, any>;
}
/** 热力图数据点 */
export interface HeatmapDataPoint {
    lng: number;
    lat: number;
    count: number;
}
/** 聚合点配置 */
export interface ClusterPoint {
    position: [number, number];
    title?: string;
    extData?: Record<string, any>;
    customStyle?: MarkerStyle;
}
/** 聚合样式配置 */
export interface ClusterStyle {
    url?: string;
    size?: {
        width: number;
        height: number;
    };
    textColor?: string;
    textSize?: number;
}
/** 轨迹纠偏信息 */
export interface CorrectionInfo {
    corrected: boolean;
    correctedCount: number;
    originalCount: number;
}
/** 轨迹信息 */
export interface TrackInfo {
    currentIndex: number;
    totalPoints: number;
    progress: number;
    remainingDistance: number;
    totalDistance: number;
    isPlaying: boolean;
}
/** 地图控件配置 */
export interface ControlsConfig {
    zoom?: boolean;
    scale?: boolean;
    overview?: boolean;
}
/** 默认样式配置 */
export interface DefaultStyles {
    marker: {
        icon: string;
        offset: [number, number];
    };
    polyline: {
        color: string;
        weight: number;
        opacity: number;
    };
    polygon: {
        fillColor: string;
        fillOpacity: number;
        strokeColor: string;
        strokeWeight: number;
    };
    cluster: {
        url: string;
        size: {
            width: number;
            height: number;
        };
        textColor: string;
        textSize: number;
    };
}
/** 地图初始化配置 */
export interface MapOptions {
    center?: [number, number];
    zoom?: number;
    maxZoom?: number;
    minZoom?: number;
    viewMode?: "2D" | "3D";
}
declare var __VLS_1: {
    map: any;
    T: any;
    isMapReady: boolean;
    trackInfo: TrackInfo;
}, __VLS_3: {
    isOpen: boolean;
    position: {
        lng: number;
        lat: number;
    };
    data: any;
    closePopup: () => void;
};
type __VLS_Slots = {} & {
    customUI?: (props: typeof __VLS_1) => any;
} & {
    popup?: (props: typeof __VLS_3) => any;
};
declare const _default: __VLS_WithSlots< DefineComponent<any, {
    setCenter: (position: [number, number], animate?: boolean) => void;
    getCenter: () => [number, number] | null;
    setZoom: (zoom: number) => void;
    getZoom: () => number | null;
    fitBounds: (points: [number, number][], padding?: number) => void;
    setMapType: (type: "img" | "vec" | "ter") => void;
    getMapInstance: () => any;
    getT: () => any;
    addMarker: (options: MarkerOptions) => any;
    addMarkers: (markerList: MarkerOptions[]) => any[];
    clearMarkers: () => void;
    removeMarker: (marker: any) => void;
    addPolyline: (options: PolylineOptions) => any;
    clearPolylines: () => void;
    addPolygon: (options: PolygonOptions) => any;
    clearPolygons: () => void;
    addCircle: (options: CircleOptions) => any;
    clearCircles: () => void;
    clearAllOverlays: () => void;
    addMarkerCluster: (points: ClusterPoint[], options?: {
        gridSize?: number | undefined;
        minClusterSize?: number | undefined;
        maxZoom?: number | undefined;
        styles?: ClusterStyle[] | undefined;
    }) => any;
    clearMarkerCluster: () => void;
    addHeatmap: (data: HeatmapDataPoint[], options?: {
        radius?: number | undefined;
        opacity?: number | undefined;
        gradient?: Record<string, string> | undefined;
        max?: number | undefined;
    }) => any;
    removeHeatmap: () => void;
    reGeoCode: (position: [number, number]) => Promise<{
        formattedAddress: string;
        addressComponent: any;
        position: [number, number];
    }>;
    geoCode: (address: string) => Promise<{
        lng: number;
        lat: number;
        formattedAddress: string;
    }>;
    openInfoWindow: (position: [number, number], content: string | HTMLElement, options?: {
        offsetX?: number | undefined;
        offsetY?: number | undefined;
        autoClose?: boolean | undefined;
        closeDelay?: number | undefined;
    }) => void;
    closeInfoWindow: () => void;
    playTrack: () => void;
    pauseTrack: () => void;
    stopTrack: () => void;
    resetTrack: () => void;
    fitTrackBounds: () => void;
    followCar: () => void;
    toggleFollowCar: () => void;
    getTrackPoints: () => {
        speed?: number | undefined;
        time?: number | undefined;
        lng: number;
        lat: number;
    }[];
    getCurrentPosition: () => {
        speed?: number | undefined;
        time?: number | undefined;
        lng: number;
        lat: number;
    };
    getTrackInfo: () => TrackInfo;
    isPlaying: Ref<boolean, boolean>;
    isMapReady: Ref<boolean, boolean>;
    initMap: () => Promise<void>;
}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {
    [x: string]: any;
} & {
    [x: string]: any;
}, string, PublicProps, any, {
    controls: ControlsConfig;
    mapOptions: MapOptions;
    defaultStyles: DefaultStyles;
    trackMode: boolean;
    originalTrackData: RawTrackPoint[];
    showTrackPanel: boolean;
    enableCorrection: boolean;
    maxGapDistance: number;
    simplifyTolerance: number;
    autoFitBounds: boolean;
    autoRotateCar: boolean;
    speed: number;
    carIcon: string;
    carIconSize: {
        width: number;
        height: number;
    };
    trackColor: string;
    trackWidth: number;
    showStartEndMarkers: boolean;
    autoPlay: boolean;
    defaultFollowCar: boolean;
    mapType: string;
    showAnnotation: boolean;
    randomSubdomain: boolean;
}, {}, {}, {}, string, ComponentProvideOptions, true, {}, any>, __VLS_Slots>;
export default _default;
type __VLS_WithSlots<T, S> = T & {
    new (): {
        $slots: S;
    };
};
