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

export interface GeographicTransformationStepProperties extends Partial<Pick<GeographicTransformationStep, "isInverse" | "wkid" | "wkt">> {}

/**
 * Represents a step in the process of transforming coordinates from one geographic coordinate system to another.
 * A geographic transformation step can be constructed from a
 * well-known ID [(wkid)](https://developers.arcgis.com/javascript/latest/references/core/geometry/operators/support/GeographicTransformationStep/#wkid) or a well known text [(wkt)](https://developers.arcgis.com/javascript/latest/references/core/geometry/operators/support/GeographicTransformationStep/#wkt) that represents a geographic datum transformation.
 *
 * @since 4.32
 * @see [GeographicTransformation](https://developers.arcgis.com/javascript/latest/references/core/geometry/operators/support/GeographicTransformation/)
 * @see [Spatial References](https://developers.arcgis.com/documentation/spatial-references/)
 * @see [Coordinate systems, map projections, and transformations](https://pro.arcgis.com/en/pro-app/latest/help/mapping/properties/coordinate-systems-and-projections.htm)
 * @see [Geographic datum transformations](https://pro.arcgis.com/en/pro-app/latest/help/mapping/properties/geographic-coordinate-system-transformation.htm)
 * @see [About geographic transformations](https://www.esri.com/arcgis-blog/products/product/mapping/about-geographic-transformations-and-how-to-choose-the-right-one/)
 * @see [Sample - Client-side projection](https://developers.arcgis.com/javascript/latest/sample-code/client-projection/)
 */
export default class GeographicTransformationStep extends GeographicTransformationStepSuperclass {
  constructor(properties?: GeographicTransformationStepProperties);
  /**
   * Indicates if the geographic transformation is inverted.
   *
   * @default false
   */
  accessor isInverse: boolean;
  /**
   * The well-known id (wkid) hat represents a known geographic transformation.
   * See [Geographic datum transformations](https://pro.arcgis.com/en/pro-app/latest/help/mapping/properties/geographic-coordinate-system-transformation.htm)
   * for the list of supported equation-based geographic transformations.
   *
   * @example
   * // Create a geographic transformation step for Tokyo_To_WGS_1984_2001 using its wkid
   * let geoStep = new GeographicTransformationStep({ wkid: 108106 });
   */
  accessor wkid: number | null | undefined;
  /**
   * The well-known text (wkt) that represents a known geographic transformation.
   * See [Geographic datum transformations](https://pro.arcgis.com/en/pro-app/latest/help/mapping/properties/geographic-coordinate-system-transformation.htm)
   * for the list of supported equation-based geographic transformations.
   *
   * @example
   * // Create a geographic transformation step for NAD_1927_To_WGS_1984_1
   * // using its well known text or wkt
   * let wkt = "GEOGTRAN[\"NAD_1927_To_WGS_1984_1\",GEOGCS[\"GCS_North_American_1927\",DATUM[\"D_North_American_1927\",SPHEROID[\"Clarke_1866\",6378206.4,294.9786982]],PRIMEM[\"Greenwich\",0.0],UNIT[\"Degree\",0.0174532925199433]],GEOGCS[\"GCS_WGS_1984\",DATUM[\"D_WGS_1984\",SPHEROID[\"WGS_1984\",6378137.0,298.257223563]],PRIMEM[\"Greenwich\",0.0],UNIT[\"Degree\",0.0174532925199433]],METHOD[\"Geocentric_Translation\"],PARAMETER[\"X_Axis_Translation\",-3.0],PARAMETER[\"Y_Axis_Translation\",142.0],PARAMETER[\"Z_Axis_Translation\",183.0]]";
   *
   * let geoStep = new GeographicTransformationStep({ wkt });
   */
  accessor wkt: string | null | undefined;
  /**
   * Returns the inverse of this geographic transformation step.
   * The inverse of a transformation converts coordinates using the same method and parameters, but in the opposite
   * direction of the original object. For example, if the original object represents the `NAD_1983_HARN_To_NAD_1983_NSRS2007_1`
   * transformation, then the inverse will transform from `NAD 83 (NSRS 2007)` to `NAD 83 (HARN)`.
   *
   * @returns Returns the inverse of the geographic transformation step.
   * @example
   * // Get the inverse of the geographic transformation step for Tokyo_To_WGS_1984_2001 using its wkid
   * let geoStep = new GeographicTransformationStep({ wkid: 108106 });
   *
   * let inverse = geoStep.getInverse();
   */
  getInverse(): GeographicTransformationStep;
}
declare const GeographicTransformationStepSuperclass: typeof JSONSupport & typeof ClonableMixin