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

export interface ImageBoundaryParametersProperties extends JSONSupportMixinProperties, ClonableMixinProperties {
  /** 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/api-reference/esri-layers-ImageryLayer.html#queryBoundary)
 * or [queryBoundary()](https://developers.arcgis.com/javascript/latest/api-reference/esri-rest-imageService.html#queryBoundary) methods.
 *
 * @since 4.29
 * @see [ImageryLayer#queryBoundary()](https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-ImageryLayer.html#queryBoundary)
 * @see [queryBoundary()](https://developers.arcgis.com/javascript/latest/api-reference/esri-rest-imageService.html#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