/**
 * Imagery Layer properties to expose to Excalibur.
 *
 * @experimental
 * @internal
 */
import type ImageryLayer from "../../layers/ImageryLayer.js";
import type ImageryTileLayer from "../../layers/ImageryTileLayer.js";
import type PixelBlock from "../../layers/support/PixelBlock.js";
import type RasterInfo from "../../layers/support/RasterInfo.js";
import type { AbortOptions } from "../../core/promiseUtils.js";
import type { PixelData, RasterPixelType } from "../../layers/raster/types.js";

/**
 * @param layer - ImageryLayer
 * @experimental
 * @internal
 */
export function getRasterInfo(layer: ImageryLayer): RasterInfo;

/**
 * @param layer - ImageryTileLayer
 * @param pixelData - PixelData
 * @param simpleStretchParams - SimpleStretchParameters
 * @param options - AbortOptions
 * @experimental
 * @internal
 */
export function applyRenderer(layer: ImageryTileLayer, pixelData: PixelData, simpleStretchParams: {
    minCutOff: number[] | Float32Array;
    maxCutOff: number[] | Float32Array;
    minOutput: number;
    maxOutput: number;
    gamma?: number[] | Float32Array | null;
    outputPixelType?: RasterPixelType | null;
    isRenderer?: boolean;
}, options?: AbortOptions | undefined): Promise<PixelBlock | null | undefined>;