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

export interface UnsupportedLayerProperties extends LayerProperties, PortalLayerProperties {
  /**
   * Enable persistence of the layer in a [WebMap](https://developers.arcgis.com/javascript/latest/references/core/WebMap/) or [WebScene](https://developers.arcgis.com/javascript/latest/references/core/WebScene/).
   *
   * @default true
   * @since 4.28
   */
  persistenceEnabled?: boolean;
}

/**
 * Represents an unsupported layer instance. For example when loading
 * a [WebMap](https://developers.arcgis.com/javascript/latest/references/core/WebMap/) or a [WebScene](https://developers.arcgis.com/javascript/latest/references/core/WebScene/), 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/references/core/WebScene/)
 * @see [WebMap](https://developers.arcgis.com/javascript/latest/references/core/WebMap/)
 */
export default class UnsupportedLayer extends UnsupportedLayerSuperclass {
  constructor(properties?: UnsupportedLayerProperties);
  /**
   * Enable persistence of the layer in a [WebMap](https://developers.arcgis.com/javascript/latest/references/core/WebMap/) or [WebScene](https://developers.arcgis.com/javascript/latest/references/core/WebScene/).
   *
   * @default true
   * @since 4.28
   */
  accessor 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 MultiOriginJSONSupportMixin & typeof PortalLayer