import type { PointJson } from "./GeometryJson";
/**
 * Specifies the mosaic rule when defining how individual images should be
 * mosaiced. It specifies selection, mosaic method, sort order, overlapping
 * pixel resolution, etc. Mosaic rules are for mosaicing rasters in the mosaic
 * dataset.
 *
 * See
 * {@link https://developers.arcgis.com/web-map-specification/objects/mosaicRule/}
 * {@link https://developers.arcgis.com/web-scene-specification/objects/mosaicRule/}.
 */
export interface MosaicRuleJson {
    /**
     * Indicates whether the sort should be ascending.
     */
    ascending?: boolean | null;
    /**
     * A list that defines a subset of rasters used in the mosaic, be aware that
     * the rasters may not be visible at all scales.
     */
    fids?: number[] | null;
    /**
     * The rendering rule applies on items before mosaicing.
     */
    itemRenderingRule?: string | null;
    /**
     * Lock a few rasters in the image service. Used together with
     * esriMosaicLockRaster.
     */
    lockRasterIds?: number[] | null;
    /**
     * The mosaic method determines how the selected rasters are ordered.
     */
    mosaicMethod?: "esriMosaicNone" | "esriMosaicCenter" | "esriMosaicNadir" | "esriMosaicViewPoint" | "esriMosaicAttribute" | "esriMosaicLockRaster" | "esriMosaicNorthwest" | "esriMosaicSeamline" | null;
    /**
     * Use the mosaic operation to resolve overlap pixel values: from first or
     * last raster, use the min, max or mean of the pixel values, or blend
     * them.
     */
    mosaicOperation?: "MT_FIRST" | "MT_LAST" | "MT_MIN" | "MT_MAX" | "MT_MEAN" | "MT_BLEND" | "MT_SUM" | null;
    /**
     * Definition of multidimensional variables.
     *
     * See
     * https://developers.arcgis.com/web-map-specification/objects/multidimensionalDefinition/
     * and
     * https://developers.arcgis.com/web-scene-specification/objects/multidimensionalDefinition/.
     */
    multidimensionalDefinition?: {
        /**
         * Type of dimension being used (ex. StdTime).
         */
        dimensionName?: string | null;
        /**
         * Is slice?
         */
        isSlice?: boolean | null;
        /**
         * Numerical array of associated values.
         */
        values?: number[] | null;
        /**
         * Name of the variable.
         */
        variableName?: string | null;
    }[] | null;
    /**
     * The field name used together with esriMosaicAttribute method.
     */
    sortField?: string | null;
    /**
     * The base sort value used together with esriMosaicAttribute method and
     * sortField parameter.
     */
    sortValue?: number | string | null;
    /**
     * Use a view point along with esriMosaicViewpoint.
     */
    viewpoint?: PointJson | null;
    /**
     * Use a where clause to define a subset of rasters used in the mosaic, be
     * aware that the rasters may not be visible at all scales.
     */
    where?: string | null;
}
