/// <reference path="../../index.d.ts" />
import type FeatureLayer from "@arcgis/core/layers/FeatureLayer.js";
import type { ButtonType, EditType } from "../../utils/interfaces.js";
import type { PublicLitElement as LitElement } from "@arcgis/lumina";
import type { Icon as Icon } from "@esri/calcite-components/components/calcite-icon";
import type { T9nMeta } from "@arcgis/lumina/controllers";

export abstract class DeleteButton extends LitElement {
  /**
   * Contains the translations for this component.
   * All UI strings should be defined here.
   *
   * @internal
   */
  protected _translations: {
      cancel: string;
      confirmMultiple: string;
      confirmSingle: string;
      delete: string;
      deleteCount: string;
      deleteFeature: string;
  } & T9nMeta<{
      cancel: string;
      confirmMultiple: string;
      confirmSingle: string;
      delete: string;
      deleteCount: string;
      deleteFeature: string;
  }>;
  /**
   * ButtonType (button | action): Support usage as action or button
   *
   * @default 'button'
   */
  accessor buttonType: ButtonType;
  /** calcite-dialog: Use this prop when using the button within a parent like a dropdown that would constrain the dialog and that is not desired */
  accessor deleteDialog: any;
  /**
   * boolean: This overrides internal enable/disable logic that is based on checks if the layer supports delete
   *
   * @default false
   */
  accessor disabled: boolean;
  /** string: The icon to display in the component */
  accessor icon: Icon["icon"] | undefined;
  /** number[]: The ids that would be deleted */
  accessor ids: (number | string)[];
  /** esri/views/layers/FeatureLayer: https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-FeatureLayer.html */
  accessor layer: FeatureLayer | undefined;
  /**
   * boolean: When true the delete button will show the number of features that will be deleted
   *
   * @default true
   */
  accessor showDeleteCount: boolean;
  /** Emitted on demand when the delete button is clicked */
  readonly deleteClicked: import("@arcgis/lumina").TargetedEvent<this, void>;
  /** Emitted on demand when features have been deleted */
  readonly editsComplete: import("@arcgis/lumina").TargetedEvent<this, EditType>;
  readonly "@eventTypes": {
    deleteClicked: DeleteButton["deleteClicked"]["detail"];
    editsComplete: DeleteButton["editsComplete"]["detail"];
  };
}