/**
 * This object contains utility methods for obtaining information about supported renderers of raster layers (i.e. [ImageryLayer](https://developers.arcgis.com/javascript/latest/references/core/layers/ImageryLayer/), [ImageryTileLayer](https://developers.arcgis.com/javascript/latest/references/core/layers/ImageryTileLayer/), or [WCSLayer](https://developers.arcgis.com/javascript/latest/references/core/layers/WCSLayer/)).
 *
 * @since 4.20
 */
import type { RasterRendererUnion } from "../../../renderers/support/raster/types.js";
import type { RasterRendererParameters } from "../renderers/types.js";

/** Supported renderer types for imagery layers. */
export type SmartMappingRasterRendererType = "raster-stretch" | "raster-unique-value" | "raster-rgb" | "raster-class-breaks" | "raster-colormap" | "raster-shaded-relief" | "raster-vector-field" | "raster-flow";

/**
 * Returns supported raster renderer information of an imagery layer.
 *
 * @param parameters - Input parameters for getting supported renderer info about a raster layer.
 * @returns Resolves to an object containing
 *   information about the default renderer and other supported renderer types.
 */
export function getSupportedRendererInfo(parameters: RasterRendererParameters): Promise<SupportedRasterRendererInfo>;

/**
 * The result object of the [getSupportedRendererInfo()](https://developers.arcgis.com/javascript/latest/references/core/smartMapping/raster/support/utils/#getSupportedRendererInfo) method. See the table
 * below for details of each property.
 */
export interface SupportedRasterRendererInfo {
  /**
   * A list of supported
   *   renderer types that may be applied to the input layer.
   */
  supportedTypes: SmartMappingRasterRendererType[];
  /** The default renderer of the input layer. */
  defaultRenderer: RasterRendererUnion;
}

/**
 * Returns default band ids used by a multispectral imagery layer when using a raster [rgb](https://developers.arcgis.com/javascript/latest/references/core/smartMapping/raster/renderers/rgb/)
 * or [stretch](https://developers.arcgis.com/javascript/latest/references/core/smartMapping/raster/renderers/stretch/) renderer.
 *
 * @param parameters - Input parameters for getting default band ids about a raster layer.
 * @returns Resolves to an array containing a list of default band ids.
 */
export function getDefaultBandCombination(parameters: RasterRendererParameters): Promise<[
    number
] | [
    number,
    number,
    number
] | null | undefined>;