import type CameraInfo from "./CameraInfo.js";
import type ImageGPSInfo from "./ImageGPSInfo.js";
import type { JSONSupport } from "../../core/JSONSupport.js";
import type { ImageGPSInfoProperties } from "./ImageGPSInfo.js";
import type { CameraInfoProperties } from "./CameraInfo.js";

export interface ImageGPSInfoResultProperties {
  /** An array of camera information for the queried images. */
  cameras?: CameraInfoProperties[];
  /** An array of GPS information for the queried images. */
  images?: ImageGPSInfoProperties[];
}

/**
 * Result for [ImageryLayer.queryGPSInfo()](https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-ImageryLayer.html#queryGPSInfo)
 * or [queryGPSInfo()](https://developers.arcgis.com/javascript/latest/api-reference/esri-rest-imageService.html#queryGPSInfo) methods containing camera and image GPS information.
 *
 * @since 4.29
 * @see [ImageGPSInfoParameters](https://developers.arcgis.com/javascript/latest/api-reference/esri-rest-support-ImageGPSInfoParameters.html)
 * @see [ImageryLayer.queryGPSInfo()](https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-ImageryLayer.html#queryGPSInfo)
 * @see [queryGPSInfo()](https://developers.arcgis.com/javascript/latest/api-reference/esri-rest-imageService.html#queryGPSInfo)
 */
export default class ImageGPSInfoResult extends JSONSupport {
  constructor(properties?: ImageGPSInfoResultProperties);
  /** An array of camera information for the queried images. */
  get cameras(): CameraInfo[];
  set cameras(value: CameraInfoProperties[]);
  /** An array of GPS information for the queried images. */
  get images(): ImageGPSInfo[];
  set images(value: ImageGPSInfoProperties[]);
}