import type Layer from "./Layer.js";
import type { PortalLayer, PortalLayerProperties } from "./mixins/PortalLayer.js";
import type { LayerProperties } from "./Layer.js";

export interface UnsupportedLayerProperties extends LayerProperties, PortalLayerProperties {}

/**
 * Represents an unsupported layer instance. For example when loading
 * a [WebMap](https://developers.arcgis.com/javascript/latest/api-reference/esri-WebMap.html) or a [WebScene](https://developers.arcgis.com/javascript/latest/api-reference/esri-WebScene.html), some
 * of the layer types in the given WebMap/WebScene may not be supported in the
 * current version of the API. Each unsupported layer will be represented by an instance
 * of this class so that they can persist after saving the WebMap/WebScene
 * for future clients. It is important to note that constructing layers from this class is not supported.
 *
 * @since 4.0
 * @see [WebScene](https://developers.arcgis.com/javascript/latest/api-reference/esri-WebScene.html)
 * @see [WebMap](https://developers.arcgis.com/javascript/latest/api-reference/esri-WebMap.html)
 */
export default class UnsupportedLayer extends UnsupportedLayerSuperclass {
  constructor(properties?: UnsupportedLayerProperties);
  /**
   * Enable persistence of the layer in a [WebMap](https://developers.arcgis.com/javascript/latest/api-reference/esri-WebMap.html) or [WebScene](https://developers.arcgis.com/javascript/latest/api-reference/esri-WebScene.html).
   *
   * @default true
   * @since 4.28
   */
  get persistenceEnabled(): boolean;
  /**
   * The layer type provides a convenient way to check the type of the layer
   * without the need to import specific layer modules.
   */
  get type(): "unsupported";
}
declare const UnsupportedLayerSuperclass: typeof Layer & typeof PortalLayer