import type Accessor from "../../core/Accessor.js";

/** @since 5.0 */
export interface TableMenuVisibleElementsProperties extends Partial<Pick<TableMenuVisibleElements, "clearSelection" | "deleteSelection" | "exportSelectionToCSV" | "refreshData" | "selectedRecordsShowAllToggle" | "selectedRecordsShowSelectedToggle" | "toggleColumns" | "zoomToSelection">> {}

/** @since 5.0 */
export default class TableMenuVisibleElements extends Accessor {
  constructor(properties?: TableMenuVisibleElementsProperties);
  /**
   * Indicates whether to display the `Clear selection` menu item. Default value is `true` and will display within the menu if any rows are selected.
   *
   * @default true
   * @since 5.0
   */
  accessor clearSelection: boolean;
  /**
   * _(Since 4.25)_ Indicates whether to display the `Delete Selection` menu item. Default value is `true` and will display if `editingEnabled` is `true` and enabled on the feature service and rows are selected.
   *
   * @default true
   * @since 5.0
   */
  accessor deleteSelection: boolean;
  /**
   * _(Since 4.31)_ Indicates whether to display the `Export selection to CSV` menu item. Default value is `true` and will display if rows are selected. Geometry is included in the final export if the layer's geometry is of type point.
   *
   * @default true
   * @since 5.0
   */
  accessor exportSelectionToCSV: boolean;
  /**
   * Indicates whether to display the `Refresh data` menu item. Default value is `true`.
   *
   * @default true
   * @since 5.0
   */
  accessor refreshData: boolean;
  /**
   * _(Since 4.23)_ Indicates whether to toggle between showing only selected records in the table to showing all of the records. Default value is `true`.
   *
   * @default true
   * @since 5.0
   */
  accessor selectedRecordsShowAllToggle: boolean;
  /**
   * _(Since 4.23)_ Indicates whether to display the `Show selected records` menu item. Default value is `true` and will display within the menu if any rows are selected.
   *
   * @default true
   * @since 5.0
   */
  accessor selectedRecordsShowSelectedToggle: boolean;
  /**
   * Indicates whether to enable toggling column visibility within the menu. Default value is `true`.
   *
   * @default true
   * @since 5.0
   */
  accessor toggleColumns: boolean;
  /**
   * _(Since 4.23)_ Indicates whether to display the `Zoom to selected` menu item. Default value is `true` and will display within the menu if any rows are selected.
   *
   * @default true
   * @since 5.0
   */
  accessor zoomToSelection: boolean;
}