import { OpenLayersMapType, OpenLayersMapOptions, OpenLayersQueryOption, RelationsOption, BufferOption, OverlayOption, SearchOption, SearchResult } from './OpenLayers.types';
import { CesiumMapType } from '../cesium/Cesium.types';
import { LayerOption, DrawingMode, DrawOptions } from '../SuperMap.types';
import { Map as OlMap, Feature, Style, VectorLayer, Geometry, GeoJSON, VectorSource } from './OpenLayersAPI';
/**
 * @function OpenLayersUtils.setMapConfig
 * @description 设置地图配置
 * @param {object} config - 地图配置
 */
declare const setMapConfig: (config: any) => void;
/**
 * @function OpenLayersUtils.createMap
 * @description 创建Map对象
 * @param {OpenLayersMapOptions} options - 地图参数
 * @return  map - 地图对象
 */
declare const createMap: (options: OpenLayersMapOptions) => OlMap;
/**
 * @function OpenLayersUtils.fullExtent
 * @description 全图
 * @param {OpenLayersMapType} map - 地图对象
 */
declare const fullExtent: (map: OpenLayersMapType) => void;
/**
 * @function OpenLayersUtils.zoomIn
 * @description 放大地图
 * @param {OpenLayersMapType} map - 地图对象
 */
declare const zoomIn: (map: OpenLayersMapType) => void;
/**
 * @function OpenLayersUtils.zoomOut
 * @description 缩小地图
 * @param {OpenLayersMapType} map - 地图对象
 */
declare const zoomOut: (map: OpenLayersMapType) => void;
/**
 * @function OpenLayersUtils.moveTo
 * @description 地图平移至目标位置
 * @param {OpenLayersMapType} map - 地图对象
 * @param {[number,number]} lnglat - 目标位置：坐标经纬度
 */
declare const moveTo: (map: OpenLayersMapType, lnglat: [number, number]) => void;
/**
 * @function OpenLayersUtils.moveBy
 * @description 地图平移至目标位置
 * @param {OpenLayersMapType} map - 地图对象
 * @param {number[]} offset - 平移地图的偏移量[x,y],x方向横向平移距离(向右为正),y方向纵向平移距离(向下为正)
 */
declare const moveBy: (map: OpenLayersMapType, offset: number[]) => void;
/**
 * @function OpenLayersUtils.addMiniMap
 * @description 添加鹰眼图
 * @param {OpenLayersMapType} map - 地图对象
 * @param {any} options - 鹰眼图层配置
 */
declare const addMiniMap: (map: OpenLayersMapType, options?: LayerOption) => void;
/**
 * @function OpenLayersUtils.removeMiniMap
 * @description 移除鹰眼图
 * @param {OpenLayersMapType} map - 地图对象
 */
declare const removeMiniMap: (map: OpenLayersMapType) => void;
/**
 * @function OpenLayersUtils.startMeasure
 * @description 测量工具
 * @param {OpenLayersMapType} map - 地图对象
 * @param {string} type - 测量类型
 */
declare const startMeasure: (map: OpenLayersMapType, type: string) => void;
/**
 * @function OpenLayersUtils.clearMeasure
 * @description 清除测量工具
 */
declare const clearMeasure: () => void;
/**
 * @function OpenLayersUtils.startCoordPick
 * @description 坐标拾取
 * @param {OpenLayersMapType} map - 地图对象
 */
declare const startCoordPick: (map: OpenLayersMapType) => void;
/**
 * @function OpenLayersUtils.stopCoordPick
 * @description 清除坐标拾取
 * @param {OpenLayersMapType} map - 地图对象
 */
declare const stopCoordPick: (map: OpenLayersMapType) => void;
/**
 * @function OpenLayersUtils.addLayer
 * @description 添加地图服务
 * @param {OpenLayersMapType} map - 地图对象
 * @param {string} option - 图层参数  1、id:服务图层id  2、type:服务类型  3、其他参数
 */
declare const addLayer: (map: OpenLayersMapType, option: LayerOption | LayerOption[]) => Promise<any>;
/**
 * @function OpenLayersUtils.removeLayer
 * @description 移除地图服务
 * @param {OpenLayersMapType} map - 地图对象
 * @param {LayerOption} option - 服务参数
 */
declare const removeLayer: (map: OpenLayersMapType, option: LayerOption) => void;
/**
 * @function OpenLayersUtils.pickAttribute
 * @description 属性拾取
 * @param {OpenLayersMapType} map - 地图对象
 * @param {string} url - 地图服务地址
 * @param {'Point' | 'Polyline' | 'Polygon'} type - 拾取图形类型
 * @param {FilterParameter[]} queryParams - 查询过滤条件参数数组
 */
declare const pickAttribute: (map: OpenLayersMapType, url: string, type: 'Point' | 'Polyline' | 'Polygon', queryParams: any) => Promise<unknown>;
/**
 * @function OpenLayersUtils.queryMapService
 * @description 地图服务查询
 * @param {OpenLayersQueryOption} option - 查询参数对象 1、url:图层地址 2、type：查询类型  3、查询参数
 */
declare const queryMapService: ({ url, type, data }: any) => Promise<unknown>;
/**
 * @function OpenLayersUtils.queryLayerData
 * @description 数据集查询
 * @param {OpenLayersQueryOption} option - 查询参数对象 1、url:图层地址 2、type：查询类型  3、查询参数
 */
declare const queryLayerData: ({ url, type, data }: OpenLayersQueryOption) => Promise<any>;
/**
 * @function OpenLayersUtils.changeLayerOpacity
 * @description 调整图层透明度
 * @param {string} option - 服务参数  1、id:服务id
 * @param {number} opacity - 透明度 0~1
 */
declare const changeLayerOpacity: (map: OpenLayersMapType, option: LayerOption | LayerOption[], opacity: number) => void;
declare const extractElementByClick: (map: OpenLayersMapType, options: Array<OpenLayersQueryOption>, paintStyle?: Style) => void;
/**
 * @function OpenLayersUtils.removeElement
 * @description 清除点击监听事件和查询结果
 * @param {OpenLayersMapType} map - 地图对象
 */
declare const removeElement: (map: OpenLayersMapType) => void;
/**
 * @function OpenLayersUtils.setLocateCoordinate
 * @description 坐标定位
 * @param {OpenLayersMapType} map - 地图对象
 * @param {number[]} coordinate - 坐标数组
 * @param {'Point' | 'Polyline' | 'Polygon'} type - 类型
 */
declare const setLocateCoordinate: (map: OpenLayersMapType, coordinate: number[], type: 'Point' | 'Polyline' | 'Polygon') => void;
/**
 * @function OpenLayersUtils.resetLocateCoordinate
 * @description 重置坐标定位
 */
declare const resetLocateCoordinate: () => void;
/**
 * @function OpenLayersUtils.syntaxView
 * @description 二维视图同步
 * @param {OpenLayersMapType} map - 二维地图对象
 * @param {CesiumMapType} viewer - 三维地图对象
 */
declare const syntaxView: (map: OpenLayersMapType, viewer: CesiumMapType) => void;
/**
 * @function OpenLayersUtils.layerClear
 * @description 图层清理
 * @param {OpenLayersMapType} map - 地图对象
 * @param {string[]} 底图图层ID
 */
declare const layerClear: (map: OpenLayersMapType, baseLayerIds?: string[]) => void;
/**
 * @function OpenLayersUtils.clear
 * @description 清除分析结果
 * @param {OpenLayersMapType} map - 地图对象
 */
declare const clear: (map: OpenLayersMapType) => void;
/**
 * @function OpenLayersUtils.draw
 * @description 手动绘制
 * @param {OpenLayersMapType} map - 地图对象
 * @param {DrawingMode} drawingMode - 绘制模式
 * @param {object} options - 绘制配置参数
 * @param {boolean} options.continueDraw - 是否连续绘制 默认：true
 * @param {boolean} options.removeLast - 是否移除上一次绘制的图形 默认：true
 * @param {Function} callback - 回调函数
 */
declare const draw: (map: OpenLayersMapType, drawingMode: DrawingMode, options?: DrawOptions, callback?: any) => any;
/**
 * @function OpenLayersUtils.clearDraw
 * @description 清除手动绘制
 * @param {OpenLayersMapType} map - 地图对象
 */
declare const clearDraw: (map: OpenLayersMapType) => void;
/**
 * @function OpenLayersUtils.changeLayerSwipe
 * @description 卷帘分析
 * @param {OpenLayersMapType} map - 地图对象
 * @param {string[]} leadingLayerIds - 卷帘左侧/上侧图层id集合
 * @param {string[]} trailingLayerIds - 卷帘右侧/下侧图层id集合
 * @param {'horizontal' | 'vertical'} direction - 卷帘方向: horizontal-水平、vertical-垂直
 * @param {number} [swipeRatio] - 卷帘比例数值 默认值:0.5
 */
declare const changeLayerSwipe: (map: OpenLayersMapType, leadingLayerIds: string[], trailingLayerIds: string[], direction: 'horizontal' | 'vertical', swipeRatio?: number) => void;
/**
 * @function OpenLayersUtils.spatialRelationsAnalysis
 * @description 空间关系运算
 * @param {RelationsOption} options - 空间关系运算分析参数
 * @param {string} options.url - 服务地址
 * @param {string} options.operateDataset - 数据集名称
 * @param {string} options.sourceDataset - 源数据集名称
 * @param {OverlayOperationType} options.operation - 操作枚举值 CLIP ERASE IDENTITY INTERSECT UNION UPDATE XOR
 * @return 空间关系运算结果
 */
declare const spatialRelationsAnalysis: (options: RelationsOption) => Promise<unknown>;
declare function getAnalysisGeometry(geometry: any): Geometry | undefined;
/**
 * @function OpenLayersUtils.bufferAnalysis
 * @description 几何对象缓冲区分析
 * @param {BufferOption} options - 缓冲区分析参数
 * @param {string} options.url - 服务地址
 * @param {string} options.layerName - 图层名称
 * @param {GeoJSON.Geometry|Geometry} options.geometry - 要做缓冲区分析的几何对象(支持GeoJSON或ol/geom/Geometry)
 * @param {number} options.distance - 缓冲距离
 * @param {boolean} options.isCloseClip - 是否关闭结果裁切-只保留相交部分（默认不关闭）
 * @return bufferResult:缓冲区几何图形，queryResult：根据缓冲区进行叠加分析的结果
 */
declare const bufferAnalysis: (options: BufferOption) => Promise<{
    bufferResult: GeoJSON.Feature;
    queryResult: GeoJSON.FeatureCollection;
}>;
/**
 * @function OpenLayersUtils.overlayAnalysis
 * @description 叠加分析
 * @param {OverlayOption} options - 分析参数
 * @param {string} options.url - 服务地址
 * @param {string} options.layerName - 图层名称
 * @param {GeoJSON.Geometry|Geometry} options.geometry - 几何对象(支持GeoJSON或ol/geom/Geometry)
 * @param {boolean} options.isCloseClip - 是否关闭结果裁切,只保留相交部分（默认不关闭）
 * @return 叠加分析结果
 */
declare const overlayAnalysis: (options: OverlayOption) => Promise<GeoJSON.FeatureCollection>;
/**
 * @function OpenLayersUtils.addGeoJSONLayer
 * @description 添加GeoJSON数据图层
 * @param {OpenLayersMapType} map - 地图对象
 * @param {any} geojson - GeoJSON数据
 * @param {Style} style - 图层样式
 * @return GeoJSON数据图层
 */
declare const addGeoJSONLayer: (map: OpenLayersMapType, geojson: any, style?: Style) => VectorLayer<VectorSource<Geometry>>;
/**
 * @function OpenLayersUtils.getLayersInfo
 * @description 获取图层信息
 * @param {string} url - 服务地址
 */
declare const getLayersInfo: (url: string) => Promise<unknown>;
/**
 * @function OpenLayersUtils.queryMapServiceStatistics
 * @description 地图服务查询统计
 * @param {string} url - 服务地址
 * @param {SearchOption} options - 查询条件
 */
declare const queryMapServiceStatistics: ({ url, options }: SearchOption) => Promise<SearchResult[]>;
export { createMap, setMapConfig, fullExtent, zoomIn, zoomOut, moveTo, moveBy, addMiniMap, removeMiniMap, startMeasure, clearMeasure, startCoordPick, stopCoordPick, addLayer, removeLayer, queryLayerData, queryMapService, changeLayerOpacity, extractElementByClick, removeElement, setLocateCoordinate, resetLocateCoordinate, changeLayerSwipe, syntaxView, draw, clearDraw, spatialRelationsAnalysis, bufferAnalysis, overlayAnalysis, layerClear, clear, addGeoJSONLayer, getLayersInfo, pickAttribute, queryMapServiceStatistics, getAnalysisGeometry };
