import { TerraDrawChanges, SetCursor, TerraDrawStylingFunction, TerraDrawCallbacks } from "../common";
import CircleGeom from "ol/geom/Circle";
import Feature from "ol/Feature";
import GeoJSON from "ol/format/GeoJSON";
import Map from "ol/Map";
import Circle from "ol/style/Circle";
import Stroke from "ol/style/Stroke";
import Style from "ol/style/Style";
import VectorSource from "ol/source/Vector";
import VectorLayer from "ol/layer/Vector";
import { toLonLat } from "ol/proj";
import { BaseAdapterConfig, TerraDrawBaseAdapter } from "./common/base.adapter";
type InjectableOL = {
    Circle: typeof CircleGeom;
    Feature: typeof Feature;
    GeoJSON: typeof GeoJSON;
    Style: typeof Style;
    CircleStyle: typeof Circle;
    VectorLayer: typeof VectorLayer;
    VectorSource: typeof VectorSource;
    Stroke: typeof Stroke;
    toLonLat: typeof toLonLat;
};
export declare class TerraDrawOpenLayersAdapter extends TerraDrawBaseAdapter {
    constructor(config: {
        map: Map;
        lib: InjectableOL;
    } & BaseAdapterConfig);
    private stylingFunction;
    private _lib;
    private _map;
    private _container;
    private _projection;
    private _vectorSource;
    private _geoJSONReader;
    /**
     * Converts a hexideciaml color to RGB
     * @param hex a string of the hexidecimal string
     * @returns an object to red green and blue (RGB) color
     */
    private hexToRGB;
    /**
     * Converts a hexideciaml color to RGB
     * @param feature
     * @param styling
     * @returns an object to red green and blue (RGB) color
     */
    private getStyles;
    /**
     * Clears the layers created by the adapter
     * @returns void
     * */
    private clearLayers;
    private addFeature;
    private removeFeature;
    /**
     * Returns the longitude and latitude coordinates from a given PointerEvent on the map.
     * @param event The PointerEvent or MouseEvent  containing the screen coordinates of the pointer.
     * @returns An object with 'lng' and 'lat' properties representing the longitude and latitude, or null if the conversion is not possible.
     */
    getLngLatFromEvent(event: PointerEvent | MouseEvent): {
        lng: number;
        lat: number;
    } | null;
    /**
     * Retrieves the HTML element of the OpenLayers element that handles interaction events
     * @returns The HTMLElement representing the map container.
     */
    getMapEventElement(): HTMLCanvasElement;
    /**
     * Enables or disables the draggable functionality of the map.
     * @param enabled Set to true to enable map dragging, or false to disable it.
     */
    setDraggability(enabled: boolean): void;
    /**
     * Converts longitude and latitude coordinates to pixel coordinates in the map container.
     * @param lng The longitude coordinate to project.
     * @param lat The latitude coordinate to project.
     * @returns An object with 'x' and 'y' properties representing the pixel coordinates within the map container.
     */
    project(lng: number, lat: number): {
        x: number;
        y: number;
    };
    /**
     * Converts pixel coordinates in the map container to longitude and latitude coordinates.
     * @param x The x-coordinate in the map container to unproject.
     * @param y The y-coordinate in the map container to unproject.
     * @returns An object with 'lng' and 'lat' properties representing the longitude and latitude coordinates.
     */
    unproject(x: number, y: number): {
        lng: number;
        lat: number;
    };
    /**
     * Sets the cursor style for the map container.
     * @param cursor The CSS cursor style to apply, or 'unset' to remove any previously applied cursor style.
     */
    setCursor(cursor: Parameters<SetCursor>[0]): void;
    /**
     * Enables or disables the double-click to zoom functionality on the map.
     * @param enabled Set to true to enable double-click to zoom, or false to disable it.
     */
    setDoubleClickToZoom(enabled: boolean): void;
    /**
     * Renders GeoJSON features on the map using the provided styling configuration.
     * @param changes An object containing arrays of created, updated, and unchanged features to render.
     * @param styling An object mapping draw modes to feature styling functions
     */
    render(changes: TerraDrawChanges, styling: TerraDrawStylingFunction): void;
    /**
     * Clears the map and store of all rendered data layers
     * @returns void
     * */
    clear(): void;
    register(callbacks: TerraDrawCallbacks): void;
}
export {};
