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

/** @since 5.0 */
export interface BasemapLayerListVisibleElementsProperties extends Partial<Pick<BasemapLayerListVisibleElements, "baseLayers" | "closeButton" | "collapseButton" | "editTitleButton" | "errors" | "filter" | "flow" | "heading" | "referenceLayers" | "statusIndicators" | "temporaryLayerIndicators">> {}

/**
 * The visible elements that are displayed within the basemap layer list.
 * This provides the ability to turn on/off individual elements of the basemap layer list.
 *
 * @since 5.0
 */
export default class BasemapLayerListVisibleElements extends Accessor {
  constructor(properties?: BasemapLayerListVisibleElementsProperties);
  /**
   * Indicates whether to the base layers will be displayed.
   *
   * @default true
   * @since 5.0
   */
  accessor baseLayers: boolean;
  /**
   * Indicates whether to display a close button in the header.
   *
   * @default false
   * @since 5.0
   */
  accessor closeButton: boolean;
  /**
   * Indicates whether to display a collapse button in the header.
   *
   * @default false
   * @since 5.0
   */
  accessor collapseButton: boolean;
  /**
   * Indicates whether to display a button in the header to edit the basemap title.
   *
   * @default false
   * @since 5.0
   */
  accessor editTitleButton: boolean;
  /**
   * Indicates whether to display layers with load errors.
   *
   * @default false
   * @since 5.0
   */
  accessor errors: boolean;
  /**
   * Indicates whether to display a filter input box when then number of list items is equal to or greater than the value set in [BasemapLayerList.minFilterItems](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-BasemapLayerList.html#minFilterItems), allowing users to filter layers by their title.
   *
   * @default false
   * @since 5.0
   */
  accessor filter: boolean;
  /**
   * Determines whether the basemap layer list should be shown within its built-in [flow component](https://developers.arcgis.com/calcite-design-system/components/flow/) or if the flow component should be excluded. The basemap layer list will be displayed within its original flow component if set to `true`. The flow component will be omitted from the basemap layer list if set to `false`. To place the basemap layer list into an existing Calcite flow component, set this property to `false`.
   *
   * @default true
   * @since 5.0
   */
  accessor flow: boolean;
  /**
   * Indicates whether the basemap layer list displays a heading. The heading text is the title of the basemap. The heading level can be set with the [BasemapLayerList.headingLevel](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-BasemapLayerList.html#headingLevel).
   *
   * @default true
   * @since 5.0
   */
  accessor heading: boolean;
  /**
   * Indicates whether to the reference layers will be displayed.
   *
   * @default true
   * @since 5.0
   */
  accessor referenceLayers: boolean;
  /**
   * Indicates whether the status indicators will be displayed.
   *
   * @default true
   * @since 5.0
   */
  accessor statusIndicators: boolean;
  /**
   * Indicates whether temporary layer indicators will be displayed for layers with [Layer.persistenceEnabled](https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-Layer.html#persistenceEnabled) set to `false`. A [temporary icon](https://developers.arcgis.com/calcite-design-system/icons/?icon=temporary&library=Calcite%20UI&query=temporary) will be displayed on the near side of the layer title.
   *
   * @default false
   * @since 5.0
   */
  accessor temporaryLayerIndicators: boolean;
}