import type Point from "../../geometry/Point.js";
import type { ClonableMixin } from "../../core/Clonable.js";
import type { JSONSupport } from "../../core/JSONSupport.js";
import type { ObjectId } from "../../views/types.js";
import type { PointProperties } from "../../geometry/Point.js";

export interface FindImagesParametersProperties extends Partial<Pick<FindImagesParameters, "maxCount" | "objectIds" | "where">> {
  /**
   * A [Point](https://developers.arcgis.com/javascript/latest/references/core/geometry/Point/) geometry with `z` value.
   * For example, it can be 3D SceneView's [camera position](https://developers.arcgis.com/javascript/latest/references/core/Camera/#position).
   */
  fromGeometry?: PointProperties;
  /**
   * A [Point](https://developers.arcgis.com/javascript/latest/references/core/geometry/Point/) geometry with `z` value that defines the target geometry's location.
   * This can be a clicked location on the map.
   */
  toGeometry?: PointProperties;
}

/**
 * Input parameter for the [ImageryLayer.findImages()](https://developers.arcgis.com/javascript/latest/references/core/layers/ImageryLayer/#findImages)
 * or [findImages()](https://developers.arcgis.com/javascript/latest/references/core/rest/imageService/#findImages) methods.
 * The find images operation locates all images that contain [toGeometry](https://developers.arcgis.com/javascript/latest/references/core/rest/support/FindImagesParameters/#toGeometry) and sort them accordingly.
 *
 * @since 4.29
 * @see [ImageryLayer.findImages()](https://developers.arcgis.com/javascript/latest/references/core/layers/ImageryLayer/#findImages)
 * @see [findImages()](https://developers.arcgis.com/javascript/latest/references/core/rest/imageService/#findImages)
 */
export default class FindImagesParameters extends FindImagesParametersSuperclass {
  constructor(properties?: FindImagesParametersProperties);
  /**
   * A [Point](https://developers.arcgis.com/javascript/latest/references/core/geometry/Point/) geometry with `z` value.
   * For example, it can be 3D SceneView's [camera position](https://developers.arcgis.com/javascript/latest/references/core/Camera/#position).
   */
  get fromGeometry(): Point;
  set fromGeometry(value: PointProperties);
  /** The maximum image count. */
  accessor maxCount: number | null | undefined;
  /** An array of ObjectIDs to filter images. */
  accessor objectIds: ObjectId[] | null | undefined;
  /**
   * A [Point](https://developers.arcgis.com/javascript/latest/references/core/geometry/Point/) geometry with `z` value that defines the target geometry's location.
   * This can be a clicked location on the map.
   */
  get toGeometry(): Point;
  set toGeometry(value: PointProperties);
  /** A where clause for the query. Any legal SQL where clause operating on the fields in the layer is allowed. */
  accessor where: string | null | undefined;
}
declare const FindImagesParametersSuperclass: typeof JSONSupport & typeof ClonableMixin