import { default as Map } from 'ol/Map';
import { default as View } from 'ol/View';
import { default as VectorLayer } from 'ol/layer/Vector';
import { default as Feature, FeatureLike } from 'ol/Feature';
import { DefineComponent, Ref, ComponentOptionsMixin, PublicProps, ComponentProvideOptions } from 'vue';
import { Geometry } from 'ol/geom';
/** 经纬度坐标 */
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 {
    iconUrl?: string;
    iconSize?: {
        width: number;
        height: number;
    };
    iconAnchor?: {
        x: number;
        y: number;
    };
    color?: string;
    radius?: number;
    label?: string;
    labelColor?: string;
    labelFontSize?: number;
    labelOffsetY?: number;
}
/** 标记配置 */
export interface MarkerOptions {
    position: [number, number];
    title?: string;
    icon?: string;
    iconSize?: {
        width: number;
        height: number;
    };
    iconOffset?: {
        x: number;
        y: number;
    };
    label?: string;
    draggable?: boolean;
    autoShowInfo?: boolean;
    infoContent?: string;
    extData?: Record<string, any>;
    customStyle?: MarkerStyle;
}
/** 线配置 */
export interface PolylineOptions {
    path: [number, number][];
    color?: string;
    width?: number;
    lineDash?: number[];
    extData?: Record<string, any>;
}
/** 多边形配置 */
export interface PolygonOptions {
    paths: [number, number][][];
    fillColor?: string;
    fillOpacity?: number;
    strokeColor?: string;
    strokeWidth?: number;
    extData?: Record<string, any>;
}
/** 圆形配置 */
export interface CircleOptions {
    center: [number, number];
    radius: number;
    fillColor?: string;
    fillOpacity?: number;
    strokeColor?: string;
    strokeWidth?: number;
    extData?: Record<string, any>;
}
/** 热力图数据点 */
export interface HeatmapDataPoint {
    lng: number;
    lat: number;
    weight?: number;
}
/** 聚合点配置 */
export interface ClusterPoint {
    position: [number, number];
    title?: string;
    extData?: Record<string, any>;
    customStyle?: MarkerStyle;
}
/** 聚合样式配置 */
export interface ClusterStyle {
    color?: string;
    radius?: 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 DefaultStyles {
    marker: {
        color: string;
        radius: number;
    };
    polyline: {
        color: string;
        width: number;
    };
    polygon: {
        fillColor: string;
        fillOpacity: number;
        strokeColor: string;
        strokeWidth: number;
    };
    cluster: {
        color: string;
        radius: number;
        textColor: string;
        textSize: number;
    };
}
/** 地图初始化配置 */
export interface MapOptions {
    center?: [number, number];
    zoom?: number;
    minZoom?: number;
    maxZoom?: number;
    projection?: string;
}
declare var __VLS_1: {
    map: Map | null;
    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;
    getMapInstance: () => Map | null;
    getView: () => View | null;
    addMarker: (options: MarkerOptions) => Feature< Geometry, {
        [x: string]: any;
    }> | null;
    addMarkers: (markerList: MarkerOptions[]) => Feature< Geometry, {
        [x: string]: any;
    }>[];
    clearMarkers: () => void;
    removeMarker: (marker: Feature< Geometry, {
        [x: string]: any;
    }>) => void;
    addPolyline: (options: PolylineOptions) => Feature< Geometry, {
        [x: string]: any;
    }> | null;
    clearPolylines: () => void;
    addPolygon: (options: PolygonOptions) => Feature< Geometry, {
        [x: string]: any;
    }> | null;
    clearPolygons: () => void;
    addCircle: (options: CircleOptions) => Feature< Geometry, {
        [x: string]: any;
    }> | null;
    clearCircles: () => void;
    clearAllOverlays: () => void;
    addMarkerCluster: (points: ClusterPoint[], options?: {
        distance?: number | undefined;
        minClusterSize?: number | undefined;
        styles?: ClusterStyle[] | undefined;
    }) => VectorLayer<any, FeatureLike> | null;
    clearMarkerCluster: () => void;
    addHeatmap: (data: HeatmapDataPoint[], options?: {
        radius?: number | undefined;
        blur?: number | undefined;
        gradient?: string[] | undefined;
    }) => Promise<any>;
    updateHeatmapData: (data: HeatmapDataPoint[]) => void;
    removeHeatmap: () => void;
    reGeoCode: (position: [number, number]) => Promise<{
        formattedAddress: string;
        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>;
}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {
    [x: string]: any;
} & {
    [x: string]: any;
}, string, PublicProps, any, {
    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;
    baseLayer: {
        type: "osm" | "xyz";
        url?: string | undefined;
        attribution?: string | undefined;
    };
}, {}, {}, {}, string, ComponentProvideOptions, true, {}, any>, __VLS_Slots>;
export default _default;
type __VLS_WithSlots<T, S> = T & {
    new (): {
        $slots: S;
    };
};
