import type { GeometryUnion } from "../../geometry/types.js";

/**
 * @internal
 * @internal
 */
export type IntegrateOptions = "defaultBehavior" | "defaultBehaviorOnlyModified" | "defaultBehaviorOnlyModifiedWithSnapping" | "onlyCrackAndCluster";

/**
 * Performs the topological integration of the geometry set in the XY plane.
 * Includes integrate options, and returns the index of any changed geometries.
 *
 * @param geometries - The set of geometries to integrate.
 * @param options - The set of geometries to integrate.
 * All the geometries must have the same spatial reference.
 * @returns Returns the result of the integration
 * @internal
 * @example
 * // Integrate a set of geometries
 * const result = integrateOperator.executeMany(geometries);
 * @internal
 */
export function extendedIntegrate(geometries: GeometryUnion[], options?: IntegrateOptions): {
    geometry: GeometryUnion;
    geometryIndex: number;
}[];