import EsriApiMosaicRule from "@arcgis/core/layers/support/MosaicRule";
import type { MosaicMethodType as EsriMosaicMethodType, MosaicOperationType as EsriMosaicOperationType } from "../support/esri.js";
import type { Point } from "./Point.js";
export declare namespace MosaicRule {
    /**
     * Converts an ArcGIS Portal JSON representation of a mosaic rule to its
     * Esri JavaScript API equivalent.
     *
     * @deprecated Use "json/*" modules instead.
     * @param json The mosaic rule JSON to convert.
     */
    function toEsriApiMosaicRule(json: MosaicRule): EsriApiMosaicRule;
    /**
     * Converts an Esri JavaScript API MosaicRule object to its ArcGIS Portal
     * JSON representation.
     *
     * @deprecated Use "json/*" modules instead.
     * @param mosaicRule The MosaicRule object to convert.
     */
    function fromEsriApiMosaicRule(mosaicRule: EsriApiMosaicRule): MosaicRule;
}
/**
 * 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/}.
 *
 * @deprecated Use "json/*" modules instead.
 */
export interface MosaicRule {
    /**
     * Indicates whether the sort should be ascending.
     */
    ascending?: boolean;
    /**
     * 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[];
    /**
     * The rendering rule applies on items before mosaicing.
     */
    itemRenderingRule?: string;
    /**
     * Lock a few rasters in the image service. Used together with
     * esriMosaicLockRaster.
     */
    lockRasterIds?: number[];
    /**
     * The mosaic method determines how the selected rasters are ordered. See
     * {@link MosaicMethodType}.
     */
    mosaicMethod?: MosaicMethodType;
    /**
     * 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.
     * See {@link MosaicOperationType}.
     */
    mosaicOperation?: MosaicOperationType;
    /**
     * 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;
        /**
         * Is slice?
         */
        isSlice?: boolean;
        /**
         * Numerical array of associated values.
         */
        values?: number[];
        /**
         * Name of the variable.
         */
        variableName?: string;
    }[];
    /**
     * The field name used together with esriMosaicAttribute method.
     */
    sortField?: string;
    /**
     * The base sort value used together with esriMosaicAttribute method and
     * sortField parameter.
     */
    sortValue?: number | string | null;
    /**
     * Use a view point along with esriMosaicViewpoint.
     */
    viewpoint?: Point;
    /**
     * 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;
}
/**
 * The type of the method for MosaicRule.
 *
 * @deprecated Use "json/*" modules instead.
 */
export type MosaicMethodType = "esriMosaicNone" | "esriMosaicCenter" | "esriMosaicNadir" | "esriMosaicViewPoint" | "esriMosaicAttribute" | "esriMosaicLockRaster" | "esriMosaicNorthwest" | "esriMosaicSeamline";
export declare namespace MosaicMethodType {
    /**
     * Converts from mosaic methods type constants used in the esri JavaScript
     * API to their web map equivalents.
     *
     * @deprecated Use "json/*" modules instead.
     * @param type The ArcGIS JavaScript API mosaic method type.
     */
    function fromEsriApiMosaicMethodType(type: string): MosaicMethodType;
    /**
     * Converts from ArcGIS REST/web map mosaic method type constants to their
     * Esri JavaScript API equivalents.
     *
     * @deprecated Use "json/*" modules instead.
     * @param type The Portal JSON mosaic method type.
     */
    function toEsriApiMosaicMethodType(type: string): EsriMosaicMethodType;
}
/**
 * The type of the operation for MosaicRule.
 *
 * @deprecated Use "json/*" modules instead.
 */
export type MosaicOperationType = "MT_FIRST" | "MT_LAST" | "MT_MIN" | "MT_MAX" | "MT_MEAN" | "MT_BLEND" | "MT_SUM";
export declare namespace MosaicOperationType {
    /**
     * Converts from mosaic operation type constants used in the esri JavaScript
     * API to their web map equivalents.
     *
     * @deprecated Use "json/*" modules instead.
     * @param type The ArcGIS JavaScript API mosaic operation type.
     */
    function fromEsriApiMosaicOperationType(type: string): MosaicOperationType;
    /**
     * Converts from ArcGIS REST/web map mosaic operation type constants to
     * their Esri JavaScript API equivalents.
     *
     * @deprecated Use "json/*" modules instead.
     * @param type The Portal JSON mosaic operation type.
     */
    function toEsriApiMosaicOperationType(type: string): EsriMosaicOperationType;
}
