/**
 * Units for linear measurements.
 * Use one of the string values below or a numerical value from
 * [here](https://resources.arcgis.com/en/help/arcobjects-cpp/componenthelp/index.html#/esriSRUnitType_Constants/000w00000042000000/)
 * or
 * [here](https://resources.arcgis.com/en/help/arcobjects-cpp/componenthelp/index.html#/esriSRUnit2Type_Constants/000w00000041000000/).
 *
 * @deprecated since version 4.32. Use [LengthUnit](https://developers.arcgis.com/javascript/latest/references/core/core/units/#LengthUnit) instead.
 * @since 5.0
 */
export type LinearUnit = "feet" | "kilometers" | "meters" | "miles" | "nautical-miles" | "yards";

/**
 * Units for area measurements.
 * Use one of the string values below or a numerical value from
 * [here](https://resources.arcgis.com/en/help/arcobjects-cpp/componenthelp/index.html#/esriSRUnitType_Constants/000w00000042000000/)
 * or
 * [here](https://resources.arcgis.com/en/help/arcobjects-cpp/componenthelp/index.html#/esriSRUnit2Type_Constants/000w00000041000000/).
 *
 * @deprecated since version 4.32. Use [AreaUnit](https://developers.arcgis.com/javascript/latest/references/core/core/units/#AreaUnit) instead.
 * @since 5.0
 */
export type AreaUnit = "acres" | "ares" | "hectares" | "square-feet" | "square-kilometers" | "square-meters" | "square-miles" | "square-yards";

/**
 * The return object of the
 * [extendedSpatialReferenceInfo()](https://developers.arcgis.com/javascript/latest/references/core/geometry/geometryEngine/#extendedSpatialReferenceInfo)
 * method.
 *
 * @deprecated since version 4.32.
 * @since 5.0
 * @see [extendedSpatialReferenceInfo()](https://developers.arcgis.com/javascript/latest/references/core/geometry/geometryEngine/#extendedSpatialReferenceInfo)
 */
export interface ExtendedSpatialReferenceInfo {
  /**
   * The XY tolerance of the spatial reference.
   *
   * @since 5.0
   */
  tolerance: number;
  /**
   * Unit type.
   *
   * @since 5.0
   */
  unitType: number;
  /**
   * Unit ID.
   *
   * @since 5.0
   */
  unitID: number;
  /**
   * Base factor.
   *
   * @since 5.0
   */
  unitBaseFactor: number;
  /**
   * Square derivative.
   *
   * @since 5.0
   */
  unitSquareDerivative: number;
}

/**
 * Object returned from the [nearestCoordinate()](https://developers.arcgis.com/javascript/latest/references/core/geometry/geometryEngine/#nearestCoordinate), [nearestVertex()](https://developers.arcgis.com/javascript/latest/references/core/geometry/geometryEngine/#nearestVertex), and [nearestVertices()](https://developers.arcgis.com/javascript/latest/references/core/geometry/geometryEngine/#nearestVertices) methods.
 *
 * @deprecated since version 4.32. Use [proximityOperator's ProximityResult](https://developers.arcgis.com/javascript/latest/references/core/geometry/operators/types/#ProximityResult) instead.
 * @since 5.0
 */
export interface NearestPointResult<Point> {
  /**
   * A vertex within the specified distance of the search.
   *
   * @since 5.0
   */
  coordinate: Point;
  /**
   * The distance from the `inputPoint` in the units of the view's spatial reference.
   *
   * @since 5.0
   */
  distance: number;
  /**
   * The index of the vertex within the geometry's rings or paths.
   *
   * @since 5.0
   */
  vertexIndex: number;
  /**
   * Indicates if it is an empty geometry.
   *
   * @since 5.0
   */
  isEmpty: boolean;
}