/**
 * Calculates the topological boundary of a 2D geometry.
 *
 * @since 4.31
 */
import type { GeometryUnion, GeometryWithoutMeshUnion } from "../types.js";

/**
 * Calculates the boundary on the input geometry.
 *
 * @param geometry - The input geometry.
 * @returns Returns the boundary geometry or null.
 * - Using point or multipoint as the input geometry returns null.
 * - Extent returns a polyline that bounds the extent.
 * - Polyline returns a multipoint containing the end points of the polyline's parts.
 * - Polygon returns a polyline describing its outer and inner rings.
 * @example
 * // Calculate the boundary of a polygon
 * const boundaryGeometry = boundaryOperator.execute(polygon);
 */
export function execute(geometry: GeometryUnion): GeometryWithoutMeshUnion | null | undefined;

/**
 * Calculates the boundaries on a set of geometries.
 *
 * @param geometries - The input geometries.
 * All the geometries must have the same spatial reference.
 * @returns Returns the boundary geometries or null.
 * - Using point or multipoint as the input geometry returns null.
 * - Extent returns a polyline that bounds the extent.
 * - Polyline returns a multipoint containing the end points of the polyline's parts.
 * - Polygon returns a polyline describing its outer and inner rings.
 */
export function executeMany(geometries: GeometryUnion[]): (GeometryWithoutMeshUnion | null | undefined)[];

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