import type { CSSProperties, ReactNode } from "react"; import type { Selection } from "@nika-js/onlymap"; export type AnchorOffset = "top-left" | "top-center" | "top-right" | "center-left" | "center" | "center-right" | "bottom-left" | "bottom-center" | "bottom-right"; export interface OmOverlayProps { /** Static anchor [lng, lat]. */ anchor?: [number, number]; /** Dynamic anchor: follow the current selection (click/hover picks). */ anchorFrom?: "selection"; /** Scope a selection-anchored overlay to one layer's picks — non-matching selections don't move or re-render it. */ layer?: string; /** * Scope a selection-anchored overlay to one PICK TYPE. A click-opened popup * wants `"click"`: without it, merely hovering any pickable feature drags * the popup there and re-renders it against the hovered object. With it, * hover picks are inert and a click on empty space still dismisses. * `"hover"` is the mirror for hover-driven overlays. Absent: every pick * applies. */ selectionType?: "click" | "hover"; visible?: boolean; /** Attachment point relative to the anchor (default bottom-center: content sits above the point). */ anchorOffset?: AnchorOffset; /** * Set false for hover-following content (tooltips): a hoverable overlay * sits over the picked point and would steal the pointer from the canvas, * flickering the pick on/off (same rationale as the HTML overlay's * automatic pointer-events handling — explicit here since JSX * interactivity isn't detectable). */ interactive?: boolean; className?: string; style?: CSSProperties; /** Static JSX, or a function of the tracked selection (spec: HU7's `{sel => }`). */ children?: ReactNode | ((selection: Selection | null) => ReactNode); } export declare function OmOverlay(props: OmOverlayProps): ReactNode;