import { Image as ImageLayer } from 'ol/layer';
import ImageWMS from 'ol/source/ImageWMS';
import { Map } from 'ol';
import LayerWms from '../../models/layers/layerwms';
import SelectionParam from '../../models/selectionparam';
import LayerManager from '../layers/layermanager';
import ServerOgc from '../../models/serverogc';
import ConfigManager from '../configuration/configmanager';
export default abstract class WmsClient {
    #private;
    map: Map;
    ogcServer: ServerOgc;
    layerManager: LayerManager;
    configManager: ConfigManager;
    resolutionTolerance: number;
    get state(): import("../main").State;
    get audienceExcludedPaths(): string[];
    layers: LayerWms[];
    olayer?: ImageLayer<ImageWMS>;
    independentLayers: Record<string, {
        layerWms: LayerWms;
        olayer: ImageLayer<ImageWMS>;
    }>;
    basemapLayers: ImageLayer<ImageWMS>[];
    constructor(ogcServer: ServerOgc, map: Map);
    get uniqueQueryId(): string;
    removeAllBasemapLayers(): void;
    addLayer(layerWms: LayerWms): void;
    createImageWMSSource(layerList?: LayerWms[]): ImageWMS;
    abstract getOpenLayerLayerNames(layerList: LayerWms[]): string[];
    addBasemapLayer(layerWms: LayerWms): void;
    removeLayer(layerWms: LayerWms): void;
    layerExists(layerWms: LayerWms): boolean;
    layerInStandardLayers(layerWms: LayerWms): boolean;
    layerIsIndependantLayer(layerWms: LayerWms): boolean;
    getOLayer(layerWms: LayerWms): ImageLayer<ImageWMS> | null;
    changeOpacity(layerWms: LayerWms): void;
    changeFilter(layerWms: LayerWms): void;
    changeTimeRestriction(layerWms: LayerWms): void;
    makeLayerIndependent(layerWms: LayerWms): void;
    updateLayerFilter(layerWms: LayerWms): void;
    abstract buildFilterQuery(layerWms: LayerWms): string;
    updateTimeRestriction(layerWms: LayerWms): void;
    selectFeatures(extent: number[]): void;
    getFeatureInfo(selectionParam: SelectionParam): Promise<import("ol").Feature<import("ol/geom").Geometry>[]>;
    private getFeatureInfoUrl;
    private handleGetFeatureInfoResponse;
    refreshZIndexes(): void;
}
export declare class WmsClientQgis extends WmsClient {
    /** QGIS-server does not filter on a WMS layer made from multiple underlying WFS queryLayers
     * Solution: directly query the queryLayers
     */
    getOpenLayerLayerNames(layerList: LayerWms[]): string[];
    /** MapServer wants 1 filter per underlying WFS queryLayer, all included in parentheses
     * QGIS-server wants 1 filter per underlying WFS queryLayer, each in its own in parentheses
     *
     * MapServer: (<filter>...</filter><filter>...</filter>)
     * QGIS-server: (<filter>...</filter>)(<filter>...</filter>)
     */
    buildFilterQuery(layerWms: LayerWms): string;
}
export declare class WmsClientMapServer extends WmsClient {
    getOpenLayerLayerNames(layerList: LayerWms[]): string[];
    buildFilterQuery(layerWms: LayerWms): string;
}
export declare const WmsClientDefault: typeof WmsClientQgis;
export declare const WmsClientGeoServer: typeof WmsClientMapServer;
