import type SpatialReference from "../../geometry/SpatialReference.js";
import type { ClonableMixin } from "../../core/Clonable.js";
import type { JSONSupport } from "../../core/JSONSupport.js";
import type { SpatialReferenceProperties } from "../../geometry/SpatialReference.js";

export interface ImageBoundaryParametersProperties {
  /** The spatial reference for the output boundary geometry. If not specified, the spatial reference of the image service is used. */
  outSpatialReference?: SpatialReferenceProperties | null;
}

/**
 * Image boundary query parameters for [ImageryLayer.queryBoundary()](https://developers.arcgis.com/javascript/latest/references/core/layers/ImageryLayer/#queryBoundary)
 * or [queryBoundary()](https://developers.arcgis.com/javascript/latest/references/core/rest/imageService/#queryBoundary) methods.
 *
 * @since 4.29
 * @see [ImageryLayer.queryBoundary()](https://developers.arcgis.com/javascript/latest/references/core/layers/ImageryLayer/#queryBoundary)
 * @see [queryBoundary()](https://developers.arcgis.com/javascript/latest/references/core/rest/imageService/#queryBoundary)
 */
export default class ImageBoundaryParameters extends ImageBoundaryParametersSuperclass {
  constructor(properties?: ImageBoundaryParametersProperties);
  /** The spatial reference for the output boundary geometry. If not specified, the spatial reference of the image service is used. */
  get outSpatialReference(): SpatialReference | null | undefined;
  set outSpatialReference(value: SpatialReferenceProperties | null | undefined);
}
declare const ImageBoundaryParametersSuperclass: typeof JSONSupport & typeof ClonableMixin