import type Graphic from "../../Graphic.js";
import type Accessor from "../../core/Accessor.js";
import type EditorViewModel from "./EditorViewModel.js";
import type { ReadonlyCollection } from "../../core/Collection.js";
import type { AnyEditingTemplate } from "../../editing/types.js";
import type { CreationInfo } from "./types.js";

export interface CreateFeaturesWorkflowDataProperties extends Partial<Pick<CreateFeaturesWorkflowData, "creationInfo" | "fullTemplate" | "viewModel">> {}

/**
 * This object supports the [Editor](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Editor.html) widget. It
 * contains data for the [CreateFeaturesWorkflow](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Editor-CreateFeaturesWorkflow.html).
 * This is accessed via the
 * [CreateFeaturesWorkflow#data](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Editor-CreateFeaturesWorkflow.html#data).
 *
 * @since 4.23
 * @see [Editor](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Editor.html)
 * @see [EditorViewModel](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Editor-EditorViewModel.html)
 * @see [Workflow](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Editor-Workflow.html)
 * @see [CreateFeaturesWorkflow](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Editor-CreateFeaturesWorkflow.html)
 * @see [UpdateWorkflow](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Editor-UpdateWorkflow.html)
 * @see [UpdateWorkflowData](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Editor-UpdateWorkflowData.html)
 */
export default class CreateFeaturesWorkflowData extends Accessor {
  constructor(properties?: CreateFeaturesWorkflowDataProperties);
  /** This provides the feature template and layer when creating a new feature. */
  accessor creationInfo: CreationInfo | null | undefined;
  /**
   * The full version of the template referenced by the property
   * `creationInfo.template`. If that template is a standard
   * [FeatureTemplate](https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-support-FeatureTemplate.html), this
   * property will simply reference that template. If the template is a
   * {@link editing/SharedTemplateMetadata},
   * this property will be set to an instance of
   * {@link editing/SharedTemplate} representing that
   * template's full definition.
   *
   * Note, if this property references an instance of
   * {@link editing/SharedTemplate}, the instance
   * will have already been loaded. Clients assigning a new value to this
   * property should ensure that `load` has been called on the new value.
   */
  accessor fullTemplate: AnyEditingTemplate | null | undefined;
  /**
   * Returns a collection of [graphics](https://developers.arcgis.com/javascript/latest/api-reference/esri-Graphic.html) representing features that have been created during the workflow.
   *
   * @see [CreateFeaturesWorkflow](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Editor-CreateFeaturesWorkflow.html)
   */
  get pendingFeatures(): ReadonlyCollection<Graphic>;
  /** The associated [EditorViewModel](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Editor-EditorViewModel.html) for this workflow. */
  accessor viewModel: EditorViewModel;
}