import { default as OlMap } from 'ol/Map';
import { ILayerVisibleParams, IMapInitializerParams, IResult, ISetMapCameraParams, ISetMapCenterParams, IStartGetClickCoordinatesParams } from '../../types';
declare type FeatureClickListener = (type: string, id: string, detail: any, event?: any) => void;
interface IClickSubscriptionOptions {
    triggerOnBlankClick?: boolean;
}
export default class OlMapInitializer {
    private mapConfig;
    private map;
    private mapView;
    private pointerMoveRaf;
    private isCursorCrosshair;
    /** getClickCoordinates 坐标回调 */
    private coordinateClickCallback;
    /** 外部点击回调 */
    private markerClick;
    /** 地图点击回调（点击要素或空白处都会触发） */
    private mapClick;
    /** 内部订阅回调列表 */
    private clickListeners;
    subscribeClick(listener: FeatureClickListener, options?: IClickSubscriptionOptions): () => void;
    /** 统一派发给所有监听者 */
    private emitFeatureClick;
    /** 点击地图空白处时，仅派发给需要此事件的监听者 */
    private emitBlankClick;
    initialize(params: IMapInitializerParams): OlMap;
    private processUrl;
    private getRendererSymbol;
    private loadLayers;
    private createMap;
    /**
     * 查询 ImageWMS 图层的要素信息
     * @param evt 点击事件
     */
    private queryImageWMSFeatureInfo;
    /**
     * 设置地图中心点和缩放级别
     * @param params
     * @returns
     */
    setMapCenter(params: ISetMapCenterParams): Promise<IResult>;
    /**
     * 解析 ArcGIS API geometry 格式
     * @param target ArcGIS geometry 对象
     * @returns 中心点和范围
     */
    private parseArcGISGeometry;
    /**
     * 从 paths 或 rings 坐标数组计算 extent
     * @param coordinateArrays paths 或 rings 数组，格式为 [[[x, y], [x, y], ...], ...]
     * @returns [xmin, ymin, xmax, ymax] 或 null
     */
    private calculateExtentFromCoordinates;
    /**
     * 从 points 坐标数组计算 extent（用于 Multipoint）
     * @param points 点数组，格式为 [[x, y], [x, y], ...]
     * @returns [xmin, ymin, xmax, ymax] 或 null
     */
    private calculateExtentFromPoints;
    setMapZoom(params: {
        zoom: number;
    }): IResult;
    /**
     * 设置地图预存的相机视图
     * @param params
     * @returns
     */
    setMapCamera(params: ISetMapCameraParams): Promise<IResult>;
    setLayerVisibility(params: ILayerVisibleParams): Promise<IResult>;
    /**
     * 注册地图点击事件，并返回取消注册的函数
     * @param params
     * @returns
     */
    getClickCoordinates(params: IStartGetClickCoordinatesParams): () => void;
}
export {};
