import { default as Map } from 'ol/Map';
import { EventManager } from './EventManager';
import { SearchMarkerManager } from './SearchMarkerManager';
import { MarkerDrawingAdapter, UserMarker } from './MarkerDrawingAdapter';
import { DrawingManager } from './drawing/DrawingManager';
import { MeasurementTool, MeasurementResult } from './measurementTool';
import { MapOperationTool } from './mapOperationTool';
import { GeoJSONLocationTool } from './geoJsonLocationTool';
import { LayerManager } from './LayerManager';
import { LayerEventBus } from './EventBus';
import { MapStorage } from './storage';
import { FeatureHighlightManager } from './FeatureHighlightManager';
import { PopupManager } from './PopupManager';
import { MapConfig, MapClickEvent, SearchResult, LayerConfig, FeatureInput, LayerInput } from '../types';

export interface MapManagerEvents {
    "map-ready": (map: Map) => void;
    "map-click": (event: MapClickEvent) => void;
    "map-move": (center: [number, number], zoom: number) => void;
    "zoom-change": (zoom: number, oldZoom: number) => void;
    "feature-click": (feature: FeatureInput, layer: LayerInput, coordinate: [number, number]) => void;
    "tooltip-show": (data: any) => void;
    "tooltip-hide": () => void;
    "measurement-start": (type: "length" | "area" | "angle") => void;
    "measurement-end": (result: any) => void;
    "measurement-result": (result: MeasurementResult) => void;
    "context-menu": (coordinate: [number, number], pixel: [number, number]) => void;
    "coordinate-update": (coordinate: string) => void;
    "zoom-update": (zoom: number) => void;
    "scale-update": (scale: string) => void;
}
export declare class MapManager {
    private map;
    private config;
    private eventCallbacks;
    private eventBus;
    private storage;
    private eventManager;
    private searchMarkerManager;
    private markerAdapter;
    private layerManager;
    private measurementTool;
    private mapOperationTool;
    private geoJsonLocationTool;
    private drawingManager;
    private featureHighlightManager;
    private popupManager;
    private isCoordinatePicking;
    private coordinatePickCallback;
    private measurementType;
    private contextMenuCoordinate;
    constructor(config: MapConfig, eventBus: LayerEventBus, storage: MapStorage);
    /**
     * 处理要素点击的popup显示
     */
    private handleFeaturePopup;
    /**
     * 查找图层配置通过ID
     */
    private findLayerConfigById;
    /**
     * 查找匹配的图层配置（支持递归查找子图层）
     */
    private findMatchingLayer;
    /**
     * 检查图层实例是否匹配配置
     */
    private isLayerMatch;
    /**
     * 初始化地图
     */
    initMap(targetId: string): Map;
    /**
     * 设置版权控件
     */
    private setupAttribution;
    /**
     * 初始化各种管理器
     */
    private initManagers;
    /**
     * 初始化图层
     */
    private initLayers;
    /**
     * 绑定事件管理器事件
     */
    private bindEventManagerEvents;
    /**
     * 绑定地图事件
     */
    private bindMapEvents;
    /**
     * 定位到用户当前位置
     * @param options 定位配置
     */
    locateToUser(options?: {
        zoom?: number;
        enableHighAccuracy?: boolean;
    }): void;
    /**
     * 更新地图配置
     */
    updateConfig(config: MapConfig): void;
    /**
     * 开始坐标拾取
     */
    startCoordinatePicking(callback: (coordinate: [number, number]) => void): void;
    /**
     * 停止坐标拾取
     */
    stopCoordinatePicking(): void;
    /**
     * 开始测量
     */
    startMeasurement(type: "length" | "area" | "angle", onResult: (result: MeasurementResult) => void): void;
    /**
     * 停止测量
     */
    stopMeasurement(): void;
    /**
     * 清除测量结果
     */
    clearMeasurements(): void;
    /**
     * 地图操作方法
     */
    zoomIn(): void;
    zoomOut(): void;
    fitToExtent(): void;
    clearAll(): void;
    /**
     * 获取高亮管理器实例
     */
    getFeatureHighlightManager(): FeatureHighlightManager | null;
    /**
     * 获取当前右键菜单坐标
     */
    getContextMenuCoordinate(): [number, number];
    /**
     * 获取管理器实例
     */
    getLayerManager(): LayerManager | null;
    getSearchMarkerManager(): SearchMarkerManager | null;
    getMeasurementTool(): MeasurementTool | null;
    getMapOperationTool(): MapOperationTool | null;
    getCoordinateTool(): MapOperationTool | null;
    getGeoJSONLocationTool(): GeoJSONLocationTool | null;
    getDrawingManager(): DrawingManager | null;
    getMarkerAdapter(): MarkerDrawingAdapter | null;
    getMarkerTool(): MarkerDrawingAdapter | null;
    getPopupManager(): PopupManager | null;
    /**
     * 设置用户标记
     */
    setUserMarkers(markers: UserMarker[]): void;
    /**
     * 清除所有图层
     */
    clearLayers(): void;
    /**
     * 添加图层
     */
    addLayers(layers: LayerConfig[]): void;
    getEventManager(): EventManager | null;
    getMap(): Map | null;
    /**
     * 事件监听
     */
    on<K extends keyof MapManagerEvents>(event: K, callback: MapManagerEvents[K]): void;
    /**
     * 移除事件监听
     */
    off<K extends keyof MapManagerEvents>(event: K): void;
    /**
     * 触发事件
     */
    private emit;
    /**
     * 绑定地图事件
     */
    bindEvents(callbacks: {
        onFeatureClick?: (feature: any, layer: any, coordinate: [number, number], mapCoordinate?: [number, number]) => void;
        onMapClick?: (event: any) => void;
        onMapMove?: (center: [number, number], zoom: number) => void;
        onPointerMove?: (coordinate: [number, number]) => void;
        onZoomChange?: (zoom: number, resolution: number) => void;
        onContextMenu?: (coordinate: [number, number], pixel: [number, number]) => void;
    }): void;
    /**
     * 搜索位置
     */
    searchLocation(query: string): Promise<SearchResult[]>;
    /**
     * 在已加载的矢量图层中按属性搜索
     */
    private searchLayersByAttribute;
    /**
     * 清除搜索标记
     */
    clearSearchMarkers(): void;
    /**
     * 开始坐标拾取
     */
    startCoordinatePick(): void;
    /**
     * 停止坐标拾取
     */
    stopCoordinatePick(): void;
    private getLayerById;
    zoomToLayer(layerId: string): void;
    /**
     * 销毁地图管理器
     */
    destroy(): void;
}
//# sourceMappingURL=MapManager.d.ts.map