import type { ClusterConfig, ResolutionContext } from "../types"; type ServerClusterConfig = Extract, { mode: "server"; }>; /** Subset of {@link ResolutionContext} that callers supply from map state. */ export type ViewportResolutionContext = Readonly>; /** * Applies `resolveGroups` entity-shape decisions to a server cluster list. * * Per ADR-0016: expand-only resolution. Each cluster gets a `memberItems` * cross-reference from `data` via `getId`/`getMarkerIds`. `"expand"` with * non-null `memberItems` drops the cluster from the kept set; `"expand"` with * null `memberItems` (any member missing from the data index) silently falls * back to `"keep"`. * * `viewportCtx` carries live map state (zoom, density, bounds). When omitted * all three default to zero/null — pass it from the consumer's map state so * `resolveGroups` callbacks receive real values. * * Pure function — no hooks, safe to call inside `useMemo`. */ export declare const resolveServerClusters: (cluster: ServerClusterConfig, data: ReadonlyArray, getId: (item: TItem) => string, resolveGroups: (cluster: TCluster, memberItems: ReadonlyArray | null, ctx: ResolutionContext) => "keep" | "expand", viewportCtx?: ViewportResolutionContext) => Readonly<{ data: ReadonlyArray; memberItems: ReadonlyMap | null>; }>; export {};