import type Color from "../../Color.js";
import type ElevationProfileLine from "./ElevationProfileLine.js";
import type { ElevationProfileLineProperties } from "./ElevationProfileLine.js";
import type { ColorLike } from "../../Color.js";

export interface ElevationProfileLineGroundProperties extends ElevationProfileLineProperties {
  /**
   * Color of the line on the chart and in the view.
   *
   * @default "#ff7f00"
   */
  color?: ColorLike;
}

/**
 * Represents a profile line that samples elevation from the [Ground](https://developers.arcgis.com/javascript/latest/api-reference/esri-Ground.html) of the [Map](https://developers.arcgis.com/javascript/latest/api-reference/esri-Map.html)
 * currently set in the [View](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-View.html).
 *
 * The elevation profile is automatically recomputed whenever layers are added to or removed from the
 * [Ground](https://developers.arcgis.com/javascript/latest/api-reference/esri-Ground.html), or when their visibility changes.
 *
 * @since 4.34
 * @see [ElevationProfileAnalysis](https://developers.arcgis.com/javascript/latest/api-reference/esri-analysis-ElevationProfileAnalysis.html)
 * @example
 * // Create an elevation profile analysis with a ground profile line
 * const analysis = new ElevationProfileAnalysis({
 *   profiles: [{
 *     type: "ground",
 *     title: "World elevation" // Optional custom label
 *   }]
 * });
 */
export default class ElevationProfileLineGround extends ElevationProfileLine {
  constructor(properties?: ElevationProfileLineGroundProperties);
  /**
   * Color of the line on the chart and in the view.
   *
   * @default "#ff7f00"
   */
  get color(): Color;
  set color(value: ColorLike);
  /** The line type. */
  readonly type: "ground";
}