import { Map } from 'ol';
import { Coordinate } from 'ol/coordinate';
import { default as Feature } from 'ol/Feature';
import { Geometry as GeometryOl } from 'ol/geom';
import { Type } from 'ol/geom/Geometry';
import { default as VectorLayer } from 'ol/layer/Vector';
import { default as VectorSource } from 'ol/source/Vector';
import { Style } from 'ol/style';
import { Geometry as GeometryApi } from '../../api/services/generated/api';
import { GEMRoadNetDetails, GeometryEvents, ItemPositionResponse, MapEvents, SnapEvents, VectorLayerType } from '../../components/Map/types';
import { TypedEventEmitter } from '../EventEmitter';
import { GEMFeature, GEMLayerConfig, GEMVectorLayer, GroupedWMSLayer, QueryMapItemsPayload, StyleDefinition, WMSLayer, WMSLayerConfig } from './types';
declare class MapService {
    projectionConst: {
        EPSG_2180: string;
        EPSG_3857: string;
    };
    private imageScale;
    private mapItemsCache;
    private abortController;
    private debounceTimeout;
    mapEventEmitter: TypedEventEmitter<MapEvents>;
    geometryEventEmitter: TypedEventEmitter<GeometryEvents>;
    snapEventEmitter: TypedEventEmitter<SnapEvents>;
    constructor();
    queryConfig(symbol: string): Promise<import('axios').AxiosResponse<any, any>>;
    queryMapItemsDebounced(payload: QueryMapItemsPayload, options?: {
        signal?: AbortSignal;
    }, debounceTime?: number): Promise<GEMVectorLayer[]>;
    clearCache(key?: string): void;
    getMapExtent(map: Map): {
        type: string;
        coordinates: Coordinate[][];
        crs: {
            type: string;
            properties: {
                name: string;
            };
        };
    };
    createFeatures(featureList: GEMFeature[], style: StyleDefinition, image: GEMVectorLayer['image'], layerSymbol: string): Feature<GeometryOl>[];
    createFeature(feature: GEMFeature, style: StyleDefinition, image: GEMVectorLayer['image'], layerSymbol: string, imageScale?: number | null): Feature<GeometryOl>;
    createLayer(style?: StyleDefinition): VectorLayer<VectorSource<Feature<GeometryOl>>, Feature<GeometryOl>>;
    createVectorLayer(layer: GEMVectorLayer, type: string, imageScale: number, config?: GEMLayerConfig | WMSLayerConfig): VectorLayer<VectorSource<Feature<GeometryOl>>, Feature<GeometryOl>>;
    groupWMSServices(layers: WMSLayer[]): GroupedWMSLayer[];
    processStyle(styleDefinition: StyleDefinition, imageSrc: string | null): Style;
    queryNetsByRoadId(roadId: number): Promise<import('axios').AxiosResponse<{
        response: GEMRoadNetDetails[];
    }, any>>;
    queryPointIconPositionFromCoords(coords: Coordinate): Promise<{
        response: ItemPositionResponse;
    }>;
    createPurposeGeometry(caseObjectId: number, geometry: Partial<GeometryApi>, layerId: number): Promise<import('axios').AxiosResponse<any, any>>;
    updatePurposeGeometry(id: number, mapRepresentationId: number, geometry: Partial<GeometryApi>, layerId: number): Promise<import('axios').AxiosResponse<any, any>>;
    deletePurposeGeometry(id: number, mapRepresentationId: number): Promise<import('axios').AxiosResponse<any, any>>;
    getPurposeGeometry(caseObjectId: number): Promise<import('axios').AxiosResponse<import('../../api/services/generated/api').QueryMapRepresentationsByCaseObjectIdData, any>>;
    validatePurposeGeometry(geometry: Partial<GeometryApi>): Promise<{
        response: boolean;
    }>;
    getDefaultStyle(feature?: Feature<GeometryOl>, isNonEditable?: boolean): any;
    getSelectStyle(feature: Feature<GeometryOl>): any[] | Style;
    queryHoverStyles(): Record<Type, Style>;
    getHoverStyle(feature: Feature<GeometryOl>): any[] | Style | undefined;
    removeHoverStyle(feature: Feature<GeometryOl>): any;
    filterLayersByFeatureId(id: string, layers: VectorLayerType[]): VectorLayerType[];
    filterLayersByFeatureUId(id: string, layers: VectorLayerType[]): VectorLayerType[];
    findLayerByFeatureId(id: string, layers: VectorLayerType[]): VectorLayerType | undefined;
    findLayerByUId(id: string, layers: VectorLayerType[]): VectorLayerType | undefined;
}
declare const _default: MapService;
export default _default;
