import EsriElevationInfo from "@arcgis/core/symbols/support/ElevationInfo.js";
import type { ElevationMode as EsriApiElevationMode } from "../support/esri.js";
export declare namespace ElevationInfo {
    /**
     * Converts an ArcGIS Portal JSON representation of elevation info to its
     * Esri JavaScript API equivalent.
     *
     * @deprecated Use "json/*" modules instead.
     * @param json The elevation info JSON to convert.
     */
    function toEsriApiElevationInfo(json: ElevationInfo): EsriElevationInfo;
    /**
     * Converts an Esri JavaScript API ElevationInfo object to its ArcGIS Portal
     * JSON representation.
     *
     * @deprecated Use "json/*" modules instead.
     * @param elevationInfo The elevationInfo object to convert.
     */
    function fromEsriApiElevationInfo(elevationInfo: EsriElevationInfo): ElevationInfo;
}
/**
 * Defines how the graphic is placed with respect to the terrain surface.
 *
 * @deprecated Use "json/*" modules instead.
 */
export type ElevationMode = 
/**
 * Graphics are draped on the terrain surface. This is the default value for
 * features with Polyline or Polygon geometries and features with Point
 * geometries rendered with ObjectSymbol3DLayers.
 */
"onTheGround"
/**
 * The graphic is placed at a specified height/elevation above the ground.
 * This elevation is determined by adding the value of offset to the
 * elevation of the terrain surface. This is the default value for Point
 * geometries rendered with IconSymbol3DLayers.
 */
 | "relativeToGround"
/**
 * Graphics are placed at an absolute height relative to the datum. The
 * absolute height is determined by each feature's z value. This mode works
 * like relative-to-ground with the difference that terrain elevation is
 * discarded.
 */
 | "relativeToScene"
/**
 * Graphics are placed at an absolute height above sea level. This height is
 * determined by the value of offset and doesn't take the elevation of the
 * terrain into account. This is the default value of features with any
 * geometry type where hasZ is true.
 */
 | "absoluteHeight";
export declare namespace ElevationMode {
    /**
     * Converts from elevation mode constants used in the ArcGIS JavaScript API
     * to their web map equivalents.
     *
     * @deprecated Use "json/*" modules instead.
     * @param mode The ArcGIS JavaScript API elevation mode.
     */
    function fromEsriApiElevationMode(mode: string): ElevationMode;
    /**
     * Converts from ArcGIS REST/web map elevation mode constants to their Esri
     * JavaScript API equivalents.
     *
     * @deprecated Use "json/*" modules instead.
     * @param mode The Portal JSON elevation mode.
     */
    function toEsriApiElevationMode(mode: string): EsriApiElevationMode;
}
/**
 * Specifies how graphics are placed on the vertical axis (z). This property may
 * only be used in a SceneView. See
 * {@link https://developers.arcgis.com/web-scene-specification/objects/elevationInfo/}.
 *
 * @deprecated Use "json/*" modules instead.
 */
export interface ElevationInfo {
    /**
     * Deprecated with 1.8, use featureExpressionInfo instead. Ignores geometry
     * z-values.
     */
    featureExpression?: unknown;
    /**
     * Sets the offset distance, type and other parameters.
     */
    featureExpressionInfo?: FeatureExpressionInfo;
    /**
     * Determines how the service elevation values are combined with the basemap
     * elevation. See {@link ElevationMode}.
     */
    mode?: ElevationMode;
    /**
     * Offset is always added to the result of the above logic except for
     * `"onTheGround"` where offset is ignored.
     */
    offset?: number;
    /**
     * A string value indicating the unit for the values in elevationInfo.
     * Applies to both offset and featureExpressionInfo. Defaults to meter if
     * not set. Supported units: "foot", "kilometer", "meter", "mile",
     * "us-foot", "yard".
     */
    unit?: string;
}
/**
 * An object that defines an expression for per-feature elevation. If not set,
 * geometry.z values are used for elevation. Unit is applied to the resulting
 * expression value.
 *
 * @deprecated Use "json/*" modules instead.
 */
export interface FeatureExpressionInfo {
    /**
     * An Arcade expression evaluating to a number. Value of "0" does not use
     * geometry.z values.
     */
    expression?: string;
    /**
     * Title of the expression.
     */
    title?: string;
}
