import type Accessor from "../../core/Accessor.js";
import type { MapViewOrSceneView } from "../../views/MapViewOrSceneView.js";
import type { GoTo, GoToProperties } from "../support/GoTo.js";

export interface FloorFilterViewModelProperties extends GoToProperties, Partial<Pick<FloorFilterViewModel, "facility" | "level" | "longNames" | "site" | "view">> {}

/**
 * Provides the logic for the [FloorFilter](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-FloorFilter.html) widget and [component](https://developers.arcgis.com/javascript/latest/references/map-components/arcgis-floor-filter/).
 *
 * @since 4.19
 * @see [FloorFilter](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-FloorFilter.html) widget
 * @see [Floor Filter component](https://developers.arcgis.com/javascript/latest/references/map-components/arcgis-floor-filter/)
 * @see [Programming patterns: Widget viewModel pattern](https://developers.arcgis.com/javascript/latest/programming-patterns/#widget-viewmodel-pattern)
 */
export default class FloorFilterViewModel extends FloorFilterViewModelSuperclass {
  constructor(properties?: FloorFilterViewModelProperties);
  /** The currently selected facility. */
  accessor facility: string | null | undefined;
  /** The currently selected level. */
  accessor level: string | null | undefined;
  /**
   * Determines if the widget is expanded or collapsed.
   * If the value is `true`, the widget is expanded and the long names appear.
   * Otherwise, short names are used and icons appear alone on buttons.
   *
   * @default false
   */
  accessor longNames: boolean;
  /** The currently selected site. */
  accessor site: string | null | undefined;
  /**
   * A reference to the [MapView](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-MapView.html) or [SceneView](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-SceneView.html).
   * If this property is set, the FloorFilter widget will update the view's [MapView.floors](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-MapView.html#floors)
   * property whenever the floor filter is manipulated or updated programmatically. This property will affect
   * any floor-aware layer in the view.
   */
  accessor view: MapViewOrSceneView | null | undefined;
}
declare const FloorFilterViewModelSuperclass: typeof Accessor & typeof GoTo