import type { LayerDescriptor, LayerFilterFieldSpec, LayerCategoryFilterFieldSpec, Selection } from "@nika-js/onlymap"; export interface OmLayerProps { /** Stable identity — same contract as the `id` attribute. */ id: string; /** deck.gl layer class name, e.g. "ScatterplotLayer". */ type: string; /** * Inline rows / GeoJSON / columnar data, or a URL string (formats, * ws(s):// streams, `refresh` polling — the full Data Layer). Keep inline * references stable across renders (useMemo/useState): `data:` watch * tokens diff by reference. */ data?: unknown; /** Legend metadata (ctx.layers). */ label?: string; color?: string; /** GPU filter (DataFilterExtension) — mirrors filter-field/filter-range (single dimension). */ filterField?: string; filterRange?: [number, number]; filterSoftRange?: [number, number]; /** Multi-dimension GPU filter (up to 4) — mirrors `filter-fields`. Wins over `filterField`/`filterRange` if both are set. */ filterFields?: LayerFilterFieldSpec[]; filterCategoryField?: string; filterCategories?: unknown[]; /** Multi-dimension categorical GPU filter (up to 4) — mirrors `filter-category-fields`. Wins over `filterCategoryField`/`filterCategories` if both are set. */ filterCategoryFields?: LayerCategoryFilterFieldSpec[]; /** Dashed path styling, mirroring `dash` / `dash-justified`. */ dash?: [number, number]; dashJustified?: boolean; /** Stream options for ws(s):// data URLs. `streamKey` is the upsert identity field (the `key` attribute — `key` itself is reserved by React). */ source?: string; streamKey?: string; flush?: string; /** Polling interval for REST snapshot URLs, e.g. "5s". */ refresh?: string; /** Behavior under active map terrain; absent uses the layer type's default. */ terrain?: "drape" | "offset" | "off"; /** deck.gl updateTriggers — supply a changing value when an accessor's OUTPUT changes (deck ignores function identity). */ updateTriggers?: Record; /** Click pick on this layer (object flattened/materialized, same as ctx.selection). */ onClick?: (selection: Selection) => void; /** Hover pick on this layer; `null` = the pointer left whatever it was hovering. */ onHover?: (selection: Selection | null) => void; /** Everything else passes through as deck.gl props (camelCase): getPosition, radiusMinPixels, visible, opacity, pickable, … */ [deckProp: string]: unknown; } /** @internal Pure React-props → programmatic descriptor adapter used by parity tests. */ export declare function reactLayerPropsToDescriptor(props: OmLayerProps): LayerDescriptor; export declare function OmLayer(props: OmLayerProps): null;