/**
 * Applies an affine transformation to 2D geometries via the [Transformation](https://developers.arcgis.com/javascript/latest/references/core/geometry/operators/support/Transformation/) class.
 *
 * @since 4.31
 */
import type Transformation from "./support/Transformation.js";
import type { GeometryUnion, GeometryWithoutMeshUnion } from "../types.js";

/**
 * Executes an affine transformation on the geometry.
 *
 * @param geometry - The geometry to be transformed.
 * @param transformation - The transformation to apply to the `geometry`.
 * @returns Returns the transformed geometry.
 */
export function execute(geometry: GeometryUnion, transformation: Transformation): GeometryWithoutMeshUnion;

/**
 * Executes an affine transformation on multiple geometries.
 *
 * @param geometries - The geometries to be transformed.
 * All the geometries must have the same spatial reference.
 * @param transformation - The transformation to apply to the `geometries`.
 * @returns Returns the transformed geometries.
 */
export function executeMany(geometries: GeometryUnion[], transformation: Transformation): GeometryWithoutMeshUnion[];

/**
 * Indicates if the operator supports input geometries that contain curves.
 * The value will always be `true`.
 */
export const supportsCurves: boolean;