import type MergeFeaturesWorkflowData from "./MergeFeaturesWorkflowData.js";
import type Workflow from "./Workflow.js";
import type FeatureFormViewModel from "../FeatureForm/FeatureFormViewModel.js";
import type { EditorLayerUnion, MergeFeaturesWorkflowStep } from "./types.js";
import type { WorkflowProperties } from "./Workflow.js";

export interface MergeFeaturesWorkflowProperties extends WorkflowProperties {}

/**
 * A read-only class containing the logic used when merging features using the
 * [Editor](https://developers.arcgis.com/javascript/latest/references/core/widgets/Editor/) widget.
 *
 * > [!WARNING]
 * >
 * > Currently only supported in 2D.
 * > Support is limited to merging features from a single layer at a time.
 * > Support is limited to polyline, polygon, and multipoint geometries.
 *
 * @since 4.34
 * @see [Editor](https://developers.arcgis.com/javascript/latest/references/core/widgets/Editor/)
 * @see [Workflow](https://developers.arcgis.com/javascript/latest/references/core/widgets/Editor/Workflow/)
 * @see [Programming patterns: Widget viewModel pattern](https://developers.arcgis.com/javascript/latest/programming-patterns/#widget-viewmodel-pattern)
 */
export default class MergeFeaturesWorkflow extends Workflow<MergeFeaturesWorkflowData, MergeFeaturesWorkflowStep> {
  constructor(properties?: MergeFeaturesWorkflowProperties);
  /**
   * The instance of
   * [FeatureFormViewModel](https://developers.arcgis.com/javascript/latest/references/core/widgets/FeatureForm/FeatureFormViewModel/) used by the
   * workflow to manage the attributes of the resulting features.
   */
  get formViewModel(): FeatureFormViewModel;
  /** The layer to which the features being merged belong. */
  get layer(): EditorLayerUnion;
  /** The type of the workflow. */
  get type(): "merge-features";
}