import { MutableRefObject } from 'react';
import { Collection, Feature, Map, Overlay } from 'ol';
import { Coordinate } from 'ol/coordinate';
import { Geometry } from 'ol/geom';
import { default as Draw } from 'ol/interaction/Draw';
import { default as Modify } from 'ol/interaction/Modify';
import { default as Select } from 'ol/interaction/Select';
import { default as Snap } from 'ol/interaction/Snap';
import { default as VectorLayer } from 'ol/layer/Vector';
import { default as VectorSource } from 'ol/source/Vector';
import { GEMRoadNetDetails, SnapConfiguration, VectorLayerType } from './types';
import * as olProj from 'ol/proj';
export interface Interactions {
    draw?: Draw;
    modify?: Modify;
    snap?: Snap;
    hover?: Select;
    select?: Select;
}
interface NonNullInteractions {
    draw: Draw;
    modify: Modify;
    snap: Snap;
    hover: Select;
    select: Select;
}
type NonNullableRefManager = {
    prefix: string;
    initialized: MutableRefObject<boolean>;
    interactions: MutableRefObject<NonNullInteractions>;
    persistedGeometry: MutableRefObject<Geometry | undefined>;
    interactLayers: MutableRefObject<VectorLayerType[]>;
    hoveredGeometry: MutableRefObject<Feature<Geometry>>;
    mapInstance: MutableRefObject<Map>;
    showInfoLayerEnabledRef: MutableRefObject<boolean>;
    distanceOverlayElement: MutableRefObject<HTMLElement>;
    drawLayer: MutableRefObject<VectorLayerType>;
    positionFeature: MutableRefObject<Feature<Geometry>>;
    distanceOverlay: MutableRefObject<Overlay>;
    angleOverlay: MutableRefObject<Overlay>;
    angleOverlayElement: MutableRefObject<HTMLDivElement>;
    projections: MutableRefObject<olProj.Projection | null>;
    selectedNet: MutableRefObject<GEMRoadNetDetails>;
    selectedRoadId: MutableRefObject<number>;
    selectedRoadData: MutableRefObject<GEMRoadNetDetails[]>;
    lastClickedPoint: MutableRefObject<Coordinate | null>;
    selectedLayerId: MutableRefObject<number>;
    isModalAccepted: MutableRefObject<boolean>;
    snapFeatures: MutableRefObject<Collection<Feature<Geometry>>>;
    drawnRoad: MutableRefObject<Feature<Geometry> | Feature<Geometry>[]>;
    roadSource: MutableRefObject<VectorSource<Feature<Geometry>>>;
    interactSnapLayers: MutableRefObject<VectorLayer[]>;
    positionLayer: MutableRefObject<VectorLayerType>;
    position: MutableRefObject<Coordinate>;
    isSnapVisualization: MutableRefObject<boolean>;
    isSnapToAngle: MutableRefObject<boolean>;
    isSnapToMiddleActive: MutableRefObject<boolean>;
    isSnapToAbsoluteCenter: MutableRefObject<boolean>;
    isSnapActive: MutableRefObject<boolean>;
    isSnapToAngleDisabled: MutableRefObject<boolean>;
    snapConfig: MutableRefObject<SnapConfiguration>;
};
export declare const useInitializeInteractionsRefs: () => void;
export declare const getMapRefs: () => NonNullableRefManager;
export {};
