import type Color from "../../Color.js";
import type Point from "../../geometry/Point.js";
import type { EventedAccessor } from "../../core/Evented.js";
import type { ElevationProfileSample, ElevationProfileStatistics, ElevationProfileLineType } from "./types.js";
import type { ColorLike } from "../../Color.js";

/** @deprecated since version 5.0. Use the [Elevation Profile component](https://developers.arcgis.com/javascript/latest/references/map-components/components/arcgis-elevation-profile/) or [ElevationProfileLine](https://developers.arcgis.com/javascript/latest/references/core/analysis/ElevationProfile/ElevationProfileLine/) from [ElevationProfileAnalysis](https://developers.arcgis.com/javascript/latest/references/core/analysis/ElevationProfileAnalysis/) instead. For information on widget deprecation, read about [Esri's move to web components](https://developers.arcgis.com/javascript/latest/components-transition-plan/). */
export interface ElevationProfileLineProperties extends Partial<Pick<ElevationProfileLine, "id" | "title" | "viewVisualizationEnabled" | "visible">> {
  /**
   * Color of the line on the chart and the hovered points in the view.
   *
   * @default "#000000"
   */
  color?: ColorLike;
}

/**
 * Common interface for all the elevation profile lines.
 *
 * @deprecated since version 5.0. Use the [Elevation Profile component](https://developers.arcgis.com/javascript/latest/references/map-components/components/arcgis-elevation-profile/) or [ElevationProfileLine](https://developers.arcgis.com/javascript/latest/references/core/analysis/ElevationProfile/ElevationProfileLine/) from [ElevationProfileAnalysis](https://developers.arcgis.com/javascript/latest/references/core/analysis/ElevationProfileAnalysis/) instead. For information on widget deprecation, read about [Esri's move to web components](https://developers.arcgis.com/javascript/latest/components-transition-plan/).
 * @since 4.18
 * @see [ElevationProfile](https://developers.arcgis.com/javascript/latest/references/core/widgets/ElevationProfile/) widget - _Deprecated since 5.0. Use the [Elevation Profile component](https://developers.arcgis.com/javascript/latest/references/map-components/components/arcgis-elevation-profile/) instead._
 * @see [ElevationProfileViewModel](https://developers.arcgis.com/javascript/latest/references/core/widgets/ElevationProfile/ElevationProfileViewModel/) - _Deprecated since 5.0. Use [ElevationProfileAnalysis](https://developers.arcgis.com/javascript/latest/references/core/analysis/ElevationProfileAnalysis/) instead._
 * @see [ElevationProfileLineGround](https://developers.arcgis.com/javascript/latest/references/core/widgets/ElevationProfile/ElevationProfileLineGround/) - _Deprecated since 5.0. Use [ElevationProfileLineGround](https://developers.arcgis.com/javascript/latest/references/core/analysis/ElevationProfile/ElevationProfileLineGround/) from [ElevationProfileAnalysis](https://developers.arcgis.com/javascript/latest/references/core/analysis/ElevationProfileAnalysis/) instead._
 * @see [ElevationProfileLineInput](https://developers.arcgis.com/javascript/latest/references/core/widgets/ElevationProfile/ElevationProfileLineInput/) - _Deprecated since 5.0. Use [ElevationProfileLineInput](https://developers.arcgis.com/javascript/latest/references/core/analysis/ElevationProfile/ElevationProfileLineInput/) from [ElevationProfileAnalysis](https://developers.arcgis.com/javascript/latest/references/core/analysis/ElevationProfileAnalysis/) instead._
 * @see [ElevationProfileLineQuery](https://developers.arcgis.com/javascript/latest/references/core/widgets/ElevationProfile/ElevationProfileLineQuery/) - _Deprecated since 5.0. Use [ElevationProfileLineQuery](https://developers.arcgis.com/javascript/latest/references/core/analysis/ElevationProfile/ElevationProfileLineQuery/) from [ElevationProfileAnalysis](https://developers.arcgis.com/javascript/latest/references/core/analysis/ElevationProfileAnalysis/) instead._
 * @see [ElevationProfileLineView](https://developers.arcgis.com/javascript/latest/references/core/widgets/ElevationProfile/ElevationProfileLineView/) - _Deprecated since 5.0. Use [ElevationProfileLineScene](https://developers.arcgis.com/javascript/latest/references/core/analysis/ElevationProfile/ElevationProfileLineScene/) from [ElevationProfileAnalysis](https://developers.arcgis.com/javascript/latest/references/core/analysis/ElevationProfileAnalysis/) instead._
 */
export default abstract class ElevationProfileLine extends EventedAccessor {
  /**
   * Color of the line on the chart and the hovered points in the view.
   *
   * @default "#000000"
   */
  get color(): Color;
  set color(value: ColorLike);
  /** Point being hovered in the chart, in the view's spatial reference. */
  get hoveredPoint(): Point | null | undefined;
  /** Unique identifier for the profile line. */
  accessor id: string;
  /**
   * How far along the generation of this profile is. 0 means nothing was loaded
   * and 1 means loading is complete.
   */
  get progress(): number;
  /**
   * List of samples that make up the elevation profile. It can be passed to a graphing library in
   * order to display the profile in 2D.
   */
  get samples(): ElevationProfileSample[] | null | undefined;
  /**
   * Statistics about the generated elevation profile, if available.
   *
   * For slope computations, profiles are sampled at a minimum distance of 10 meters (32.8 feet).
   * Higher resolution profiles are downsampled to a 10-meter (32.8-foot) sampling distance before calculating the slope.
   */
  get statistics(): ElevationProfileStatistics | null | undefined;
  /** Title of the line, to be displayed in the chart tooltip and in the chart legend. */
  accessor title: string | null | undefined;
  /** The line type. */
  readonly type: ElevationProfileLineType;
  /**
   * Whether a line visualization representing [elevationSamples](https://developers.arcgis.com/javascript/latest/references/core/widgets/ElevationProfile/ElevationProfileLine/#samples)
   * should be added to the [SceneView](https://developers.arcgis.com/javascript/latest/references/core/views/SceneView/). This property doesn't apply to [MapView](https://developers.arcgis.com/javascript/latest/references/core/views/MapView/).
   *
   * @default true
   * @since 4.20
   */
  accessor viewVisualizationEnabled: boolean;
  /**
   * Whether the line should be computed and shown in the chart.
   *
   * @default true
   */
  accessor visible: boolean;
}