import type Collection from "../../core/Collection.js";
import type SlideLegendInfo from "../SlideLegendInfo.js";
import type SlidePopupInfo from "./SlidePopupInfo.js";
import type { ClonableMixin } from "../../core/Clonable.js";
import type { JSONSupport } from "../../core/JSONSupport.js";
import type { WebSceneSliceAnalysis } from "../types.js";
import type { ReadonlyArrayOrCollection } from "../../core/Collection.js";
import type { SlideLegendInfoProperties } from "../SlideLegendInfo.js";
import type { SlidePopupInfoProperties } from "./SlidePopupInfo.js";

export interface SlideElementsProperties {
  /**
   * List of analyses in the slide. Only [SliceAnalysis](https://developers.arcgis.com/javascript/latest/references/core/analysis/SliceAnalysis/) are currently
   * supported in slides.
   *
   * @since 4.33
   */
  analyses?: ReadonlyArrayOrCollection<WebSceneSliceAnalysis>;
  /**
   * The component properties for the legend component defined for the slide.
   *
   * @since 4.32
   */
  legendInfo?: SlideLegendInfoProperties | null;
  /**
   * The component properties for the popup component defined for the slide.
   *
   * @since 4.33
   */
  popupInfo?: SlidePopupInfoProperties | null;
}

/**
 * The slide elements is part of the [webscene/Slide](https://developers.arcgis.com/javascript/latest/references/core/webscene/Slide/) and contains information relating to
 * how components are shown in a slide.
 *
 * @since 4.32
 */
export default class SlideElements extends SlideElementsSuperclass {
  constructor(properties?: SlideElementsProperties);
  /**
   * List of analyses in the slide. Only [SliceAnalysis](https://developers.arcgis.com/javascript/latest/references/core/analysis/SliceAnalysis/) are currently
   * supported in slides.
   *
   * @since 4.33
   */
  get analyses(): Collection<WebSceneSliceAnalysis>;
  set analyses(value: ReadonlyArrayOrCollection<WebSceneSliceAnalysis>);
  /**
   * The component properties for the legend component defined for the slide.
   *
   * @since 4.32
   */
  get legendInfo(): SlideLegendInfo | null | undefined;
  set legendInfo(value: SlideLegendInfoProperties | null | undefined);
  /**
   * The component properties for the popup component defined for the slide.
   *
   * @since 4.33
   */
  get popupInfo(): SlidePopupInfo | null | undefined;
  set popupInfo(value: SlidePopupInfoProperties | null | undefined);
}
declare const SlideElementsSuperclass: typeof JSONSupport & typeof ClonableMixin