import type UpdateWorkflowData from "./UpdateWorkflowData.js";
import type Workflow from "./Workflow.js";
import type { UpdateWorkflowStep } from "./types.js";
import type { WorkflowProperties } from "./Workflow.js";

export interface UpdateWorkflowProperties extends WorkflowProperties {}

/**
 * A read-only class containing the logic used when updating and/or deleting features using
 * the [Editor](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Editor.html) widget.
 *
 * > [!WARNING]
 * >
 * > This workflow is only enabled if the feature service allows this operation.
 *
 * @since 4.15
 * @see [Editor](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Editor.html)
 * @see [Workflow](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Editor-Workflow.html)
 * @see [UpdateWorkflowData](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Editor-UpdateWorkflowData.html)
 * @see [Programming patterns: Widget viewModel pattern](https://developers.arcgis.com/javascript/latest/programming-patterns/#widget-viewmodel-pattern)
 * @see [Sample - Edit features with the Editor widget](https://developers.arcgis.com/javascript/latest/sample-code/widgets-editor-basic/)
 * @see [Sample - Edit features in 3D with the Editor widget](https://developers.arcgis.com/javascript/latest/sample-code/editor-3d/)
 * @see [Sample - Editor widget with configurations](https://developers.arcgis.com/javascript/latest/sample-code/widgets-editor-configurable/)
 * @see [Sample - Popup with edit action](https://developers.arcgis.com/javascript/latest/sample-code/popup-editaction/)
 */
export default class UpdateWorkflow extends Workflow<UpdateWorkflowData, UpdateWorkflowStep> {
  constructor(properties?: UpdateWorkflowProperties);
  /**
   * The shared workflow data.
   *
   * @since 4.30
   */
  get data(): UpdateWorkflowData;
  /** This property indicates if there is a previous step in the workflow. */
  get hasPreviousStep(): boolean;
  /** The type of workflow. */
  get type(): "update";
}