/** Colour-blind-safe categorical default, cycled when a field has more values than entries. */ export declare const FEATURE_PALETTE: string[]; export declare const FEATURE_RAMP: string[]; export declare function resolveFeatureColor(entry: unknown): [number, number, number]; /** * The GLOBAL half of feature colouring — everything derived from the WHOLE * accumulated table, none of it indexed by feature ID. Serializable on * purpose (`order` is entries, not a Map): its identity is the memo key that * keeps per-tile style tables (and their GPU textures) stable across * reconciles and animation frames. */ export interface FeatureColorMapping { kind: "categorical" | "graduated"; field: string; /** graduated: the max across every loaded tile (colours stay comparable as tiles stream in). */ max?: number; /** categorical: global value → first-seen order (assigns each value a stable palette slot). */ order?: [string, number][]; /** Resolved palette/ramp — author `feature-palette` or the built-in defaults. */ colors: unknown[]; strength: number; } /** * Builds the mapping from the layer's ACCUMULATED rows (all tiles). * Returns null when neither colouring attribute is asked for — the model then * renders in its own IFC surface colours. Authored `feature-styles` always * wins upstream: the declarative attributes are sugar over the same table, * never an override of it. */ export declare function buildFeatureColorMapping(rows: Record[], categorical: string | undefined, graduated: string | undefined, palette: unknown[] | undefined, strength: number): FeatureColorMapping | null; /** * Applies the mapping to ONE tile's own rows — the per-tile style table, index * = that tile's local feature ID. A category unseen in the global order (a * race while tiles stream; the next accumulate pass rebuilds the mapping) * falls back to slot 0 rather than being unstyled, matching the pre-split * behavior for unknown values. */ export declare function applyFeatureColorMapping(rows: Record[], mapping: FeatureColorMapping): { color: [number, number, number]; strength: number; }[];