import type BaseImageMeasureResult from "./BaseImageMeasureResult.js";
import type ImageMeasureResultAreaValue from "./ImageMeasureResultAreaValue.js";
import type ImageMeasureResultLengthValue from "./ImageMeasureResultLengthValue.js";
import type { ImageMeasureResultAreaValueProperties } from "./ImageMeasureResultAreaValue.js";
import type { ImageMeasureResultLengthValueProperties } from "./ImageMeasureResultLengthValue.js";
import type { BaseImageMeasureResultProperties } from "./BaseImageMeasureResult.js";

export interface ImageAreaResultProperties extends BaseImageMeasureResultProperties {
  /** An object containing results of the area measurement. */
  area?: ImageMeasureResultAreaValueProperties;
  /** An object containing results of the perimeter measurement. */
  perimeter?: ImageMeasureResultLengthValueProperties;
}

/**
 * Image service area and perimeter measurement result returned when the [ImageryLayer.measureAreaAndPerimeter()](https://developers.arcgis.com/javascript/latest/references/core/layers/ImageryLayer/#measureAreaAndPerimeter)
 * or [measureAreaAndPerimeter()](https://developers.arcgis.com/javascript/latest/references/core/rest/imageService/#measureAreaAndPerimeter) methods resolve successfully.
 *
 * @since 4.26
 * @see [ImageryLayer.measureAreaAndPerimeter()](https://developers.arcgis.com/javascript/latest/references/core/layers/ImageryLayer/#measureAreaAndPerimeter)
 * @see [measureAreaAndPerimeter()](https://developers.arcgis.com/javascript/latest/references/core/rest/imageService/#measureAreaAndPerimeter)
 * @see [ImageAreaParameters](https://developers.arcgis.com/javascript/latest/references/core/rest/support/ImageAreaParameters/)
 */
export default class ImageAreaResult extends BaseImageMeasureResult {
  constructor(properties?: ImageAreaResultProperties);
  /** An object containing results of the area measurement. */
  get area(): ImageMeasureResultAreaValue;
  set area(value: ImageMeasureResultAreaValueProperties);
  /** An object containing results of the perimeter measurement. */
  get perimeter(): ImageMeasureResultLengthValue;
  set perimeter(value: ImageMeasureResultLengthValueProperties);
}