/// <reference path="../../index.d.ts" />
import type FeatureLayer from "@arcgis/core/layers/FeatureLayer.js";
import type MapView from "@arcgis/core/views/MapView.js";
import type { PublicLitElement as LitElement } from "@arcgis/lumina";
import type { T9nMeta } from "@arcgis/lumina/controllers";

export abstract class CardManager extends LitElement {
  /**
   * Contains the translations for this component.
   * All UI strings should be defined here.
   *
   * @internal
   */
  protected _translations: {
      selectFeaturesToStart: string;
      selectFeaturesFromMapToStart: string;
      createFeature: string;
      createRecord: string;
      create: string;
      back: string;
      createMultiple: string;
      moveClipboardFeatures: string;
  } & T9nMeta<{
      selectFeaturesToStart: string;
      selectFeaturesFromMapToStart: string;
      createFeature: string;
      createRecord: string;
      create: string;
      back: string;
      createMultiple: string;
      moveClipboardFeatures: string;
  }>;
  /** string[]: list of layer ids that are allowed for paste operations */
  accessor allowedPasteLayerIds: string[];
  /**
   * string: Label to show for create button
   *
   * @default ''
   */
  accessor createBtnLabel: string;
  /**
   * string: custom notice text to display
   *
   * @default ''
   */
  accessor customInfoText: string;
  /**
   * boolean: when true the users can have the option to create features
   *
   * @default true
   */
  accessor enableCreateFeatures: 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;
  /**
   * When true the component will render an optimized view for mobile devices
   *
   * @default false
   */
  accessor isMobile: boolean;
  /**
   * esri/views/layers/FeatureLayer: https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-FeatureLayer.html
   * Should be a layer or table
   */
  accessor layerOrTable: FeatureLayer | undefined;
  /**
   * string: Id to pass in the map component
   *
   * @default ''
   */
  accessor mapComponentId: string | undefined;
  /** esri/views/MapView: https://developers.arcgis.com/javascript/latest/api-reference/esri-views-MapView.html */
  accessor mapView: MapView | undefined;
  /**
   * boolean: When true the paste action will be enabled
   *
   * @default false
   */
  accessor pasteEnabled: boolean;
  /** A list of ids that are currently selected */
  accessor selectedFeaturesIds: (number | string)[];
  /**
   * boolean: When select feature from map message will shown
   *
   * @default false
   */
  accessor selectingFeatureFromMap: boolean;
  /**
   * boolean: When true the copy and paste actions will be shown
   *
   * @default false
   */
  accessor showCopyPasteActions: boolean;
  /**
   * boolean: When true the sketch widgets will be shown in the create feature component
   *
   * @default false
   */
  accessor showSketchWidgets: boolean;
  /**
   * boolean: When true the selected feature will zoomed to in the map and the row will be scrolled to within the table
   *
   * @default false
   */
  accessor zoomAndScrollToSelected: boolean;
  /** Emits when back from create work flow */
  readonly backFromCreateWorkFlow: import("@arcgis/lumina").TargetedEvent<this, void>;
  /** Emits when create work flow started */
  readonly createWorkFlowStarted: import("@arcgis/lumina").TargetedEvent<this, void>;
  /** Emitted when the paste action should be disabled */
  readonly disablePaste: import("@arcgis/lumina").TargetedEvent<this, void>;
  /** Emits when feature/record is submitted */
  readonly featureOrRecordSubmitted: import("@arcgis/lumina").TargetedEvent<this, void>;
  /** Emitted when the features have been copied to the clipboard */
  readonly featuresCopied: import("@arcgis/lumina").TargetedEvent<this, void>;
  /** Emitted when the features have been pasted from the clipboard */
  readonly featuresPasted: import("@arcgis/lumina").TargetedEvent<this, void>;
  readonly "@eventTypes": {
    backFromCreateWorkFlow: CardManager["backFromCreateWorkFlow"]["detail"];
    createWorkFlowStarted: CardManager["createWorkFlowStarted"]["detail"];
    disablePaste: CardManager["disablePaste"]["detail"];
    featureOrRecordSubmitted: CardManager["featureOrRecordSubmitted"]["detail"];
    featuresCopied: CardManager["featuresCopied"]["detail"];
    featuresPasted: CardManager["featuresPasted"]["detail"];
  };
}