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

export abstract class FieldSelection extends LitElement {
  /**
   * Contains the translations for this component.
   * All UI strings should be defined here.
   *
   * @internal
   */
  protected _translations: {
      fieldVisibility: string;
      selectFields: string;
      filterFields: string;
      sortFields: string;
      sortBy: string;
      sortByDefault: string;
      sortByDisplayName: string;
      sortByType: string;
      sortByFieldName: string;
      selectAll: string;
      deselectAll: string;
      additionalFieldInfo: string;
      photosAndFiles: string;
      attachments: string;
      relatedRecords: string;
      doneWithFieldChanges: string;
  } & T9nMeta<{
      fieldVisibility: string;
      selectFields: string;
      filterFields: string;
      sortFields: string;
      sortBy: string;
      sortByDefault: string;
      sortByDisplayName: string;
      sortByType: string;
      sortByFieldName: string;
      selectAll: string;
      deselectAll: string;
      additionalFieldInfo: string;
      photosAndFiles: string;
      attachments: string;
      relatedRecords: string;
      doneWithFieldChanges: string;
  }>;
  /** Extra fields such as attachments and related fields from IA config */
  accessor configExtraFields: any;
  /** esri/views/layers/FeatureLayer: https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-FeatureLayer.html */
  accessor layer: FeatureLayer | undefined;
  /** esri/views/View: https://developers.arcgis.com/javascript/latest/api-reference/esri-views-MapView.html */
  accessor mapView: MapView | undefined;
  /** esri/widgets/FeatureTable: https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-FeatureTable.html */
  accessor table: FeatureTable | undefined;
  /** LayerTable reference to support column reorder */
  accessor tableRef: LayerTable;
}