import type EsriMap from "@arcgis/core/Map";
import EsriWebMap from "@arcgis/core/WebMap";
import type EsriPortalItem from "@arcgis/core/portal/PortalItem";
import type { ApplicationProperties } from "./ApplicationProperties.js";
import { BaseMap } from "./BaseMap.js";
import type { Bookmark } from "./Bookmark.js";
import type { 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 type { Presentation } from "./Presentation.js";
import { SpatialReference } from "./SpatialReference.js";
import type { Table } from "./Table.js";
import { UtilityNetwork } from "./UtilityNetwork.js";
import { Viewpoint as PortalViewpoint } from "./Viewpoint.js";
import type { Widgets } from "./Widgets.js";
export declare namespace WebMap {
    /**
     * Converts an ArcGIS Portal JSON representation of a web map to its Esri
     * JavaScript API equivalent.
     *
     * @deprecated Use "json/*" modules instead.
     * @param json The web map JSON to convert.
     * @param portalItem The Portal item definition if the web map comes from
     *   Portal/AGOL.
     */
    function toEsriApiWebMap(json: WebMap, portalItem?: EsriPortalItem | Item): Promise<EsriWebMap>;
    /**
     * Applies an ArcGIS Portal JSON representation of a web map to a Map
     * object.
     *
     * @param json The web map JSON to apply.
     * @param map The Map object to apply the JSON to.
     * @param portalItem The Portal item definition if the web map comes from
     *   Portal/AGOL.
     */
    function applyToEsriApiMap(json: Partial<WebMap>, map: EsriMap, portalItem?: EsriPortalItem): Promise<void>;
    /**
     * Converts a WebMap object to its ArcGIS Portal JSON representation.
     *
     * @deprecated Use "json/*" modules instead.
     * @param map The web map to convert.
     */
    function fromEsriApiMap(map: EsriMap): WebMap;
}
/**
 * The web map data lists the basemap, operational layers, and bookmarks to be
 * used in the web map. It also contains information about popup windows and
 * layer styling overrides to be used in the web map. A version property allows
 * you to supply the version of the web map JSON format being used.
 *
 * Part of the Esri web map specification. See
 * {@link http://resources.arcgis.com/en/help/arcgis-web-map-json/}. See
 * {@link https://developers.arcgis.com/web-map-specification/objects/webmap/}.
 *
 * @deprecated Use "json/*" modules instead.
 */
export interface WebMap {
    /**
     * The applicationProperties object is one of the objects at the top level
     * of the JSON web map JSON schema. This is responsible for containing the
     * viewing and editing properties of the web map. There are specific objects
     * within this object that are applicable only to Collector and are
     * explained within the property descriptions.
     */
    applicationProperties?: ApplicationProperties;
    /**
     * String value indicating the application which authored the webmap.
     */
    authoringApp?: string;
    /**
     * String value indicating the authoring App's version number.
     */
    authoringAppVersion?: string;
    /**
     * The map's basemap layer(s). Layers are drawn based on the index position
     * in the array; The first layer in the array is the first layer drawn, the
     * next layer in the array is drawn on top of it, and so on.
     */
    baseMap: BaseMap;
    /**
     * Bookmarks that are saved with the map.
     */
    bookmarks?: Bookmark[];
    /**
     * The initial state at which to open the map.
     */
    initialState?: InitialState;
    /**
     * Contains floor-awareness information for the map.
     */
    mapFloorInfo?: MapFloorInfo;
    /**
     * Map range information.
     */
    mapRangeInfo?: MapRangeInfo;
    /**
     * Operational layers contain your business data. They are used to make
     * thematic maps. Usually, a basemap sits beneath your operational layers to
     * give them geographic context. See
     * {@link https://developers.arcgis.com/web-map-specification/objects/operationalLayers/}.
     */
    operationalLayers?: OperationalLayer[];
    /**
     * A presentation consists of multiple slides. Each slide has a different
     * title, extent, basemap, layers etc.
     */
    presentation?: Presentation;
    /**
     * An object used to specify the spatial reference of the given geometry.
     */
    spatialReference: SpatialReference;
    /**
     * Specify an array of table objects.
     */
    tables?: Table[];
    /**
     * An array of utility network objects the map can use to access
     * utility-related functionality, such as tracing and querying
     * associations.
     */
    utilityNetworks?: UtilityNetwork[];
    /**
     * Root element in the web map specifying a string value indicating the web
     * map version. See
     * {@link https://developers.arcgis.com/web-map-specification/objects/version/}.
     */
    version: string;
    /**
     * The widgets object contains widgets that should be exposed to the user.
     */
    widgets?: Widgets;
    /**
     * @deprecated Use WebMap.initialState.viewpoint.
     */
    $initialViewpoint?: PortalViewpoint;
}
