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

export interface PresentationProperties {
  /**
   * A collection of [slides](https://developers.arcgis.com/javascript/latest/references/core/webscene/Slide/) that bookmark
   * [viewpoints](https://developers.arcgis.com/javascript/latest/references/core/Viewpoint/), visible layers, and other settings
   * previously defined in a [WebScene](https://developers.arcgis.com/javascript/latest/references/core/WebScene/).
   *
   * @see [Slide](https://developers.arcgis.com/javascript/latest/references/core/webscene/Slide/)
   * @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/references/core/core/Collection/) of
 * [slides](https://developers.arcgis.com/javascript/latest/references/core/webscene/Slide/) that allows users to quickly
 * navigate to predefined settings of a [SceneView](https://developers.arcgis.com/javascript/latest/references/core/views/SceneView/).
 *
 * @since 4.0
 * @see [Slide](https://developers.arcgis.com/javascript/latest/references/core/webscene/Slide/)
 * @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/references/core/webscene/Slide/) that bookmark
   * [viewpoints](https://developers.arcgis.com/javascript/latest/references/core/Viewpoint/), visible layers, and other settings
   * previously defined in a [WebScene](https://developers.arcgis.com/javascript/latest/references/core/WebScene/).
   *
   * @see [Slide](https://developers.arcgis.com/javascript/latest/references/core/webscene/Slide/)
   * @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