import type Collection from "../core/Collection.js";
import type Slide from "./Slide.js";
import type { ClonableMixin, ClonableMixinProperties } from "../core/Clonable.js";
import type { JSONSupport, JSONSupportMixinProperties } from "../core/JSONSupport.js";
import type { SlideProperties } from "./Slide.js";
import type { ReadonlyArrayOrCollection } from "../core/Collection.js";

export interface PresentationProperties extends JSONSupportMixinProperties, ClonableMixinProperties {
  /**
   * A collection of [slides](https://developers.arcgis.com/javascript/latest/api-reference/esri-webscene-Slide.html) that bookmark
   * [viewpoints](https://developers.arcgis.com/javascript/latest/api-reference/esri-Viewpoint.html), visible layers, and other settings
   * previously defined in a [WebScene](https://developers.arcgis.com/javascript/latest/api-reference/esri-WebScene.html).
   *
   * @see [Slide](https://developers.arcgis.com/javascript/latest/api-reference/esri-webscene-Slide.html)
   * @see [Sample - WebScene slides](https://developers.arcgis.com/javascript/latest/sample-code/webscene-slides/)
   */
  slides?: ReadonlyArrayOrCollection<SlideProperties>;
}

/**
 * A presentation contains a [Collection](https://developers.arcgis.com/javascript/latest/api-reference/esri-core-Collection.html) of
 * [slides](https://developers.arcgis.com/javascript/latest/api-reference/esri-webscene-Slide.html) that allows users to quickly
 * navigate to predefined settings of a [SceneView](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-SceneView.html).
 *
 * @since 4.0
 * @see [Slide](https://developers.arcgis.com/javascript/latest/api-reference/esri-webscene-Slide.html)
 * @see [Sample - WebScene slides](https://developers.arcgis.com/javascript/latest/sample-code/webscene-slides/)
 */
export default class Presentation extends PresentationSuperclass {
  constructor(properties?: PresentationProperties);
  /**
   * A collection of [slides](https://developers.arcgis.com/javascript/latest/api-reference/esri-webscene-Slide.html) that bookmark
   * [viewpoints](https://developers.arcgis.com/javascript/latest/api-reference/esri-Viewpoint.html), visible layers, and other settings
   * previously defined in a [WebScene](https://developers.arcgis.com/javascript/latest/api-reference/esri-WebScene.html).
   *
   * @see [Slide](https://developers.arcgis.com/javascript/latest/api-reference/esri-webscene-Slide.html)
   * @see [Sample - WebScene slides](https://developers.arcgis.com/javascript/latest/sample-code/webscene-slides/)
   */
  get slides(): Collection<Slide>;
  set slides(value: ReadonlyArrayOrCollection<SlideProperties>);
}
declare const PresentationSuperclass: typeof JSONSupport & typeof ClonableMixin