import { Layer } from 'ol/layer';
import { BaseLayer } from './BaseLayer';
import { Feature } from 'ol';

/**
 * SuperMap iServer REST瓦片服务图层处理器
 * 支持同步返回图层，异步更新 tileGrid
 */
export declare class TileSuperMapRestHandler extends BaseLayer {
    private styleApplied;
    private styleApplyAttempts;
    private maxStyleApplyAttempts;
    /**
     * 转换SuperMap返回的数据格式为标准格式
     * 将fieldNames和fieldValues转换为标准的key-value properties格式
     * @param feature SuperMap返回的要素数据
     * @returns 转换后的标准格式数据
     */
    private transformSupermapFeature;
    private setupEPSG4490;
    createLayer(): Promise<Layer<any>>;
    protected applyFilters(): void;
    private tryApplyStyles;
    setMap(map: any): void;
    private resolveProjection;
    private buildSourceOptions;
    private buildSourceOptionsWithMetadata;
    private createTileGrid;
    /**
     * 异步获取服务 .json 并更新 tileGrid
     */
    private fetchAndUpdateTileGrid;
    updateParams(params: Record<string, any>): void;
    refresh(): void;
    setUrl(url: string): void;
    /**
     * 更新图层配置
     */
    updateConfig(newConfig: any): void;
    /**
     * 重新创建图层以应用新配置
     */
    private recreateLayer;
    /**
     * 根据地图当前分辨率动态计算点选容差
     * @param map OpenLayers Map 对象
     * @param baseTolerance 基础容差（地图坐标系单位，默认为 5）
     * @returns number 动态计算后的 tolerance
     */
    getDynamicTolerance(baseTolerance?: number): number;
    /**
     * 从服务结果中提取要素数组
     * 兼容多种返回格式：
     * 1. result.features (Array)
     * 2. result.features.features (Array)
     * 3. result (Array)
     */
    private extractFeaturesFromResult;
    /**
     * 点选查询要素（类似 WMS GetFeatureInfo）
     * @param lon 经度
     * @param lat 纬度
     * @param options 查询选项
     * @returns Promise<any[]> 查询到的要素数组
     */
    queryFeatureByPointOL(lon: number, lat: number, options?: {
        datasetNames?: string[];
        serviceUrl?: string;
        vectorLayer?: any;
    }): Promise<any[]>;
    /**
     * 通过缓冲区查询要素的公共方法
     * @param lon 经度
     * @param lat 纬度
     * @param options 查询选项
     * @returns Promise<Feature[]> 查询到的要素数组
     */
    getFeaturesByBuffer(lon?: number, lat?: number, options?: {
        bufferDistance?: number;
        datasetNames?: string[];
        serviceUrl?: string;
        vectorLayer?: any;
    }): Promise<Feature[]>;
    private buildDataServerUrl;
    /**
     * 通过边界范围查询要素
     * @param bounds 边界范围 [minX, minY, maxX, maxY]
     * @param options 查询选项
     * @returns Promise<any[]> 查询结果
     */
    getFeaturesByBounds(bounds: [number, number, number, number], options?: {
        maxFeatures?: number;
        datasetNames?: string[];
        returnContent?: boolean;
        targetProjection?: string;
    }): Promise<any[]>;
    /**
     * 通过几何对象查询要素
     * @param geometry OpenLayers几何对象
     * @param options 查询选项
     * @returns Promise<any[]> 查询结果
     */
    getFeaturesByGeometry(geometry: any, options?: {
        maxFeatures?: number;
        datasetNames?: string[];
        returnContent?: boolean;
        spatialQueryMode?: "CONTAIN" | "CROSS" | "DISJOINT" | "INTERSECT" | "OVERLAP" | "TOUCH" | "WITHIN";
    }): Promise<any[]>;
    /**
     * 通过SQL条件查询要素
     * @param sqlCondition SQL查询条件
     * @param options 查询选项
     * @returns Promise<any[]> 查询结果
     */
    getFeaturesBySQL(sqlCondition: string, options?: {
        maxFeatures?: number;
        datasetNames?: string[];
        returnContent?: boolean;
    }): Promise<any[]>;
    /**
     * 通过要素ID查询要素
     * @param featureIds 要素ID数组
     * @param options 查询选项
     * @returns Promise<any[]> 查询结果
     */
    getFeaturesByIDs(featureIds: (string | number)[], options?: {
        datasetNames?: string[];
        returnContent?: boolean;
    }): Promise<any[]>;
    /**
     * 构建数据服务URL
     * @param mapUrl 地图服务URL
     * @returns 数据服务URL
     */
    private buildDataServiceUrl;
    /**
     * 从地图服务URL中提取数据集名称
     * @param mapUrl 地图服务URL
     * @returns 数据集名称数组
     */
    private extractDatasetNames;
    /**
     * 为popup等功能提供的便捷方法：通过点击坐标获取要素信息
     * @param coordinate 点击坐标
     * @param options 查询选项
     * @returns Promise<any[]> 要素信息数组
     */
    getFeatureInfoAtCoordinate(coordinate: [number, number], options?: {
        bufferDistance?: number;
        maxFeatures?: number;
        infoFormat?: string;
        featureCount?: number;
        queryMethod?: "point" | "buffer";
    }): Promise<any[]>;
}
//# sourceMappingURL=TileSuperMapRestHandler.d.ts.map