import type FloorFilter from "./widgets/FloorFilter.js";
import type TimeSlider from "./widgets/TimeSlider.js";
import type { JSONSupport } from "../core/JSONSupport.js";
import type { TimeSliderProperties } from "./widgets/TimeSlider.js";
import type { FloorFilterProperties } from "./widgets/FloorFilter.js";

/** @since 5.0 */
export interface WidgetsProperties {
  /**
   * Floor filtering is controlled by a configurable [floor filter](https://developers.arcgis.com/javascript/latest/references/core/widgets/FloorFilter/). Those configurations are saved to the web map as a [FloorFilter](https://developers.arcgis.com/javascript/latest/references/core/webdoc/widgets/FloorFilter/) widget.
   *
   * @since 5.0
   */
  floorFilter?: FloorFilterProperties | null;
  /**
   * Time animation is controlled by a configurable [time slider](https://developers.arcgis.com/javascript/latest/references/core/widgets/TimeSlider/). Those configurations are saved to the web map/web scene as a [TimeSlider](https://developers.arcgis.com/javascript/latest/references/core/webdoc/widgets/TimeSlider/) widget.
   *
   * @since 5.0
   */
  timeSlider?: TimeSliderProperties | null;
}

/**
 * The widgets object contains widgets that are exposed to the user.
 *
 * @since 5.0
 */
export default class Widgets extends JSONSupport {
  constructor(properties?: WidgetsProperties);
  /**
   * Floor filtering is controlled by a configurable [floor filter](https://developers.arcgis.com/javascript/latest/references/core/widgets/FloorFilter/). Those configurations are saved to the web map as a [FloorFilter](https://developers.arcgis.com/javascript/latest/references/core/webdoc/widgets/FloorFilter/) widget.
   *
   * @since 5.0
   */
  get floorFilter(): FloorFilter | null | undefined;
  set floorFilter(value: FloorFilterProperties | null | undefined);
  /**
   * Time animation is controlled by a configurable [time slider](https://developers.arcgis.com/javascript/latest/references/core/widgets/TimeSlider/). Those configurations are saved to the web map/web scene as a [TimeSlider](https://developers.arcgis.com/javascript/latest/references/core/webdoc/widgets/TimeSlider/) widget.
   *
   * @since 5.0
   */
  get timeSlider(): TimeSlider | null | undefined;
  set timeSlider(value: TimeSliderProperties | null | undefined);
}