/// <reference path="../../index.d.ts" />
import type { AppLayout, IBasemapConfig, IMapInfo, ISearchConfiguration, theme, VisibilityIconType } from "../../utils/interfaces.js";
import type { PublicLitElement as LitElement } from "@arcgis/lumina";
import type { T9nMeta } from "@arcgis/lumina/controllers";

export abstract class CrowdsourceManager extends LitElement {
  /**
   * Contains the translations for this component.
   * All UI strings should be defined here.
   *
   * @internal
   */
  protected _translations: {
      open: string;
      close: string;
      coverPage: string;
      information: string;
      expandPopup: string;
      collapsePopup: string;
      view: string;
      splitView: string;
      tableView: string;
      mapView: string;
      filter: string;
      Resetfilter: string;
      filterByExtentMsg: string;
      filterByExtentTooltipMsg: string;
      invalidWebMapMsg: string;
  } & T9nMeta<{
      open: string;
      close: string;
      coverPage: string;
      information: string;
      expandPopup: string;
      collapsePopup: string;
      view: string;
      splitView: string;
      tableView: string;
      mapView: string;
      filter: string;
      Resetfilter: string;
      filterByExtentMsg: string;
      filterByExtentTooltipMsg: string;
      invalidWebMapMsg: string;
  }>;
  /**
   * AppLayout: The type of layout the application should use.
   * Valid values: 'mapView' or 'tableView' or 'splitView'
   */
  accessor appLayout: AppLayout | undefined;
  /** Array of objects containing proxy information for premium platform services. */
  accessor appProxies: any;
  /** IBasemapConfig: List of any basemaps to filter out from the basemap widget */
  accessor basemapConfig: IBasemapConfig | undefined;
  /**
   * boolean: When true a cover page has been enabled in the consuming application.
   * Also when true a floating button will be shown in the lower right of the window that
   * will emit an event when clicked that the consuming application can respond to that will open the cover page.
   *
   * @default false
   */
  accessor coverPageEnabled: boolean;
  /**
   * string: custom notification text to display in the card manager
   *
   * @default ''
   */
  accessor customInfoText: string;
  /** string: default layout the application should use */
  accessor defaultAppLayout: AppLayout | undefined;
  /**
   * string: default center point values for the map
   * ; delimited x;y pair
   *
   * @default ''
   */
  accessor defaultCenter: string;
  /**
   * string: Global ID of the feature to select
   *
   * @default ''
   */
  accessor defaultGlobalId: string;
  /**
   * string: when provided this layer ID will be used when the app loads
   *
   * @default ''
   */
  accessor defaultLayer: string;
  /**
   * string: default zoom level
   *
   * @default ''
   */
  accessor defaultLevel: string;
  /**
   * string: Object ID of feature to select
   *
   * @default ''
   */
  accessor defaultOid: string;
  /**
   * string: Item ID of the web map that should be selected by default
   *
   * @default ''
   */
  accessor defaultWebmap: string;
  /**
   * boolean: when true the layer table will auto refresh the data
   *
   * @default false
   */
  accessor enableAutoRefresh: boolean;
  /**
   * boolean: when true the basemap widget will be available
   *
   * @default true
   */
  accessor enableBasemap: boolean;
  /**
   * boolean: when true the layer table will support drag/drop of columns to adjust order
   *
   * @default true
   */
  accessor enableColumnReorder: boolean;
  /**
   * boolean: when true the copy and paste actions will be available
   *
   * @default true
   */
  accessor enableCopyPaste: boolean;
  /**
   * boolean: when true the export to csv button will be available
   *
   * @default true
   */
  accessor enableCSV: boolean;
  /**
   * boolean: when true the fullscreen widget will be available
   *
   * @default true
   */
  accessor enableFloorFilter: boolean;
  /**
   * boolean: when true the fullscreen widget will be available
   *
   * @default true
   */
  accessor enableFullscreen: boolean;
  /**
   * boolean: when true the home widget will be available
   *
   * @default true
   */
  accessor enableHome: boolean;
  /**
   * boolean: when true the layer list widget will be available
   *
   * @default true
   */
  accessor enableLayerList: boolean;
  /**
   * boolean: when true the legend widget will be available
   *
   * @default true
   */
  accessor enableLegend: boolean;
  /**
   * boolean: when true the map list will be shown and usable
   *
   * @default true
   */
  accessor enableMapList: boolean;
  /**
   * boolean: when true the search widget will be available
   *
   * @default true
   */
  accessor enableSearch: boolean;
  /**
   * boolean: when true the selection tool will be available
   *
   * @default true
   */
  accessor enableSelectionTool: boolean;
  /**
   * boolean: when true the share widget will be available
   *
   * @default false
   */
  accessor enableShare: boolean;
  /**
   * When true the snapping options will be exposed
   *
   * @default true
   */
  accessor enableSnapping: boolean;
  /**
   * boolean: when true the zoom widget will be available
   *
   * @default true
   */
  accessor enableZoom: boolean;
  /**
   * string: selection mode for the feature selection
   *
   * @default 'multiple'
   */
  accessor featureSelectionMode: string;
  /**
   * boolean: when true we will honor field order and visibility that may have been defined
   * in the map viewer if no field order is defined in the mapInfo.
   *
   * Field order defined in the mapInfo as would be the case for Instant App configurations
   * will always override this map level setting.
   *
   * @default false
   */
  accessor honorMapFieldSettings: boolean;
  /**
   * boolean: When true a introduction window has been enabled in the consuming application.
   * Also when true a floating button will be shown in the lower right of the window that
   * will emit an event when clicked that the consuming application can respond to that will open the introduction window.
   *
   * @default false
   */
  accessor introductionWindowEnabled: boolean;
  /** IMapInfo[]: array of map infos (name and id) */
  accessor mapInfos: IMapInfo[];
  /**
   * boolean: When true only editable layers that support the update capability will be available
   *
   * @default false
   */
  accessor onlyShowUpdatableLayers: boolean;
  /**
   * string: The background color to apply to the popup header
   *
   * @default ''
   */
  accessor popupHeaderColor: string;
  /**
   * string: The color that will be displayed on hover when expanding the popup header
   *
   * @default ''
   */
  accessor popupHeaderHoverColor: string;
  /**
   * string: The font color that will be displayed on hover when expanding the popup header
   *
   * @default ''
   */
  accessor popupHeaderHoverTextColor: string;
  /**
   * string: The font color to apply to the popup header
   *
   * @default ''
   */
  accessor popupHeaderTextColor: string;
  /** ISearchConfiguration: Configuration details for the Search widget */
  accessor searchConfiguration: ISearchConfiguration | undefined;
  /**
   * boolean: When true the share options will include embed option
   *
   * @default false
   */
  accessor shareIncludeEmbed: boolean;
  /**
   * boolean: When true the share options will include social media sharing
   *
   * @default false
   */
  accessor shareIncludeSocial: boolean;
  /**
   * boolean: when true the table will be sorted by objectid in descending order by default
   *
   * @default true
   */
  accessor showNewestFirst: boolean;
  /**
   * theme: 'light' | 'dark' theme to be used
   *
   * @default 'light'
   */
  accessor theme: theme;
  /**
   * VisibilityIconType: visibility icon for the layer list widget
   *
   * @default 'eyeball'
   */
  accessor visibilityIcon: VisibilityIconType;
  /**
   * 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;
  /** number: default scale to zoom to when zooming to a single point feature */
  accessor zoomToScale: number | undefined;
  /** Emitted on demand when a cover page button is clicked */
  readonly showCoverPage: import("@arcgis/lumina").TargetedEvent<this, void>;
  /** Emitted on demand when a info button is clicked */
  readonly showIntroductionWindow: import("@arcgis/lumina").TargetedEvent<this, void>;
  readonly "@eventTypes": {
    showCoverPage: CrowdsourceManager["showCoverPage"]["detail"];
    showIntroductionWindow: CrowdsourceManager["showIntroductionWindow"]["detail"];
  };
}