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

/** @since 5.0 */
export interface FloorFilterProperties extends Partial<Pick<FloorFilter, "enabled" | "facility" | "level" | "longNames" | "minimized" | "pinnedLevels" | "site">> {}

/**
 * Floor filtering is controlled by a configurable [floor filter](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-FloorFilter.html). Those configurations are
 * saved to the web map as a Floor Filter widget.
 *
 * @since 5.0
 */
export default class FloorFilter extends JSONSupport {
  constructor(properties?: FloorFilterProperties);
  /**
   * Indicates whether the FloorFilter is active and filtering the displayed content according to the [FloorFilter](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-FloorFilter.html) selection.
   *
   * @default false
   * @since 5.0
   */
  accessor enabled: boolean;
  /**
   * Contains the facility ID for the initially selected [FloorFilter.facility](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-FloorFilter.html#facility) in the floor filter.
   *
   * @since 5.0
   */
  accessor facility: string | null | undefined;
  /**
   * Contains the level ID for the initially selected [floor](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-FloorFilter.html#level), which is used when filtering layers by their configured floor-aware properties.
   *
   * @since 5.0
   */
  accessor level: string | null | undefined;
  /**
   * Indicates whether the levels list is showing the long names from [FloorFilter](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-FloorFilter.html).
   *
   * @default false
   * @since 5.0
   */
  accessor longNames: boolean;
  /**
   * Indicates whether the floor filter has been minimized to show only the levels list.
   *
   * @default false
   * @since 5.0
   */
  accessor minimized: boolean;
  /**
   * Indicates whether the levels portion of the floor filter has been pinned to show the levels list.
   *
   * @default false
   * @since 5.0
   */
  accessor pinnedLevels: boolean;
  /**
   * Contains the site ID for the initially selected [FloorFilter.site](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-FloorFilter.html#site) in the floor filter.
   *
   * @since 5.0
   */
  accessor site: string | null | undefined;
}