import type { Clonable, ClonableMixinProperties } from "../../core/Clonable.js";
import type { SystemOrLengthUnit } from "../../core/units.js";

export interface ElevationProfileDisplayUnitsProperties extends ClonableMixinProperties, Partial<Pick<ElevationProfileDisplayUnits, "distance" | "elevation">> {}

/**
 * Unit systems (imperial, metric) or specific units used for computing and displaying elevation profile results.
 *
 * If not specified, units are chosen automatically based on the magnitude of the results. The effective units can be accessed
 * through the [ElevationProfileAnalysisView2D#results](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-2d-analysis-ElevationProfileAnalysisView2D.html#results)
 * or [ElevationProfileAnalysisView3D#results](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-3d-analysis-ElevationProfileAnalysisView3D.html#results) properties.
 *
 * @since 4.34
 * @see [ElevationProfileAnalysis](https://developers.arcgis.com/javascript/latest/api-reference/esri-analysis-ElevationProfileAnalysis.html)
 */
export default abstract class ElevationProfileDisplayUnits extends Clonable {
  /** Unit system (imperial, metric) or specific unit used for computing and displaying distances along the profile line. */
  accessor distance: SystemOrLengthUnit | null | undefined;
  /** Unit system (imperial, metric) or specific unit used for computing and displaying elevation values. */
  accessor elevation: SystemOrLengthUnit | null | undefined;
}