import LayerBase from "ol/layer/Base";
import { IExternalBaseLayer, LayerTransparencySet, RefreshMode, Bounds, Size, ILayerInfo, Dictionary } from './common';
import { ILayerSetOL, IImageLayerEvents } from './layer-set-contracts';
import Feature from 'ol/Feature';
import Source from 'ol/source/Source';
import ImageWMSSource from "ol/source/ImageWMS";
import TileWMSSource from "ol/source/TileWMS";
import Map from "ol/Map";
import OverviewMap from "ol/control/OverviewMap";
import View from 'ol/View';
import { IInitialExternalLayer } from '../actions/defs';
import Geometry from 'ol/geom/Geometry';
import { OLVectorLayer } from "./ol-types";
export declare abstract class LayerSetGroupBase {
    protected callback: IImageLayerEvents;
    protected mainSet: ILayerSetOL;
    protected overviewSet: ILayerSetOL;
    protected wmsSelOverlayLayer: OLVectorLayer;
    protected scratchLayer: OLVectorLayer;
    protected hoverHighlightLayer: OLVectorLayer;
    protected _customLayers: {
        [name: string]: {
            layer: LayerBase;
            order: number;
        };
    };
    constructor(callback: IImageLayerEvents);
    addHighlightedFeature(feature: Feature<Geometry>): void;
    removeHighlightedFeature(feature: Feature<Geometry>): void;
    clearHighlightedFeatures(): void;
    /**
     * @virtual
     * @returns {(LayerBase | undefined)}
     * @memberof LayerSetGroupBase
     */
    tryGetSubjectLayer(): LayerBase | undefined;
    addWmsSelectionOverlay(feat: Feature<Geometry>): void;
    clearWmsSelectionOverlay(): void;
    addScratchFeature(feat: Feature<Geometry>): void;
    clearScratchLayer(): void;
    abstract tryGetWmsSource(): [LayerBase, (ImageWMSSource | TileWMSSource)] | undefined;
    protected registerSourceEvents(source: Source): void;
    updateExternalBaseLayers(externalBaseLayers: IExternalBaseLayer[]): void;
    updateTransparency: (trans: LayerTransparencySet) => void;
    fitViewToExtent: () => void;
    getView: () => View;
    getDpi: () => number;
    getExtent: () => Bounds;
    getLayersForOverviewMap: () => LayerBase[];
    getProjection: () => import("ol/proj").ProjectionLike;
    refreshMap: (mode: RefreshMode) => void;
    showActiveSelectedFeature: (mapExtent: Bounds, size: Size, uri: string) => void;
    getMetersPerUnit: () => number;
    scaleToResolution: (scale: number) => number;
    resolutionToScale: (resolution: number) => number;
    attach(map: Map, ovMapControl: OverviewMap, bSetLayers?: boolean): void;
    detach(map: Map, ovMapControl: OverviewMap): void;
    getCustomLayers(map: Map): ILayerInfo[];
    hasLayer(name: string): boolean;
    addExternalLayer(map: Map, extLayer: IInitialExternalLayer, appSettings: Dictionary<string>): ILayerInfo;
    addLayer<T extends LayerBase>(map: Map, name: string, layer: T, allowReplace?: boolean): ILayerInfo;
    removeLayer(map: Map, name: string): LayerBase | undefined;
    getLayer<T extends LayerBase>(name: string): T | undefined;
    apply(map: Map, layers: ILayerInfo[]): void;
}
