import type { BasemapLayerJsonBase } from "./BasemapLayerJson";
import type { DefinitionEditorJson } from "./DefinitionEditorJson";
import type { LayerDefinitionJson } from "./LayerDefinitionJson";
import type { MosaicRuleJson } from "./MosaicRuleJson";
import type { OperationalLayerJsonBase } from "./OperationalLayerJson";
import type { PopupInfoJson } from "./PopupInfoJson";
/**
 * An image service provides access to raster data through a web service.
 * Multiple rasters can be served as one image service through mosaic dataset
 * technology, dynamically processed and mosaiced on the fly. An image service
 * supports accessing both the mosaicked image and its catalog, as well as
 * individual rasters in the catalog. Also, image services can be cached (tiled)
 * or uncached (dynamic). This object specifically details properties within
 * uncached image services.
 *
 * See
 * {@link https://developers.arcgis.com/web-map-specification/objects/imageServiceLayer/}
 * {@link https://developers.arcgis.com/web-scene-specification/objects/imageServiceLayer/}.
 */
export interface ImageServiceLayerJson extends OperationalLayerJsonBase, BasemapLayerJsonBase {
    /**
     * An array of bandIds that are visible, can specify bands to export or
     * rearrange band order(from image service).
     */
    bandIds?: number[] | null;
    /**
     * The attribution information for the layer. (not in the documentation).
     */
    copyright?: string | null;
    /**
     * Controls how much loss the image will be subjected to by the compression
     * algorithm (from image service).
     */
    compressionQuality?: number | null;
    /**
     * A sequence of custom parameters appended to the URL of all requests
     * related to supporting ArcGIS layer types.
     */
    customParameters?: Record<string, unknown> | null;
    /**
     * Stores interactive filters.
     */
    definitionEditor?: DefinitionEditorJson | null;
    /**
     * The output image type.
     */
    format?: "jpg" | "jpgpng" | "png" | "png24" | "png32" | "png8" | "tiff" | "lerc" | null;
    /**
     * The algorithm used for interpolation.
     */
    interpolation?: "RSP_BilinearInterpolation" | "RSP_CubicConvolution" | "RSP_Majority" | "RSP_NearestNeighbor" | null;
    /**
     * Optional string containing the item ID of the service if it's registered
     * on ArcGIS Online or your organization's portal.
     */
    itemId?: string | null;
    /**
     * A layerDefinition object defining the attribute schema and drawing
     * information for the layer.
     */
    layerDefinition?: LayerDefinitionJson | null;
    /**
     * The type of layer.
     */
    layerType: "ArcGISImageServiceLayer";
    /**
     * Specifies the mosaic rule when defining how individual images should be
     * mosaiced.
     */
    mosaicRule?: MosaicRuleJson | null;
    /**
     * A string value of interpretation of noData setting. Default is
     * 'esriNoDataMatchAny' when noData is a number, and 'esriNoDataMatchAll'
     * when noData is an array.
     */
    noDataInterpretation?: "esriNoDataMatchAll" | "esriNoDataMatchAny" | null;
    /**
     * Pertains to the type of values stored in the raster, such as signed
     * integer, unsigned integer, or floating point. See OutputPixelType.
     */
    pixelType?: string | null;
    /**
     * A PopupInfo object defining the content of pop-up windows when you click
     * or query a feature.
     */
    popupInfo?: PopupInfoJson | null;
    /**
     * Specifies the rule for how the requested image should be rendered.
     */
    renderingRule?: RenderingRuleJson | null;
    /**
     * This property is applicable to layers that support time. If 'true',
     * timeAnimation is enabled.
     */
    timeAnimation?: boolean | null;
    /**
     * The URL to the layer.
     */
    url?: string | null;
}
/**
 * Specifies the rendering rule for how the requested image should be rendered.
 *
 * See
 * {@link https://developers.arcgis.com/web-map-specification/objects/renderingRule/}
 * {@link https://developers.arcgis.com/web-scene-specification/objects/renderingRule/}.
 */
export interface RenderingRuleJson {
    /**
     * Defines the pixel type of the output image.
     */
    outputPixelType?: "C128" | "C64" | "F32" | "F64" | "S16" | "S32" | "S8" | "U1" | "U16" | "U2" | "U32" | "U4" | "U8" | "UNKNOWN" | null;
    /**
     * The raster function name identifies the processing or rendering to be
     * performed. See
     * {@link http://resources.arcgis.com/en/help/arcgis-rest-api/#/Raster_Function_Objects/02r3000000rv000000/}.
     */
    rasterFunction?: string | null;
    /**
     * The arguments for the referenced rasterFunction.
     */
    rasterFunctionArguments?: Record<string, unknown> | null;
    /**
     * Variable name for the raster function.
     */
    variableName?: string | null;
}
