import type { JSONSupport } from "../../core/JSONSupport.js";

export interface LayerFloorInfoProperties extends Partial<Pick<LayerFloorInfo, "floorField">> {}

/**
 * LayerFloorInfo contains properties that allow a layer to be floor-aware. These properties are used to filter the levels, or floors, of a facility that are displayed.
 * The [FloorFilter](https://developers.arcgis.com/javascript/latest/references/core/widgets/FloorFilter/) widget currently supports [FeatureLayers](https://developers.arcgis.com/javascript/latest/references/core/layers/FeatureLayer/), [SceneLayers](https://developers.arcgis.com/javascript/latest/references/core/layers/SceneLayer/) and [MapImageLayers](https://developers.arcgis.com/javascript/latest/references/core/layers/MapImageLayer/) (map services).
 *
 * @since 4.19
 * @see [FloorFilter](https://developers.arcgis.com/javascript/latest/references/core/widgets/FloorFilter/)
 * @see [FeatureLayer.floorInfo](https://developers.arcgis.com/javascript/latest/references/core/layers/FeatureLayer/#floorInfo)
 * @see [SceneLayer.floorInfo](https://developers.arcgis.com/javascript/latest/references/core/layers/SceneLayer/#floorInfo)
 */
export default class LayerFloorInfo extends JSONSupport {
  constructor(properties?: LayerFloorInfoProperties);
  /** The field name derived from a floor-aware layer and used to filter features by floor level. */
  accessor floorField: string;
  /**
   * Creates a deep clone of LayerFloorInfo object.
   *
   * @returns A new instance of a LayerFloorInfo object equal to the object used to call `.clone()`.
   */
  clone(): LayerFloorInfo;
}