/** * Shared raster GPU styling pipeline — used by BOTH the COG layer (raster.ts) * and the Zarr layer (zarr.ts). Depends only on `@developmentseed/deck.gl-raster` * (the GPU modules), NOT on `@developmentseed/deck.gl-geotiff` or `zarrita`, so * neither lazy chunk drags the other's decoder in. * * The contract: a per-tile Float32 texture (single-band `r32float`, or three- * band `rgba32float`) plus the styling scalars, run through * FilterNoDataVal → LinearRescale → Colormap (single-band only). Restretch and * recolor are uniform-only updates on a fresh layer instance; the tile cache * survives because the getTileData callback that produced these textures is a * module-level stable reference in each layer. */ import type { Device, Texture } from "@luma.gl/core"; import { type RasterModule } from "@developmentseed/deck.gl-raster/gpu-modules"; /** A styled tile's GPU payload (satisfies deck.gl-raster's MinimalTileData + ours). */ export interface OmTileData { width: number; height: number; byteLength: number; texture: Texture; colormapTexture: Texture; bandCount: number; nodata: number | null; } /** The four styling scalars every raster source (COG, Zarr) exposes. */ export interface RasterStyle { /** Rescale window; both default to the 8-bit range when absent. */ rescaleMin?: number | null; rescaleMax?: number | null; /** Sprite colormap name (single-band sources only). Unknown names warn + fall back to gray. */ colormap?: string | null; /** Overrides the source's own nodata sentinel. */ nodataOverride?: number | null; } export declare function getColormapTexture(device: Device): Promise; export declare function resolveColormapIndex(name: string): number; /** * The styled render pipeline for one tile. Nodata tests the RAW datum, so it * precedes the rescale squash; the colormap runs only for single-band sources. */ export declare function buildRenderPipeline(tile: OmTileData, style: RasterStyle): { renderPipeline: RasterModule[]; };