import { EventEmitter } from '../../stencil-public-runtime';
import { HistoryItem, HistoryItemSelection } from '../gd-user-dashboard-list-item/user-dashboard-list-item';
import { TagOptions } from '../gd-user-dashboard-bulk-tag-dialog/gd-user-dashboard-bulk-tag-dialog';
export declare type DashboardListType = 'favorites' | 'history' | 'shared';
export declare type HistoryItemTag = {
  count: number;
  tag: string;
};
export declare type EditableHistoryItem = {
  current: HistoryItem;
  changes: HistoryItem;
};
export declare type Datalist = {
  description: string;
  url: string;
  historyItems: Array<HistoryItem>;
};
export declare class GdUserDashboard {
  /**
   * dashboard list items
   */
  items: Array<HistoryItem>;
  /**
   * a list of tags to show in the filter by dropdown
   */
  tags: Array<HistoryItemTag>;
  /**
   * whether to split the history items by showing date headers
   */
  showDateHeaders: boolean;
  /**
   * an active datalist
   */
  activeDatalist: Datalist;
  /**
   * if the share as url functionality should be available or not
   */
  canShareAsUrl: boolean;
  /**
   * historyItems: item deep clone
   */
  historyItems: Array<HistoryItem>;
  /**
   * the currently visible list
   */
  activeList: DashboardListType;
  /**
   * the tag the user has selected to filter by
   */
  selectedTag: string;
  /**
   * when editing a history item, its unsaved state will be stored here
   */
  editableHistoryItem: EditableHistoryItem;
  /**
   * holds the current list of selected history items
   */
  selectedHistoryItems: Array<string>;
  /**
   * controls when the export dialog shows
   */
  showExportDialog: boolean;
  /**
   * controls when the share dialog shows
   */
  showShareDialog: boolean;
  /**
   * controls when the import dialog shows
   */
  showImportDialog: boolean;
  /**
   * controls when the bulk tag dialog shows
   */
  showBulkTagDialog: boolean;
  /**
   * controls when the datalist import dialog shows
   */
  showDatalistImportDialog: boolean;
  /**
   * an event that is fired when the list changes, would be a good time to refresh the list
   */
  activeListChanged: EventEmitter<string>;
  /**
   * an event that is fired when the user selects a tag to filter by
   */
  filterChanged: EventEmitter<string>;
  /**
   * an event that is triggered to inform the application that a history item needs to be updated
   */
  saveHistoryItem: EventEmitter<HistoryItem>;
  /**
   * an event that is triggered to inform the application that one or more history items need to be deleted
   */
  deleteHistoryItems: EventEmitter<string[]>;
  /**
   * an event triggered when the user clicks cancel on the datalist import dialog
   */
  cancelDatalistImport: EventEmitter<void>;
  /**
   * used by the application to save changes that have been made to multiple history items
   */
  updateHistoryItems: EventEmitter<HistoryItem[]>;
  /**
   * controls when historyitems get favorited and shows toast
   */
  showToast: boolean;
  /**
   * triggers click event on favoriteItem event emitter to show and hide toast
   */
  handleClick(): void;
  /**
   * a reference to the tag filter
   */
  filterByEl: HTMLElement;
  /**
   * an exposed method to change the visible list
   * @param listType
   */
  setActiveList(listType: DashboardListType): Promise<void>;
  /**
   * on load, need to notify the application to load the requested list
   */
  componentDidLoad(): void;
  /**
   * on will load a good place to setup state because you can handle data asynchronously
   */
  componentWillLoad(): void;
  /**
   * anytime the active list changes, trigger an event to let the user know
   */
  notifyOfListChange(): void;
  handleActiveDatalistChanged(): void;
  handleItemsChanged(newValue: any): void;
  appendLeadingZeroes(n: any): any;
  filterByTag(tag: string): void;
  clearFilterByTag(): void;
  clickFilterByTag(tag: string): void;
  editHistoryItem(historyItem: HistoryItem): void;
  stopEditingHistoryItem(): void;
  saveHistoryItemChanges(historyItem: HistoryItem): void;
  selectedItemChanged(item: HistoryItemSelection): void;
  openExportDialog(): void;
  openBulkTagDialog(): void;
  selectAllHistoryItems(): void;
  deselectAllHistoryItems(): void;
  confirmAndDeleteHistoryItems(historyItemIds: string[]): void;
  bulkAddTags(tagOptions: TagOptions): void;
  /**
   * renders the user dashboard
   */
  render(): any;
  private renderEditFavoriteDialog;
}
