import type WebScene from "@arcgis/core/WebScene";
import type PortalItem from "@arcgis/core/portal/PortalItem";
import type { ExtentJson } from "./GeometryJson";
import type { GroundJson } from "./GroundJson";
import type { WebMapJsonBase } from "./WebMapJson";
/**
 * An Esri web scene.
 *
 * The web scene is the core element of 3D mapping across the ArcGIS platform.
 * It defines the content, style, environment, and slides of your scene and it
 * can be shared across multiple ArcGIS web and desktop applications. Web scenes
 * can be created, published, and consumed in ArcGIS Pro and ArcGIS Online with
 * the Scene Viewer. The web scene is saved as a JSON document that can be
 * consumed by the ArcGIS API for JavaScript via the WebScene class to easily
 * create compelling 3D applications.
 *
 * See
 * {@link https://developers.arcgis.com/web-scene-specification/objects/webscene/}.
 */
export interface WebSceneJson extends WebMapJsonBase {
    /**
     * Defines are to be clipped for display. See
     * {@link https://developers.arcgis.com/web-scene-specification/objects/clippingArea/}.
     */
    clippingArea?: {
        /**
         * Enable / disable clipping.
         */
        clip?: boolean | null;
        /**
         * Envelope of clip area.
         */
        geometry: ExtentJson;
    } | null;
    /**
     * Ground defines the main surface of the web scene, based on elevation
     * layers.
     */
    ground?: GroundJson | null;
    /**
     * An object that defines the characteristics of the vertical coordinate
     * system used by the web scene.
     */
    heightModelInfo?: HeightModelInfoJson | null;
    /**
     * Must be one of the following values: "global" | "local".
     */
    viewingMode?: "global" | "local" | null;
}
/**
 * Updates an ArcGIS JS API WebScene from the given web scene JSON.
 *
 * @param webSceneJson The JSON to apply.
 * @param webScene The web scene to update.
 * @param portalItem The Portal item definition if the web scene comes from
 *   Portal/AGOL.
 */
export declare function applyJsonToWebScene(webSceneJson: Partial<WebSceneJson>, webScene: WebScene, portalItem?: PortalItem): Promise<void>;
/**
 * Serializes an ArcGIS JS API WebScene to JSON.
 *
 * @param webScene The web scene to serialize.
 */
export declare function webSceneToJson(webScene: WebScene): WebSceneJson;
/**
 * An object that defines the characteristics of the vertical coordinate system
 * used by the web scene.
 */
export interface HeightModelInfoJson {
    /**
     * The surface type or height model of the vertical coordinate system.
     */
    heightModel: "ellipsoidal" | "gravity_related_height";
    /**
     * The unit of the vertical coordinate system.
     */
    heightUnit: "150-kilometers" | "50-kilometers" | "benoit-1895-b-chain" | "clarke-foot" | "clarke-link" | "clarke-yard" | "foot" | "gold-coast-foot" | "indian-1937-yard" | "indian-yard" | "meter" | "sears-1922-truncated-chain" | "sears-chain" | "sears-foot" | "sears-yard" | "us-foot";
    /**
     * The datum realization of the vertical coordinate system.
     */
    vertCRS?: string | null;
}
