import type Map from "@arcgis/core/Map";
import type WebMap from "@arcgis/core/WebMap";
import type PortalItem from "@arcgis/core/portal/PortalItem";
import type { BasemapJson } from "./BasemapJson";
import type { BackgroundJson, EnvironmentJson } from "./EnvironmentJson";
import type { ExtentJson, PointJson } from "./GeometryJson";
import type { OperationalLayerJson } from "./OperationalLayerJson";
import type { SpatialReferenceJson } from "./SpatialReferenceJson";
import type { SublayerJson } from "./SublayerJson";
import type { ColorJson } from "./SymbolJson";
import type { TableJson } from "./TableJson";
import type { ViewpointJson } from "./ViewpointJson";
/**
 * Base properties for web maps and web scenes.
 */
export interface WebMapJsonBase {
    /**
     * 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?: ApplicationPropertiesJson | null;
    /**
     * String value indicating the application which authored the webmap.
     */
    authoringApp?: string | null;
    /**
     * String value indicating the authoring App's version number.
     */
    authoringAppVersion?: string | null;
    /**
     * 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: BasemapJson;
    /**
     * The initial state at which to open the map.
     */
    initialState?: InitialStateJson | null;
    /**
     * Contains floor-awareness information for the map.
     */
    mapFloorInfo?: MapFloorInfoJson | null;
    /**
     * Map range information.
     */
    mapRangeInfo?: MapRangeInfoJson | null;
    /**
     * A presentation consists of multiple slides. Each slide has a different
     * title, extent, basemap, layers etc.
     */
    presentation?: PresentationJson | null;
    /**
     * An object used to specify the spatial reference of the given geometry.
     */
    spatialReference: SpatialReferenceJson;
    /**
     * Specify an array of table objects.
     */
    tables?: TableJson[] | null;
    /**
     * 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?: OperationalLayerJson[] | null;
    /**
     * TODO: Not yet documented in web map spec, but present in 2.29 web maps
     * generated by Maps SDK 4.28.
     */
    timeZone?: string | null;
    /**
     * 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?: WidgetsJson | null;
}
/**
 * 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/}.
 */
export interface WebMapJson extends WebMapJsonBase {
    /**
     * The background.
     */
    background?: BackgroundJson | null;
    /**
     * Bookmarks that are saved with the map.
     */
    bookmarks?: BookmarkJson[] | null;
    /**
     * An array of utility network objects the map can use to access
     * utility-related functionality, such as tracing and querying
     * associations.
     */
    utilityNetworks?: UtilityNetworkJson[] | null;
}
/**
 * Updates an ArcGIS JS API WebMap from the given web map JSON.
 *
 * @param webMapJson The JSON to apply.
 * @param map The layer to update.
 * @param portalItem The Portal item definition if the web scene comes from
 *   Portal/AGOL.
 */
export declare function applyJsonToWebMap(webMapJson: Partial<WebMapJson>, map: Map, portalItem?: PortalItem): Promise<void>;
/**
 * Serializes an ArcGIS JS API Map or WebMap to JSON.
 *
 * @param map The map to serialize.
 */
export declare function webMapToJson(map: WebMap): WebMapJson;
/**
 * Predefined bookmarks for use by the application. A bookmark is a saved map
 * extent that allows end users to quickly navigate to a particular area of
 * interest.
 *
 * See
 * {@link https://developers.arcgis.com/web-map-specification/objects/bookmark/}.
 */
export interface BookmarkJson {
    /**
     * @deprecated An extent object containing a spatial reference, a lower left
     *   coordinate, and an upper right coordinate defining the rectangular area
     *   of the bookmark. The spatial reference must be the same as the map
     *   spatial reference.
     */
    extent?: ExtentJson | null;
    /**
     * A string name for the bookmark.
     */
    name: string;
    /**
     * Object containing a thumbnail image.
     */
    thumbnail?: {
        /**
         * The URI pointing to the thumbnail image. Can be a URL or a
         * base64-encoded image.
         */
        url?: string | null;
    } | null;
    /**
     * Represents the location displayed on the map. If viewpoint is defined,
     * ignore the extent. If viewpoint is not defined, use the extent property.
     * For backwards compatibility, please save both extent and viewpoint
     * properties.
     */
    viewpoint?: ViewpointJson | null;
}
/**
 * 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.
 *
 * See
 * {@link https://developers.arcgis.com/web-map-specification/objects/applicationProperties/}.
 */
export interface ApplicationPropertiesJson {
    /**
     * If locationTracking is set and enabled, the Collector application will
     * update the feature service at the defined interval with the current
     * location of the user logged into the Collector app. See
     * {@link https://developers.arcgis.com/web-map-specification/objects/editing/}.
     */
    editing?: {
        /**
         * If locationTracking is set and enabled, the collector app will update
         * the feature service at the defined interval with the current location
         * of the user logged into the collector application. See
         * {@link https://developers.arcgis.com/web-map-specification/objects/locationTracking/}.
         */
        locationTracking?: {
            /**
             * A boolean value indicating whether or not location tracking is
             * enabled on the webmap.
             */
            enabled?: boolean | null;
            /**
             * An object of additional information specifying layer and update
             * interval time. See
             * {@link https://developers.arcgis.com/web-map-specification/objects/info/}.
             */
            info?: {
                /**
                 * A string value indicating the given layer id specified in the
                 * web map.
                 */
                layerId?: string | null;
                /**
                 * A numeric value indicating the time interval used to update
                 * the feature service. Default value is 300 seconds.
                 */
                updateInterval?: number | null;
            } | null;
        } | null;
    } | null;
    /**
     * Use if working with offline maps. See
     * {@link https://developers.arcgis.com/web-map-specification/objects/offline/}.
     */
    offline?: {
        /**
         * List of layers which should be included in an offline map as
         * connected online layers. See
         * {@link https://developers.arcgis.com/web-map-specification/objects/connectedOnlineLayer/}.
         */
        connectedOnlineLayers?: [
            {
                /**
                 * Identifies which layer or table in the web map is to
                 * remain online by specifying the value of its unique id
                 * property.
                 */
                id?: string | null;
            }
        ] | null;
        /**
         * Object detailing the available offline editing options. See
         * {@link https://developers.arcgis.com/web-map-specification/objects/editableLayers/}.
         */
        editableLayers?: {
            /**
             * When editing layers, the edits are always sent to the server.
             * This string value indicates which data is retrieved. For example,
             * none indicates that only the schema is written since neither the
             * features nor attachments are retrieved. For a full sync without
             * downloading attachments, indicate features. Lastly, the default
             * behavior is to have a full sync using featuresAndAttachments
             * where both features and attachments are retrieved.
             */
            download?: "features" | "featuresAndAttachments" | "none" | null;
            /**
             * This string value indicates how the data is synced.
             */
            sync?: "syncFeaturesAndAttachments" | "syncFeaturesUploadAttachments" | "uploadFeaturesAndAttachments" | null;
        } | null;
        /**
         * Object detailing offline basemap options. See
         * {@link https://developers.arcgis.com/web-map-specification/objects/offlinebasemap/}.
         */
        offlinebasemap?: {
            /**
             * The filename of a basemap that has been copied to a mobile
             * device. This can be used instead of the default basemap for the
             * map to reduce downloads.
             */
            referenceBasemapName?: string | null;
        } | null;
        /**
         * Object indicating what to do with attachments in read-only layers.
         * See
         * {@link https://developers.arcgis.com/web-map-specification/objects/readonlyLayers/}.
         */
        readonlyLayers?: {
            /**
             * Indicates whether to include attachments with the read-only data.
             */
            downloadAttachments?: boolean | null;
        } | null;
    } | null;
    /**
     * An object containing all the viewing properties of the web map. If this
     * is null or not defined, the client should assume a logical default. See
     * {@link https://developers.arcgis.com/web-map-specification/objects/viewing/}.
     */
    viewing?: {
        /**
         * The basemap tool which will use the basemap group defined in the
         * Portal. See
         * {@link https://developers.arcgis.com/web-map-specification/objects/basemapGallery/}.
         */
        basemapGallery?: {
            /**
             * Indicates whether to display the baseMapGallery.
             */
            enabled?: boolean | null;
        } | null;
        /**
         * Measure tool setting for the application properties. See
         * {@link https://developers.arcgis.com/web-map-specification/objects/measure/}.
         */
        measure?: {
            /**
             * Indicates if the measuring tool is enabled.
             */
            enabled?: boolean | null;
        } | null;
        /**
         * The route tool which will leverage the Portals defined route service.
         * See
         * {@link https://developers.arcgis.com/web-map-specification/objects/routing/}.
         */
        routing?: {
            /**
             * Indicates whether to set the route service.
             */
            enabled?: boolean | null;
        } | null;
        /**
         * An object specifying search parameters within the webmap. See
         * {@link https://developers.arcgis.com/web-map-specification/objects/search/}.
         */
        search?: {
            /**
             * A boolean value indicating whether or not to disable the place
             * finder.
             */
            disablePlaceFinder?: boolean | null;
            /**
             * A boolean value indicating whether search (find) functionality is
             * enabled in the web map.
             */
            enabled?: boolean | null;
            /**
             * A string value used to indicate the hint provided with the search
             * dialog.
             */
            hintText?: string | null;
            /**
             * An array of layer objects defining the styling, geometry, and
             * attribute information for the features.
             */
            layers?: SublayerJson[] | null;
        } | null;
    } | null;
}
/**
 * Defines the initial state when opening web scene.
 *
 * See
 * {@link https://developers.arcgis.com/web-scene-specification/objects/initialState/}.
 */
export interface InitialStateJson {
    /**
     * Describes a point of view for a 2D or 3D view. In a 3D view, it is
     * determined using a camera position.
     */
    viewpoint: ViewpointJson;
    /**
     * The initial environment settings of the WebScene.
     */
    environment?: EnvironmentJson | null;
}
/**
 * Identifies the central object for utility network schema information to
 * access utility-related functionality, such as tracing and querying
 * associations. See
 * {@link https://developers.arcgis.com/web-map-specification/objects/utilityNetwork/}.
 */
export interface UtilityNetworkJson {
    /**
     * A unique identifying string for the utility network.
     */
    id?: string | null;
    /**
     * A user-friendly string title for the utility network that can be used in
     * a table of contents.
     */
    title?: string | null;
    /**
     * An array of pre-configured trace configurations for quickly running
     * common traces.
     */
    traceConfigurations?: TraceConfigurationJson[] | null;
    /**
     * A string value indicating the URL to the utility network layer.
     */
    url?: string | null;
}
/**
 * An array of pre-configured trace configurations for quickly running common
 * traces. See
 * {@link https://developers.arcgis.com/web-map-specification/objects/traceConfiguration/}.
 */
export interface TraceConfigurationJson {
    /**
     * A unique identifying string for the trace configuration.
     */
    id?: string | null;
    /**
     * A user-friendly string title for the trace configuration that can be used
     * in a table of contents.
     */
    title?: string | null;
}
/**
 * Contains floor-awareness information for the map. Defines the layers and
 * required fields for each layer that are used for floor filtering. See
 * {@link https://developers.arcgis.com/web-map-specification/objects/mapFloorInfo/}.
 */
export interface MapFloorInfoJson {
    /**
     * Defines the layer and field properties for the Facility layer used for
     * floor filtering.
     */
    facilityLayer?: FacilityLayerInfoJson | null;
    /**
     * Defines the layer and field properties for the Level layer used for floor
     * filtering.
     */
    levelLayer?: LevelLayerInfoJson | null;
    /**
     * Defines the layer and field properties for the Site layer used for floor
     * filtering. This property is optional.
     */
    siteLayer?: SiteLayerInfoJson | null;
}
/**
 * Defines the layer and field properties for the Facility layer used for floor
 * filtering. See
 * {@link https://developers.arcgis.com/web-map-specification/objects/facilityLayerInfo/}.
 */
export interface FacilityLayerInfoJson {
    /**
     * The name of the attribute field that contains a facility feature's unique
     * identifier.
     */
    facilityIdField?: string | null;
    /**
     * A layer ID that refers to an operational layer in the map. The layer
     * provides access to Facility features to use for floor filtering.
     */
    layerId?: string | null;
    /**
     * The name of the attribute field that contains a facility feature's name.
     */
    nameField?: string | null;
    /**
     * The name of the attribute field that contains a facility feature's site
     * identifier (a foreign key to the Site layer).
     */
    siteIdField?: string | null;
}
/**
 * Defines the layer and field properties for the Level layer used for floor
 * filtering. See
 * {@link https://developers.arcgis.com/web-map-specification/objects/levelLayerInfo/}.
 */
export interface LevelLayerInfoJson {
    /**
     * The name of the attribute field that contains a level feature's facility
     * identifier (a foreign key to the Facility layer).
     */
    facilityIdField?: string | null;
    /**
     * A layer ID that refers to an operational layer in the map. The layer
     * provides access to Level features to use for floor filtering.
     */
    layerId?: string | null;
    /**
     * The name of the attribute field that contains a level feature's unique
     * identifier.
     */
    levelIdField?: string | null;
    /**
     * The name of the attribute field that contains a level feature's level
     * number specific to its facility.
     */
    levelNumberField?: string | null;
    /**
     * The name of the attribute field that contains a level feature's long
     * name.
     */
    longNameField?: string | null;
    /**
     * The name of the attribute field that contains a level feature's short
     * name.
     */
    shortNameField?: string | null;
    /**
     * The name of the attribute field that contains a level feature's vertical
     * order. The vertical order defines the order of display in the floor
     * filter widget, and it also references the floor levels of an Indoor
     * Positioning System.
     */
    verticalOrderField?: string | null;
}
/**
 * Defines the layer and field properties for the Site layer used for floor
 * filtering. This property is optional. See
 * {@link https://developers.arcgis.com/web-map-specification/objects/siteLayerInfo/}.
 */
export interface SiteLayerInfoJson {
    /**
     * A layer ID that refers to an operational layer in the map. The layer
     * provides access to Site features to use for floor filtering.
     */
    layerId?: string | null;
    /**
     * The name of the attribute field that contains a site feature's name.
     */
    nameField?: string | null;
    /**
     * The name of the attribute field that contains a site feature's unique
     * identifier.
     */
    siteIdField?: string | null;
}
/**
 * Map Range Information.
 *
 * See
 * {@link https://developers.arcgis.com/web-scene-specification/objects/mapRangeInfo/}.
 */
export interface MapRangeInfoJson {
    /**
     * Active range ID that slider/picker acts upon.
     */
    activeRangeName?: string | null;
    /**
     * Current range for the active range.
     */
    currentRangeExtent?: [number, number] | null;
    /**
     * Full range extent for the active range to be presented in the UI.
     */
    fullRangeExtent?: [number, number] | null;
}
/**
 * The widgets object contains widgets that should be exposed to the user.
 *
 * See
 * {@link https://developers.arcgis.com/web-map-specification/objects/widgets/}
 * {@link https://developers.arcgis.com/web-scene-specification/objects/widgets/}.
 */
export interface WidgetsJson {
    /**
     * Active range.
     */
    range?: RangeJson | null;
    /**
     * Time animation is controlled by a configurable time slider. The time
     * slider widget will act upon all the time aware layers in the map.
     */
    timeSlider?: TimeSliderJson | null;
    /**
     * Configurable properties used by the floor filter widget.
     */
    floorFilter?: FloorFilterJson | null;
}
/**
 * Configurable properties used by the floor filter widget. See
 * {@link https://developers.arcgis.com/web-map-specification/objects/floorFilter/}.
 */
export interface FloorFilterJson {
    /**
     * Indicates whether the floor filter is actively filtering the displayed
     * content according to the floor filter selection.
     */
    enabled?: boolean | null;
    /**
     * Contains a facility identifier for the initially selected facility in the
     * floor filter.
     */
    facility?: string | null;
    /**
     * Contains a level identifier for the initially selected floor, which is
     * used when filtering floor-aware layers.
     */
    level?: string | null;
    /**
     * Indicates whether the floor filter is showing long names instead of short
     * names for floor levels.
     */
    longNames?: boolean | null;
    /**
     * Indicates whether the floor filter has been minimized to show only the
     * levels list instead of showing the full set of breadcrumbs.
     */
    minimized?: boolean | null;
    /**
     * Indicates whether the floor filter has been pinned to show the floor
     * levels list, instead of including the levels as a breadcrumb dropdown.
     */
    pinnedLevels?: boolean | null;
    /**
     * Contains a site identifier for the initially selected site in the floor
     * filter.
     */
    siteIdentifier?: string | null;
}
/**
 * Time animation is controlled by a configurable time slider. Those
 * configurations are saved to the web map as a timeSlider widget.
 *
 * See
 * {@link https://developers.arcgis.com/web-map-specification/objects/timeSlider/}.
 */
export interface TimeSliderJson {
    /**
     * Properties for the time slider.
     */
    properties: {
        /**
         * The end of the time slider.
         */
        endTime?: number | null;
        /**
         * Number of stops within the timeSlider widget.
         */
        numberOfStops?: number | null;
        /**
         * The start of the time slider.
         */
        startTime?: number | null;
        /**
         * The default value for the thumbCount is 1.
         */
        thumbCount?: number | null;
        /**
         * Rate at which the time animation plays.
         */
        thumbMovingRate?: number | null;
        /**
         * The interval which has been defined for the time slider. See
         * {@link https://developers.arcgis.com/web-map-specification/objects/timeStopInterval/}.
         */
        timeStopInterval?: {
            /**
             * The length of the time interval.
             */
            interval?: number | null;
            /**
             * The units used to define the interval.
             */
            units?: "esriTimeUnitsCenturies" | "esriTimeUnitsDays" | "esriTimeUnitsDecades" | "esriTimeUnitsHours" | "esriTimeUnitsMilliseconds" | "esriTimeUnitsMinutes" | "esriTimeUnitsMonths" | "esriTimeUnitsSeconds" | "esriTimeUnitsWeeks" | "esriTimeUnitsYears" | null;
        } | null;
    };
}
/**
 * Range object.
 *
 * See {@link https://developers.arcgis.com/web-map-specification/objects/range/}
 * {@link https://developers.arcgis.com/web-scene-specification/objects/range/}.
 */
export interface RangeJson {
    /**
     * Indicates the mode in which the active range should be presented to the
     * user. Must be one of the following values: slider, picker.
     */
    interactionMode?: string | null;
    /**
     * This is used to generate the activeRangeValues if activeRangeValues are
     * not specified.
     */
    numberOfStops?: number | null;
    /**
     * Interval in which stops should be generated.
     */
    stopInterval?: number | null;
}
/**
 * A presentation consists of multiple slides, where each slide is a specific
 * view into the web scene.
 *
 * See
 * {@link https://developers.arcgis.com/web-map-specification/objects/presentation/}
 * {@link https://developers.arcgis.com/web-scene-specification/objects/presentation/}.
 */
export interface PresentationJson {
    /**
     * Indicates whether to display the time slider (if accessible). [WebMap
     * only].
     */
    displayTimeSlider?: boolean | null;
    /**
     * Indicates whether to display a legend on all slides. [WebMap only].
     */
    showLegend?: boolean | null;
    /**
     * Number of seconds to show slide before proceeding to the next slide.
     * [WebMap only].
     */
    slideAdvancementInterval?: number | null;
    /**
     * An array of slides that bookmark viewpoints, visible layers, and other
     * settings previously defined in a WebScene.
     */
    slides?: SlideJson[] | null;
    /**
     * Indicates whether to use the time extent (if applicable) of a slide.
     * [WebMap only].
     */
    useTimeExtentOfSlide?: boolean | null;
}
/**
 * A slide stores a snapshot of several pre-set properties of the WebScene, such
 * as the basemap, viewpoint and visible layers.
 *
 * See {@link https://developers.arcgis.com/web-map-specification/objects/slide/}
 * {@link https://developers.arcgis.com/web-scene-specification/objects/slide/}.
 */
export interface SlideJson {
    /**
     * The basemap of the scene. Only the base and reference layers of the
     * basemap are stored in a slide. This value can be an instance of Basemap
     * or one of the strings listed in the table below. Same as baseMap, but
     * with no elevationLayers property.
     */
    baseMap?: BasemapJson | string | null;
    /**
     * Text description of the individual presentation slide.
     */
    description?: {
        /**
         * Text to display as slide description.
         */
        text: string;
    } | null;
    /**
     * Represents settings that affect the environment in which the WebScene is
     * displayed (such as lighting).
     */
    environment?: EnvironmentJson | null;
    /**
     * The standard Esri extent object with spatialReference, xmax, xmin, ymax
     * and ymin. [WebMap Only].
     */
    extent?: ExtentJson | null;
    /**
     * Indicates whether the slide should be hidden within the presentation.
     * [WebMap Only].
     */
    hidden?: boolean | null;
    /**
     * The unique id of a slide within the slides property of a Presentation.
     */
    id?: string | null;
    /**
     * An object with a centerPoint object and sometimes a resolution. [WebMap
     * Only]
     * {@link https://developers.arcgis.com/web-map-specification/objects/mapLocation/}.
     */
    mapLocation?: {
        /**
         * The center of the map in with a x and y coordinate.
         */
        centerPoint?: PointJson | null;
        /**
         * Well-known ID (WKID) or well-known text (WKT).
         */
        spatialReference?: SpatialReferenceJson | null;
    } | null;
    /**
     * A data URI encoded thumbnail. See
     * {@link https://developers.arcgis.com/web-scene-specification/objects/thumbnail/}.
     */
    thumbnail?: {
        /**
         * The URI pointing to the thumbnail image representing the slide.
         */
        url: string;
    } | null;
    /**
     * An array of two numbers. The first one indicates start time and the
     * second one indicates end time. [WebMap Only].
     */
    timeExtent?: number[] | null;
    /**
     * Text and formatting for the title of the individual presentation slide
     * https://developers.arcgis.com/web-map-specification/objects/title/
     * {@link https://developers.arcgis.com/web-scene-specification/objects/title/}.
     */
    title?: {
        /**
         * The color of the title text box, for example [0,0,0,255].
         */
        backgroundColor?: ColorJson | null;
        /**
         * The color of the border surrounding the title text box, for example
         * [0,0,0,255].
         */
        borderColor?: ColorJson | null;
        /**
         * The sizing of the border.
         */
        borderSize?: number | null;
        /**
         * The font style picked for the title.
         */
        font?: string | null;
        /**
         * The size of the font for the text in the title.
         */
        fontSize?: number | null;
        /**
         * Color of the text.
         */
        foregroundColor?: ColorJson | null;
        /**
         * Alignment of the text box.
         */
        horizontalAlignment?: number | null;
        /**
         * The opacity of background and border.
         */
        opacity?: number | null;
        /**
         * Text to display as titles for slide.
         */
        text?: string | null;
        /**
         * A number between 1 and 7.
         */
        titleFontStyle?: number | null;
    } | null;
    /**
     * The viewpoint of the slide. This acts like a bookmark, saving a
     * predefined location or point of view from which to view the scene.
     */
    viewpoint?: ViewpointJson | null;
    /**
     * An array of numbers indicating layer visibility. Stores references (by
     * ID) to the layers that are set as visible when a slide is applied to a
     * MapView or SceneView. See
     * {@link https://developers.arcgis.com/web-map-specification/objects/visibleLayer/}
     * {@link https://developers.arcgis.com/web-scene-specification/objects/visibleLayer/}.
     */
    visibleLayers?: {
        /**
         * An array of arrays.
         */
        featureVisibility?: number[][] | null;
        /**
         * The id of the layer as listed on the operational layer.
         */
        id?: string | null;
        /**
         * An integer specifying the sublayer id.
         */
        subLayerIds?: number[] | null;
    }[] | null;
    /**
     * A presentation slide's visiblePopup which contains anchorPoint,
     * featureId, layerId, and subLayerId. See
     * {@link https://developers.arcgis.com/web-map-specification/objects/visiblePopup/}.
     */
    visiblePopup?: {
        /**
         * Object with spatialReference, x, and y.
         */
        anchorPoint?: PointJson | null;
        /**
         * An integer specifying the feature's id.
         */
        featureId?: number | null;
        /**
         * A string specifying the layer id.
         */
        layerId?: string | null;
        /**
         * An integer specifying the sublayer id.
         */
        subLayerIds?: number[] | null;
    } | null;
}
