import type Error from "../../../core/Error.js";

/** The elevation profile error name. */
export type ElevationProfileErrorName = "too-complex" | "elevation-query-error" | "unknown";

/**
 * ElevationProfileError is an error class for reporting errors in
 * [ElevationProfileAnalysisView2D.results](https://developers.arcgis.com/javascript/latest/references/core/views/2d/analysis/ElevationProfileAnalysisView2D/#results) or
 * [ElevationProfileAnalysisView3D.results](https://developers.arcgis.com/javascript/latest/references/core/views/3d/analysis/ElevationProfileAnalysisView3D/#results).
 *
 * The following error names are defined:
 *
 * - "too-complex": The input geometry has too many points.
 * - "elevation-query-error": An error occurred while querying the elevation data.
 * - "unknown": An unknown error occurred.
 *
 * @since 4.34
 * @see [ElevationProfileAnalysis](https://developers.arcgis.com/javascript/latest/references/core/analysis/ElevationProfileAnalysis/)
 * @see [ElevationProfileAnalysisView2D](https://developers.arcgis.com/javascript/latest/references/core/views/2d/analysis/ElevationProfileAnalysisView2D/)
 * @see [ElevationProfileAnalysisView3D](https://developers.arcgis.com/javascript/latest/references/core/views/3d/analysis/ElevationProfileAnalysisView3D/)
 */
export default class ElevationProfileError<T = any> extends Error {
  constructor(name: ElevationProfileErrorName, message: string, details?: T);
  /**
   * The name of the elevation profile error.
   *
   * @default "unknown"
   * @example
   * someAsyncFunction.then(callback)
   *   .catch(function(error){
   *     console.log("Error name: ", error.name);
   * });
   */
  readonly name: ElevationProfileErrorName;
}