import type { Callback } from 's2/style/parseFeature.js'; import type { ColorArray } from 'style/color/index.js'; import type { IDGen } from './process.spec.js'; import type { BuildCodeFunction, GPUType, InteractiveWorkerLayer, NotNullOrObject, Property, ValueType } from 'style/style.spec.js'; import type { InteractiveObject, TileRequest } from '../worker.spec.js'; import type { Properties, S2CellId } from 'gis-tools/index.js'; /** Code design input wrapper */ export type CodeDesignInput = [T | Property, Callback] | [T | Property]; /** Code design wrapper */ export type CodeDesign = Array>>; /** * Color function to convert a color to either RBG or LCH * @param lch - flag to use lch if true * @returns a color parsing function */ export declare const colorFunc: (lch: boolean) => Callback; /** * Clamp tool to ensure the number is between -1 and 1 * @param i - input number * @returns clamped number */ export declare const clamp: Callback; /** * # Vector Worker * * Base class for all vector workers. * Ensurses that all vector workers can reuse things like prepping and shipping interactive features, * flusing, id-generation, etc. */ export default class VectorWorker { idGen: IDGen; gpuType: GPUType; interactiveMap: Map; /** * @param idGen - id generator to ensure features don't overlap * @param gpuType - the GPU context of the map renderer (WebGL(1|2) | WebGPU) */ constructor(idGen: IDGen, gpuType: GPUType); /** * Add an interactive feature * @param id - feature id * @param properties - feature properties * @param workerLayer - worker layer to pull the interactive-properties from */ _addInteractiveFeature(id: number, properties: Properties, workerLayer: InteractiveWorkerLayer): void; /** * Flush a tile-request to the render thread * @param mapID - id of the map to ship the data back to * @param tile - tile request * @param sourceName - name of the source the data belongs to * @param _wait - wait function. Not needed at this flush level. */ flush(mapID: string, tile: TileRequest, sourceName: string, _wait: Promise): Promise; /** * Build code for a vector layer * @param design - the design to modify * @returns the build function */ buildCode(design: CodeDesign): BuildCodeFunction; /** * Post an interactive feature set to the render thread * @param mapID - id of the map to ship the data back to * @param sourceName - name of the source the data belongs to * @param tileID - tile id the features belong to */ postInteractive(mapID: string, sourceName: string, tileID: S2CellId): void; } /** * A convenience function to convert an ID to an RGBA encoded color * @param id - the id to convert * @returns an RGBA encoded color */ export declare function idToRGB(id: number): ColorArray;