/// <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 { T9nMeta } from "@arcgis/lumina/controllers";

export abstract class InfoCard extends LitElement {
  /**
   * Contains the translations for this component.
   * All UI strings should be defined here.
   *
   * @internal
   */
  protected _translations: {
      fetchingData: string;
      edit: string;
      enableEditing: string;
      editDisabled: string;
      next: string;
      back: string;
      indexOfTotal: string;
      delete: string;
      toggleListView: string;
      copy: string;
      paste: string;
  } & T9nMeta<{
      fetchingData: string;
      edit: string;
      enableEditing: string;
      editDisabled: string;
      next: string;
      back: string;
      indexOfTotal: string;
      delete: string;
      toggleListView: string;
      copy: string;
      paste: string;
  }>;
  /**
   * boolean: If true will show edit button
   *
   * @default false
   */
  accessor allowEditing: boolean | undefined;
  /**
   * 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;
  /** string: Map component id to pass in the features component reference */
  accessor featuresReferenceId: string | undefined;
  /** esri/Graphic: https://developers.arcgis.com/javascript/latest/api-reference/esri-Graphic.html */
  accessor graphics: Graphic[];
  /**
   * boolean: If true will highlights the features on map using Features Widget
   *
   * @default true
   */
  accessor highlightEnabled: boolean | undefined;
  /**
   * boolean: when true a loading indicator will be shown
   *
   * @default false
   */
  accessor isLoading: boolean;
  /**
   * When true the component will render an optimized view for mobile devices
   *
   * @default false
   */
  accessor isMobile: boolean;
  /** esri/views/MapView: https://developers.arcgis.com/javascript/latest/api-reference/esri-views-MapView.html */
  accessor mapView: MapView | undefined;
  /**
   * boolean: If true will show the pagination for multiple features
   *
   * @default true
   */
  accessor paginationEnabled: boolean | undefined;
  /**
   * boolean: When true the paste action will be enabled
   *
   * @default false
   */
  accessor pasteEnabled: boolean;
  /**
   * string: Set the position of the feature info
   *
   * @default 'absolute'
   */
  accessor position: string | undefined;
  /**
   * boolean: If true show close button on the feature info
   *
   * @default false
   */
  accessor showCloseBtn: boolean | undefined;
  /**
   * boolean: If true will show copy and paste actions
   *
   * @default false
   */
  accessor showCopyPasteActions: boolean | undefined;
  /** Go to the previous feature in the features widget */
  back(): Promise<void>;
  /**
   * Get the current selected feature from the Features widget
   *
   * @returns Promise resolving with the current feature
   */
  getSelectedFeature(): Promise<any>;
  /** Go to the next feature in the features widget */
  next(): Promise<void>;
  /**
   * Refresh the feature info
   *
   * @returns Promise when complete
   */
  refresh(): Promise<any>;
  /** Toggle the visibility of the features list view */
  toggleListView(): Promise<void>;
  /** Emitted on demand when close button is clicked */
  readonly clearSelection: import("@arcgis/lumina").TargetedEvent<this, void>;
  /** Emitted on demand when copy action is clicked */
  readonly copyFeatures: import("@arcgis/lumina").TargetedEvent<this, {
      featuresIds: (number | string)[];
      layerId: string | undefined;
  }>;
  /** Emitted on demand when paste action is clicked */
  readonly pasteFeatures: import("@arcgis/lumina").TargetedEvent<this, void>;
  /** Emitted on demand when the popup is closed */
  readonly popupClosed: import("@arcgis/lumina").TargetedEvent<this, void>;
  /** Emitted on demand when the selected index changes */
  readonly selectionChanged: import("@arcgis/lumina").TargetedEvent<this, {
      selectedFeature: Graphic[];
      selectedFeatureIndex: number;
  }>;
  readonly "@eventTypes": {
    clearSelection: InfoCard["clearSelection"]["detail"];
    copyFeatures: InfoCard["copyFeatures"]["detail"];
    pasteFeatures: InfoCard["pasteFeatures"]["detail"];
    popupClosed: InfoCard["popupClosed"]["detail"];
    selectionChanged: InfoCard["selectionChanged"]["detail"];
  };
}