/// <reference path="../../index.d.ts" />
import type Graphic from "@arcgis/core/Graphic.js";
import type MapView from "@arcgis/core/views/MapView.js";
import type { PublicLitElement as LitElement } from "@arcgis/lumina";
import type { ArcgisEditor } from "@arcgis/map-components/components/arcgis-editor/customElement";
import type { T9nMeta } from "@arcgis/lumina/controllers";

export abstract class EditCard extends LitElement {
  /**
   * Contains the translations for this component.
   * All UI strings should be defined here.
   *
   * @internal
   */
  protected _translations: {
      enableEditing: string;
      loading: string;
  } & T9nMeta<{
      enableEditing: string;
      loading: string;
  }>;
  /**
   * When true allow multiple editing
   *
   * @default false
   */
  accessor allowMultipleEditing: boolean;
  /**
   * When true the geometry of the current feature will be editable
   *
   * @default false
   */
  accessor enableEditGeometry: boolean;
  /**
   * When true the snapping options will be exposed
   *
   * @default false
   */
  accessor enableSnapping: boolean;
  /**
   * The index of the current graphic
   *
   * @default 0
   */
  accessor graphicIndex: number;
  /** esri/Graphic[]: https://developers.arcgis.com/javascript/latest/api-reference/esri-Graphic.html */
  accessor graphics: Graphic[];
  /** esri/views/MapView: https://developers.arcgis.com/javascript/latest/api-reference/esri-views/MapView.html */
  accessor mapView: MapView | undefined;
  /**
   * When true the component is displayed
   *
   * @default false
   */
  accessor open: boolean;
  /** Emitted on demand when the Editor widget should be closed */
  readonly closeEdit: import("@arcgis/lumina").TargetedEvent<this, void>;
  /** Event emitted upon selection of a table and invocation of feature addition from the related layer during an active edit workflow. */
  readonly creatingFeature: import("@arcgis/lumina").TargetedEvent<this, void>;
  /** Emit the Editor when it is initialized */
  readonly editorInitialized: import("@arcgis/lumina").TargetedEvent<this, ArcgisEditor>;
  /** Emitted on demand when edits are completed on current edit layer */
  readonly editsComplete: import("@arcgis/lumina").TargetedEvent<this, void>;
  /**
   * Emitted on demand when the editor is closed to handle
   * things like attachment updates that don't fire the standard edit update event when complete
   */
  readonly refreshGraphics: import("@arcgis/lumina").TargetedEvent<this, Graphic[]>;
  readonly "@eventTypes": {
    closeEdit: EditCard["closeEdit"]["detail"];
    creatingFeature: EditCard["creatingFeature"]["detail"];
    editorInitialized: EditCard["editorInitialized"]["detail"];
    editsComplete: EditCard["editsComplete"]["detail"];
    refreshGraphics: EditCard["refreshGraphics"]["detail"];
  };
}