/**
 * A convenience module for importing [Geometry](https://developers.arcgis.com/javascript/latest/api-reference/esri-geometry-Geometry.html) classes when developing with
 * [TypeScript](https://developers.arcgis.com/javascript/latest/get-started/#typescript).
 * For example, rather than importing geometries one at a time like this:
 *
 * ```js
 * import Point from "@arcgis/core/geometry/Point.js";
 * import Polygon from "@arcgis/core/geometry/Polygon.js";
 * import Polyline from "@arcgis/core/geometry/Polyline.js";
 * ```
 *
 * You can use this module to import them on a single line:
 *
 * ```js
 * import { Point, Polygon, Polyline } from "@arcgis/core/geometry.js";
 * ```
 *
 * This module also allows you to implement [type guards](https://basarat.gitbook.io/typescript/type-system/typeguard)
 * on geometries, making your code smarter.
 *
 * ```js
 * import { GeometryUnion } from "@arcgis/core/unionTypes.js";
 *
 * function logGeometry(geometry: Geometry): void {
 *   if (geometry.type === "point") {
 *     // new at 4.6, the compiler knows the geometry is a Point instance
 *     console.log("point coords: ", geometry.x, geometry.y, geometry.z);
 *   }
 *   else {
 *     // the compiler knows the geometry must be a `Extent | Polygon | Multipoint | Polyline`
 *     console.log("The value is a geometry, but isn't a point.")
 *   }
 * }
 * ```
 *
 * @deprecated since version 4.32. Use [unionTypes](https://developers.arcgis.com/javascript/latest/api-reference/esri-unionTypes.html) to import union types, or individual modules to import classes.
 * @since 4.6
 */
import type ExtentClass from "./geometry/Extent.js";
import type MultipointClass from "./geometry/Multipoint.js";
import type PointClass from "./geometry/Point.js";
import type PolygonClass from "./geometry/Polygon.js";
import type PolylineClass from "./geometry/Polyline.js";
import type SpatialReferenceClass from "./geometry/SpatialReference.js";
import type { GeometryUnion } from "./geometry/types.js";

/**
 * Spatial Reference.
 *
 * @deprecated since version 4.32. Import [SpatialReference](https://developers.arcgis.com/javascript/latest/api-reference/esri-geometry-SpatialReference.html) directly instead.
 */
export const SpatialReference: typeof SpatialReferenceClass;

/**
 * Spatial Reference.
 *
 * @deprecated since version 4.32. Import [SpatialReference](https://developers.arcgis.com/javascript/latest/api-reference/esri-geometry-SpatialReference.html) directly instead.
 */
export type SpatialReference = SpatialReferenceClass;

/**
 * Geometry types.
 *
 * @deprecated since version 4.32. Use [GeometryUnion](https://developers.arcgis.com/javascript/latest/api-reference/esri-unionTypes.html#GeometryUnion) instead.
 */
export type Geometry = GeometryUnion;

/**
 * Extent.
 *
 * @deprecated since version 4.32. Import [Extent](https://developers.arcgis.com/javascript/latest/api-reference/esri-geometry-Extent.html) directly instead.
 */
export const Extent: typeof ExtentClass;

/**
 * Extent.
 *
 * @deprecated since version 4.32. Import [Extent](https://developers.arcgis.com/javascript/latest/api-reference/esri-geometry-Extent.html) directly instead.
 */
export type Extent = ExtentClass;

/**
 * Multipoint.
 *
 * @deprecated since version 4.32. Import [Multipoint](https://developers.arcgis.com/javascript/latest/api-reference/esri-geometry-Multipoint.html) directly instead.
 */
export const Multipoint: typeof MultipointClass;

/**
 * Multipoint.
 *
 * @deprecated since version 4.32. Import [Multipoint](https://developers.arcgis.com/javascript/latest/api-reference/esri-geometry-Multipoint.html) directly instead.
 */
export type Multipoint = MultipointClass;

/**
 * Point.
 *
 * @deprecated since version 4.32. Import [Point](https://developers.arcgis.com/javascript/latest/api-reference/esri-geometry-Point.html) directly instead.
 */
export const Point: typeof PointClass;

/**
 * Point.
 *
 * @deprecated since version 4.32. Import [Point](https://developers.arcgis.com/javascript/latest/api-reference/esri-geometry-Point.html) directly instead.
 */
export type Point = PointClass;

/**
 * Polygon.
 *
 * @deprecated since version 4.32. Import [Polygon](https://developers.arcgis.com/javascript/latest/api-reference/esri-geometry-Polygon.html) directly instead.
 */
export const Polygon: typeof PolygonClass;

/**
 * Polygon.
 *
 * @deprecated since version 4.32. Import [Polygon](https://developers.arcgis.com/javascript/latest/api-reference/esri-geometry-Polygon.html) directly instead.
 */
export type Polygon = PolygonClass;

/**
 * Polyline.
 *
 * @deprecated since version 4.32. Import [Polyline](https://developers.arcgis.com/javascript/latest/api-reference/esri-geometry-Polyline.html) directly instead.
 */
export const Polyline: typeof PolylineClass;

/**
 * Polyline.
 *
 * @deprecated since version 4.32. Import [Polyline](https://developers.arcgis.com/javascript/latest/api-reference/esri-geometry-Polyline.html) directly instead.
 */
export type Polyline = PolylineClass;