import type { CodeDesign } from './vectorWorker.js';
import type { RasterWorker as RasterWorkerSpec } from './process.spec.js';
import type { BuildCodeFunctionZoom, GPUType, HillshadeDefinition, HillshadeWorkerLayer, RasterDefinition, RasterWorkerLayer, SensorDefinition, SensorWorkerLayer } from 'style/style.spec.js';
import type { TileRequest } from '../worker.spec.js';
/** Worker for processing raster data */
export default class RasterWorker implements RasterWorkerSpec {
    gpuType: GPUType;
    /** @param gpuType - the GPU context of the map renderer (WebGL(1|2) | WebGPU) */
    constructor(gpuType: GPUType);
    /**
     * Setup an RGBA style layer for the appropriate layer type
     * @param layerDefinition - input sensor/raster/hillshade layer
     * @returns the pre-processed worker layer
     */
    setupLayer(layerDefinition: SensorDefinition | RasterDefinition | HillshadeDefinition): RasterWorkerLayer | SensorWorkerLayer | HillshadeWorkerLayer;
    /**
     * Build code in relation to the design of the raster layer
     * @param design - the design to modify
     * @returns the build function
     */
    buildCode(design: CodeDesign<number>): BuildCodeFunctionZoom;
    /**
     * Build the raster tile
     * @param mapID - the map id to ship the data back to
     * @param sourceName - the source name the data to belongs to
     * @param layers - the layers to process
     * @param tile - the tile request
     * @param data - the tile raster data
     * @param size - the tile size
     */
    buildTile(mapID: string, sourceName: string, layers: Array<RasterWorkerLayer | SensorWorkerLayer | HillshadeWorkerLayer>, tile: TileRequest, data: ArrayBuffer, size: number): Promise<void>;
    /**
     * TODO: flush images
     * @param _mapID - the map id to ship the data back to
     * @param _tile - the tile request
     * @param _sourceName - the source name the data to belongs to
     */
    flush(_mapID: string, _tile: TileRequest, _sourceName: string): Promise<void>;
}
