import type { Clonable } from "../../core/Clonable.js";
import type { JSONSupportMixin } from "../../core/JSONSupport.js";
import type { SystemOrAreaUnit, SystemOrLengthUnit, SystemOrVolumeUnit } from "../../core/units.js";

export interface VolumeMeasurementDisplayUnitsProperties extends Partial<Pick<VolumeMeasurementDisplayUnits, "area" | "elevation" | "length" | "volume">> {}

/**
 * Units used for displaying values in the UI for the [VolumeMeasurementAnalysis](https://developers.arcgis.com/javascript/latest/references/core/analysis/VolumeMeasurementAnalysis/).
 *
 * @beta
 * @since 4.34
 * @see [VolumeMeasurementAnalysis](https://developers.arcgis.com/javascript/latest/references/core/analysis/VolumeMeasurementAnalysis/)
 * @see [VolumeMeasurementAnalysisView3D](https://developers.arcgis.com/javascript/latest/references/core/views/3d/analysis/VolumeMeasurementAnalysisView3D/)
 */
export default class VolumeMeasurementDisplayUnits extends VolumeMeasurementDisplayUnitsSuperclass {
  constructor(properties?: VolumeMeasurementDisplayUnitsProperties);
  /**
   * Unit system (imperial, metric) or specific unit used for displaying area results.
   *
   * @since 5.0
   */
  accessor area: SystemOrAreaUnit | null | undefined;
  /** Unit system (imperial, metric) or specific unit used for displaying the cut and fill target elevation. */
  accessor elevation: SystemOrLengthUnit | null | undefined;
  /**
   * Unit system (imperial, metric) or specific unit used for displaying length results (for example perimeter).
   *
   * @since 5.0
   */
  accessor length: SystemOrLengthUnit | null | undefined;
  /** Unit system (imperial, metric) or specific unit used for displaying volume results. */
  accessor volume: SystemOrVolumeUnit | null | undefined;
}
declare const VolumeMeasurementDisplayUnitsSuperclass: typeof Clonable & typeof JSONSupportMixin