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 ElevationProfileLineInputProperties extends ElevationProfileLineProperties {
  /**
   * Color of the line on the chart and in the view.
   *
   * @default "#00c8c8"
   */
  color?: ColorLike;
}

/**
 * Represents a profile line that samples the [ElevationProfileAnalysis.geometry](https://developers.arcgis.com/javascript/latest/references/core/analysis/ElevationProfileAnalysis/#geometry)
 * of the analysis directly. This is typically used for lines that have z values.
 *
 * If the [elevation info](https://developers.arcgis.com/javascript/latest/references/core/analysis/ElevationProfileAnalysis/#elevationInfo) is configured to be
 * "on-the-ground", the elevation is sampled from the [Ground](https://developers.arcgis.com/javascript/latest/references/core/Ground/), provided the scene has ground layers.
 *
 * > [!WARNING]
 * >
 * > **Note:**
 * > In 2D, this profile line can only be used when the analysis [ElevationProfileAnalysis.geometry](https://developers.arcgis.com/javascript/latest/references/core/analysis/ElevationProfileAnalysis/#geometry)
 * > has z values, `hasZ===true`, and no [elevation info](https://developers.arcgis.com/javascript/latest/references/core/analysis/ElevationProfileAnalysis/#elevationInfo) is set.
 *
 * @since 4.34
 * @see [ElevationProfileAnalysis](https://developers.arcgis.com/javascript/latest/references/core/analysis/ElevationProfileAnalysis/)
 * @example
 * const analysis = new ElevationProfileAnalysis({
 *   geometry: new Polyline({ }), // The input line with z values
 *   profiles: [
 *     { type: "input", color: "orange" },
 *   ]
 * });
 */
export default class ElevationProfileLineInput extends ElevationProfileLine {
  constructor(properties?: ElevationProfileLineInputProperties);
  /**
   * Color of the line on the chart and in the view.
   *
   * @default "#00c8c8"
   */
  get color(): Color;
  set color(value: ColorLike);
  /** The line type. */
  readonly type: "input";
}