import type EsriMap from "@arcgis/core/Map";
import EsriWebScene from "@arcgis/core/WebScene";
import type EsriPortalItem from "@arcgis/core/portal/PortalItem";
import type { Extent } from "./Extent.js";
import { Ground } from "./Ground.js";
import type { HeightModelInfo } from "./HeightModelInfo.js";
import { InitialState } from "./InitialState.js";
import { Item } from "./Item.js";
import { MapFloorInfo } from "./MapFloorInfo.js";
import type { MapRangeInfo } from "./MapRangeInfo.js";
import type { OperationalLayer } from "./OperationalLayer.js";
import { Presentation } from "./Presentation.js";
import { SpatialReference } from "./SpatialReference.js";
import type { Table } from "./Table.js";
import { WebSceneBaseMap } from "./WebSceneBaseMap.js";
import type { Widgets } from "./Widgets.js";
export declare namespace WebScene {
    /**
     * Converts an ArcGIS Portal JSON representation of a web scene to its Esri
     * JavaScript API equivalent.
     *
     * @deprecated Use "json/*" modules instead.
     * @param json The web scene JSON to convert.
     * @param portalItem The Portal item definition if the web scene comes from
     *   Portal/AGOL.
     */
    function toEsriApiWebScene(json: WebScene, portalItem?: EsriPortalItem | Item): Promise<EsriWebScene>;
    /**
     * Applies an ArcGIS Portal JSON representation of a web scene to a WebScene
     * object.
     *
     * @param json The web scene JSON to apply.
     * @param scene The WebScene object to apply the JSON to.
     * @param portalItem The Portal item definition if the web scene comes from
     *   Portal/AGOL.
     */
    function applyToEsriApiWebScene(json: Partial<WebScene>, scene: EsriWebScene, portalItem?: EsriPortalItem): Promise<void>;
    /**
     * Converts a WebScene object to its ArcGIS Portal JSON representation.
     *
     * @deprecated Use "json/*" modules instead.
     * @param scene The web scene to convert.
     */
    function fromEsriApiWebScene(scene: EsriMap): WebScene;
}
/**
 * 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/}.
 *
 * @deprecated Use "json/*" modules instead.
 */
export interface WebScene {
    /**
     * The app used to author the WebScene.
     */
    authoringApp?: string;
    /**
     * The version of the app used to author the WebScene.
     */
    authoringAppVersion?: string;
    /**
     * Basemaps give the web scene a geographic context.
     */
    baseMap: WebSceneBaseMap;
    /**
     * Defines are to be clipped for display. See
     * {@link https://developers.arcgis.com/web-scene-specification/objects/clippingArea/}.
     */
    clippingArea?: {
        /**
         * Enable / disable clipping.
         */
        clip?: boolean;
        /**
         * Envelope of clip area.
         */
        geometry: Extent;
    };
    /**
     * Ground defines the main surface of the web scene, based on elevation
     * layers.
     */
    ground?: Ground;
    /**
     * An object that defines the characteristics of the vertical coordinate
     * system used by the web scene.
     */
    heightModelInfo?: HeightModelInfo;
    /**
     * Defines the initial state when opening web scene.
     */
    initialState?: InitialState;
    /**
     * Contains floor-awareness information for the web scene.
     */
    mapFloorInfo?: MapFloorInfo;
    /**
     * Map Range Information.
     */
    mapRangeInfo?: MapRangeInfo;
    /**
     * Operational layers contain business data which are used to make thematic
     * scenes.
     */
    operationalLayers?: OperationalLayer[];
    /**
     * A presentation consists of multiple slides, where each slide is a
     * specific view into the web scene.
     */
    presentation?: Presentation;
    /**
     * An object used to specify the spatial reference of the given geometry.
     */
    spatialReference: SpatialReference;
    /**
     * An array of table objects.
     */
    tables?: Table[];
    /**
     * Root element in the web scene specifying a string value indicating the
     * web scene version.
     *
     * See
     * {@link https://developers.arcgis.com/web-scene-specification/objects/version/}.
     */
    version: string;
    /**
     * Must be one of the following values: "global" | "local".
     */
    viewingMode?: "global" | "local";
    /**
     * The widgets object contains widgets that should be exposed to the user.
     */
    widgets?: Widgets;
}
