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 UnknownLayerProperties extends LayerProperties, PortalLayerProperties {}

/**
 * Represents a layer whose type could not be determined. For example,
 * when [loading a layer from a URL](https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-Layer.html#fromPortalItem)
 * and the layer type cannot be determined, then it is represented as an
 * instance of this class.
 *
 * An instance of this class may also be used 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). If the service
 * of one of the layers in the WebMap/WebScene is not available and the layer
 * type cannot be determined, then it is represented as an UnknownLayer. 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 UnknownLayer extends UnknownLayerSuperclass {
  constructor(properties?: UnknownLayerProperties);
  /** The layer type provides a convenient way to check the type of the layer without the need to import specific layer modules. */
  get type(): "unknown";
}
declare const UnknownLayerSuperclass: typeof Layer & typeof MultiOriginJSONSupportMixin & typeof PortalLayer