/**
 * Convert multipart 2D geometries to single part geometries.
 *
 * ![Multipart to singlepart operator](https://developers.arcgis.com/javascript/latest/assets/references/core/operators/multiPartToSinglePart.png "Multipart to singlepart operator")
 *
 * @since 4.31
 */
import type { GeometryUnion, GeometryWithoutMeshUnion } from "../types.js";

export interface Options {
  /**
   * When this parameter is set to false, the input polygons will not be simplified before converting them to single part geometries. Make sure the input polygons are topologically simple.
   * Otherwise, the operation may assume incorrect ring orientation or order of rings.
   *
   * @default true
   */
  simplifyPolygons?: boolean;
}

/**
 * Performs the multipart to single part operation on the input geometries.
 * Single part geometries will not be affected (i.e. they just get passed along) with the exception of multipoints, which always become points.
 * By default, polygons will be simplified before producing single parts.
 *
 * @param geometries - The input geometries to be converted to single part geometries.
 * All the geometries must have the same spatial reference.
 * @param options - Additional options.
 * @returns Returns the single part geometries.
 * For non-simple polygons, the output of the method is not guaranteed to be correct if the `simplifyPolgons` option is set to `false`.
 * In that case, the method may either throw an error, or produce some output which is not guaranteed to be correct.
 * @example
 * // Convert multipart geometries to single part geometries
 * const singlePartGeometries = multiPartToSinglePartOperator.executeMany(multiPartGeometries);
 */
export function executeMany(geometries: GeometryUnion[], options?: Options): GeometryWithoutMeshUnion[];

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