import type { BasemapLayerJsonBase } from "./BasemapLayerJson";
import type { LayerDefinitionJson } from "./LayerDefinitionJson";
import type { OperationalLayerJsonBase } from "./OperationalLayerJson";
import type { PopupInfoJson } from "./PopupInfoJson";
/**
 * The SceneLayer is a layer type designed for on-demand streaming and
 * displaying large amounts of data in a SceneView. SceneLayers support two
 * geometry types: Point and 3D Objects (e.g. Buildings).
 *
 * See
 * {@link https://developers.arcgis.com/web-scene-specification/objects/sceneLayer/}.
 *
 * Note: `isReference` is not part of the web scene layer spec, but we include
 * BasemapLayerJsonBase to align with the existing basemap-layer typing pattern
 * used across layer JSON types.
 */
export interface SceneLayerJson extends OperationalLayerJsonBase, BasemapLayerJsonBase {
    /**
     * A sequence of custom parameters appended to the URL of all requests
     * related to supporting ArcGIS layer types.
     */
    customParameters?: Record<string, unknown> | null;
    /**
     * Indicates whether to allow a client to ignore popups defined by the
     * service item.
     */
    disablePopup?: boolean | null;
    /**
     * Optional string containing the item ID of the service if it's registered
     * on ArcGIS Online or your organization's portal.
     */
    itemId?: string | null;
    /**
     * A layerDefinition object defining the attribute schema and drawing
     * information for the layer.
     */
    layerDefinition?: LayerDefinitionJson | null;
    /**
     * The type of layer.
     */
    layerType: "ArcGISSceneServiceLayer";
    /**
     * A PopupInfo object defining the content of pop-up windows when you click
     * or query a feature.
     */
    popupInfo?: PopupInfoJson | null;
    /**
     * Apply perspective scaling to screen-size symbols.
     */
    screenSizePerspective?: boolean | null;
    /**
     * Indicates whether to display labels for this layer. If true, labels will
     * appear as defined in the labelingInfo property.
     */
    showLabels?: boolean | null;
    /**
     * The URL to the layer.If the layer is not from a web service but rather a
     * feature collection, then the url property is omitted.
     */
    url?: string | null;
}
