import type { ClonableMixin } from "../../core/Clonable.js";
import type { JSONSupport } from "../../core/JSONSupport.js";

/**
 * @internal
 * @since 5.1
 */
export interface OutDistanceProperties extends Partial<Pick<OutDistance, "ascendingOrder" | "outDistanceUnit" | "returnDistance">> {}

/**
 * Defines the [outDistance](https://developers.arcgis.com/javascript/latest/references/core/rest/support/Query/#outDistance) parameter on a [Query](https://developers.arcgis.com/javascript/latest/references/core/rest/support/Query/) and specifies whether to return the distance
 * of each feature from the input geometry's buffer in a query result. It also optionally controls the sort order of results based on distances of features
 * from the input geometry's buffer.
 * Distance values are returned only when the following conditions are met:
 * - The [Query.distance](https://developers.arcgis.com/javascript/latest/references/core/rest/support/Query/#distance) is greater than 0
 * - [Query.units](https://developers.arcgis.com/javascript/latest/references/core/rest/support/Query/#units) is specified
 * - [Query.outDistance](https://developers.arcgis.com/javascript/latest/references/core/rest/support/Query/#outDistance) is specified and its [OutDistance.returnDistance](https://developers.arcgis.com/javascript/latest/references/core/rest/support/OutDistance/#returnDistance) property is `true`
 *
 * > [!WARNING]
 * >
 * > **Known Limitations**
 * >
 * > Supported only on a service-backed [FeatureLayer](https://developers.arcgis.com/javascript/latest/references/core/layers/FeatureLayer/) where the [supportsOutDistance](https://developers.arcgis.com/javascript/latest/references/core/layers/types/#QueryCapabilities) capability
 * > is `true`.
 *
 * @internal
 * @since 5.1
 */
export default class OutDistance extends OutDistanceSuperclass {
  constructor(properties?: OutDistanceProperties);
  /**
   * Indicates whether to return the distance values in ascending order. This property is only applicable when [returnDistance](https://developers.arcgis.com/javascript/latest/references/core/rest/support/OutDistance/#returnDistance) is `true`.
   *
   * @default true
   * @since 5.1
   */
  accessor ascendingOrder: boolean;
  /**
   * The distance unit of the returned distance values. This property is only applicable when
   * [returnDistance](https://developers.arcgis.com/javascript/latest/references/core/rest/support/OutDistance/#returnDistance) is `true`.
   *
   * @since 5.1
   */
  accessor outDistanceUnit: "feet" | "miles" | "nautical-miles" | "us-nautical-miles" | "meters" | "kilometers" | null | undefined;
  /**
   * Indicates whether to return the calculated distance value for each feature in a distance query result.
   * Distance values returned in each feature's [distance](https://developers.arcgis.com/javascript/latest/references/core/Graphic/#distance) property.
   *
   * @default true
   * @since 5.1
   */
  accessor returnDistance: boolean;
}
declare const OutDistanceSuperclass: typeof JSONSupport & typeof ClonableMixin