import type OrientedImageryLayer from "../../layers/OrientedImageryLayer.js";
import type { EventedMixin } from "../../core/Evented.js";
import type { EsriPromise } from "../../core/Promise.js";

export interface OrientedImageryViewerViewModelProperties extends Partial<Pick<OrientedImageryViewerViewModel, "brightness" | "contrast" | "currentCoverageVisible" | "disabled" | "isAdditionalCoverageVisible" | "isAdditionalPointSourcesVisible" | "layer" | "mapImageConversionToolState" | "preloadMedia" | "sharpness">> {}

/**
 * Provides the logic for the [OrientedImageryViewer](https://developers.arcgis.com/javascript/latest/references/core/widgets/OrientedImageryViewer/) widget and [component](https://developers.arcgis.com/javascript/latest/references/map-components/components/arcgis-oriented-imagery-viewer/).
 *
 * @beta
 * @since 4.28
 * @see [OrientedImageryViewer](https://developers.arcgis.com/javascript/latest/references/core/widgets/OrientedImageryViewer/) widget
 * @see [Oriented Imagery Viewer component](https://developers.arcgis.com/javascript/latest/references/map-components/components/arcgis-oriented-imagery-viewer/)
 * @see [Programming patterns: Widget viewModel pattern](https://developers.arcgis.com/javascript/latest/programming-patterns/#widget-viewmodel-pattern)
 */
export default class OrientedImageryViewerViewModel extends OrientedImageryViewerViewModelSuperclass {
  constructor(properties?: OrientedImageryViewerViewModelProperties);
  /**
   * Changes the image brightness loaded in the viewer. Brightness is adjusted in the oriented imagery viewer using interactive sliders.
   * Settings will be preserved for subsequent images loaded in the oriented imagery viewer. The value must be between -10 and 10.
   *
   * @default 0
   */
  accessor brightness: number;
  /**
   * Changes the image contrast loaded in the viewer. Contrast is adjusted in the oriented imagery viewer using interactive sliders.
   * Settings will be preserved for subsequent images loaded in the oriented imagery viewer. The value must be between -10 and 10.
   *
   * @default 0
   */
  accessor contrast: number;
  /**
   * Toggles the visibility of the current footprint polygon associated with the selected image loaded in the viewer.
   * Current footprint coverage allows you to better understand how the images in the oriented imagery layer relate to the map.
   * The footprint of the image is symbolized with red fill on the map. If you zoom or pan in the oriented imagery viewer,
   * the footprint coverage graphic will update on the map to highlight the area on the map that is visible in the image.
   *
   * @default true
   */
  accessor currentCoverageVisible: boolean;
  /**
   * When `false`, the view click interaction enabled for the oriented imagery viewer widget. This allows users to pick a location on the map and display the best image will the viewer.
   * When `true` the view click interaction will be defaulted to map navigation.
   *
   * @default false
   */
  accessor disabled: boolean;
  /**
   * When `true`, the image gallery functionality is available in the widget.
   * Image gallery currently only supports MRF and Tif image formats.
   *
   * @default true
   */
  get imageGalleryEnabled(): boolean;
  /**
   * Indicates if the image has been loaded onto the oriented imagery viewer.
   *
   * @default false
   */
  get imageLoaded(): boolean;
  /**
   * Indicates if the additional footprint polygons are visible for the selected image loaded in the viewer.
   * The footprint graphics (appearing in blue) show the coverage footprints of all the additional images in the
   * layer that depict the location selected by the user.
   *
   * @default false
   */
  accessor isAdditionalCoverageVisible: boolean;
  /**
   * Indicates if the additional camera locations are visible for the selected image loaded in the viewer.
   * The point location graphics (appearing in blue) shows the camera locations for additional images that depict the location selected by the user.
   *
   * @default false
   */
  accessor isAdditionalPointSourcesVisible: boolean;
  /**
   * [OrientedImageryLayer](https://developers.arcgis.com/javascript/latest/references/core/layers/OrientedImageryLayer/) associated with the widget.
   * The layer contains feature data and oriented imagery properties required by the viewer to load the image and generate the associated graphics.
   */
  accessor layer: OrientedImageryLayer | null | undefined;
  /**
   * Indicates if the map-image location tool available in the widget.
   * When activated, the user can select a point on the map and corresponding a location in pixel space will be displayed in the image, and vice versa.
   *
   * @default false
   */
  accessor mapImageConversionToolState: boolean;
  /**
   * When true, loading an image via directional or sequential navigation caches all neighboring images associated with that image.
   * Navigating to adjacent images then uses the cached assets, reducing load times and improving viewer performance.
   *
   * @default false
   * @since 5.0
   */
  accessor preloadMedia: boolean;
  /**
   * Changes the image sharpness loaded in the viewer. Sharpness is adjusted in the oriented imagery viewer using interactive sliders.
   * Settings will be preserved for subsequent images loaded in the oriented imagery viewer."
   * The value must be between 0 and 1.
   *
   * @default 0
   */
  accessor sharpness: number;
}
declare const OrientedImageryViewerViewModelSuperclass: typeof EsriPromise & typeof EventedMixin