/**
 * @param {boolean} allowPoint
 * @param {boolean} allowLine
 * @param {boolean} allowShape
 */
export function getHelpPanelHtml(allowPoint: boolean, allowLine: boolean, allowShape: boolean): string;
/**
 * Extract and parses the GeoJSON from the textarea
 * @param {HTMLTextAreaElement} geospatialInput - the textarea containing the geojson
 */
export function getGeoJSON(geospatialInput: HTMLTextAreaElement): GeoJSON;
/**
 * Gets the bounding box covering a feature collection
 * @param {GeoJSON} geojson - the geojson
 */
export function getBoundingBox(geojson: GeoJSON): import("geojson").BBox;
/**
 * Processes a geospatial field to add map capability
 * @param {MapsEnvironmentConfig} config - the geospatial field element
 * @param {Element} geospatial - the geospatial field element
 * @param {number} index - the 0-based index
 */
export function processGeospatial(config: MapsEnvironmentConfig, geospatial: Element, index: number): void;
/**
 * Adds a feature to the map
 * @param {Feature} feature - the geojson feature
 * @param {any} drawPlugin - the map draw plugin
 * @param {InteractiveMap} map - the interactive map
 */
export function addFeatureToMap(feature: Feature, drawPlugin: any, map: InteractiveMap): void;
/**
 * Returns HTML summary list for the features
 * @param {FeatureCollection} features - the features
 * @param {string} mapId - the ID of the map
 * @param {boolean} [disabled] - render the list with disabled links
 * @param {boolean} [readonly] - render the list in readonly mode
 */
export function createFeaturesHTML(features: FeatureCollection, mapId: string, disabled?: boolean, readonly?: boolean): string;
/**
 * Focus feature
 * @param {Feature} feature - the feature
 * @param {MapLibreMap} mapProvider - the feature id
 */
export function focusFeature(feature: Feature, mapProvider: MapLibreMap): void;
/**
 * Returns HTML summary row for an single feature
 * @param {Feature} feature - the geo feature
 * @param {number} index - the feature index
 * @param {string} mapId - the ID of the map
 * @param {boolean} [disabled] - render the list with disabled links
 * @param {boolean} [readonly] - render the list item in readonly mode
 */
export function createFeatureHTML(feature: Feature, index: number, mapId: string, disabled?: boolean, readonly?: boolean): string;
/**
 * Factory closure to manage the UI
 * @param {GeoJSON} geojson - the features
 * @param {InteractiveMap} map - the map
 * @param {string} mapId - the ID of the map
 * @param {HTMLDivElement} listEl - where to render the feature list
 * @param {HTMLTextAreaElement} geospatialInput - the geospatial textarea
 * @param { UIManagerOptions | undefined } options - extra options such as allowable geometry types
 */
export function getUIManager(geojson: GeoJSON, map: InteractiveMap, mapId: string, listEl: HTMLDivElement, geospatialInput: HTMLTextAreaElement, options: UIManagerOptions | undefined): {
    renderList: RenderList;
    renderValue: RenderValue;
    listEl: HTMLDivElement;
    toggleActionButtons: (hidden: boolean) => void;
    focusDescriptionInput: () => void;
    getAllowableGeometryTypes: () => string[];
};
export type GeoJSON = {
    /**
     * - the GeoJSON type string
     */
    type: "FeatureCollection";
    /**
     * - the features
     */
    features: FeatureCollection;
};
/**
 * Gets all the features
 */
export type GetFeatures = () => FeatureCollection;
/**
 * Gets a feature from the geojson by id
 */
export type GetFeature = (id: string) => Feature | undefined;
/**
 * Add a feature to the geojson
 */
export type AddFeature = (feature: Feature) => any;
/**
 * Update a feature in the geojson
 */
export type UpdateFeature = (id: string, geometry: Geometry) => Feature | undefined;
/**
 * Removes a feature from the geojson
 */
export type RemoveFeature = (id: string) => any;
/**
 * Gets the active feature id
 */
export type GetActiveFeature = () => string | undefined;
/**
 * Set the active feature id
 */
export type SetActiveFeature = (id: string) => void;
/**
 * Resets the active feature id
 */
export type ResetActiveFeature = () => void;
/**
 * Renders the features into the list
 */
export type RenderList = (disabled?: boolean | undefined) => void;
/**
 * Renders the features JSON into the hidden textarea
 */
export type RenderValue = () => void;
/**
 * Toggles the action button hidden state
 */
export type ToggleActionButtons = (hidden: boolean) => void;
/**
 * Returns the list of geometry types a user can create
 */
export type GetAllowableGeometryTypes = () => string[];
/**
 * Set focus to the last description input
 */
export type FocusDescriptionInput = () => void;
export type FeaturesManager = {
    /**
     * - function that gets all the features
     */
    getFeatures: GetFeatures;
    /**
     * - function that gets a feature from the geojson
     */
    getFeature: GetFeature;
    /**
     * - function that adds feature to the geojson
     */
    addFeature: AddFeature;
    /**
     * - function that updates a feature in the geojson
     */
    updateFeature: UpdateFeature;
    /**
     * - function that removes a feature from the geojson
     */
    removeFeature: RemoveFeature;
};
export type ActiveFeatureManager = {
    /**
     * - function that returns the current active feature id
     */
    getActiveFeature: GetActiveFeature;
    /**
     * - function that sets the current active feature id
     */
    setActiveFeature: SetActiveFeature;
    /**
     * - function that resets the current active feature id
     */
    resetActiveFeature: ResetActiveFeature;
};
export type UIManager = {
    /**
     * - function that renders the features JSON into the hidden textarea
     */
    renderValue: RenderValue;
    /**
     * - function that renders the features into the list
     */
    renderList: RenderList;
    /**
     * - the summary list of features
     */
    listEl: HTMLDivElement;
    /**
     * - function that toggles the action buttons
     */
    toggleActionButtons: ToggleActionButtons;
    /**
     * - function that sets focus to a description input element
     */
    focusDescriptionInput: FocusDescriptionInput;
    /**
     * - function that returns the array of geometry types a user can create
     */
    getAllowableGeometryTypes: GetAllowableGeometryTypes;
};
export type Context = {
    /**
     * - the interactive map
     */
    map: InteractiveMap;
    /**
     * - the interactive map provider
     */
    mapProvider?: MapLibreMap | undefined;
    /**
     * - the features manager
     */
    featuresManager: FeaturesManager;
    /**
     * - the active feature manager
     */
    activeFeatureManager: ActiveFeatureManager;
    /**
     * - the UI manager
     */
    uiManager: UIManager;
    /**
     * - the map interact plugin
     */
    interactPlugin: any;
    /**
     * - the map draw plugin
     */
    drawPlugin: any;
};
import type { MapsEnvironmentConfig } from '../../client/javascripts/map.js';
import type { Feature } from '../../server/plugins/engine/types.js';
import type { InteractiveMap } from '../../client/javascripts/map.js';
import type { FeatureCollection } from '../../server/plugins/engine/types.js';
import type { MapLibreMap } from '../../client/javascripts/map.js';
import type { UIManagerOptions } from '../../client/javascripts/map.js';
import type { Geometry } from '../../server/plugins/engine/types.js';
