import type ChartMediaInfo from "./mixins/ChartMediaInfo.js";
import type { ChartMediaInfoProperties } from "./mixins/ChartMediaInfo.js";

export interface BarChartMediaInfoProperties extends ChartMediaInfoProperties {}

/**
 * A `BarChartMediaInfo` is a type of chart media element that represents a bar chart displayed within a popup.
 *
 * ![popuptemplate-media-element-barchart](https://developers.arcgis.com/javascript/latest/assets/img/apiref/widgets/popup/popuptemplate-media-element-barchart.png)
 *
 * @since 4.11
 * @see [PopupTemplate](https://developers.arcgis.com/javascript/latest/api-reference/esri-PopupTemplate.html)
 * @see [Content](https://developers.arcgis.com/javascript/latest/api-reference/esri-popup-content-Content.html)
 * @see [ChartMediaInfoValue](https://developers.arcgis.com/javascript/latest/api-reference/esri-popup-content-support-ChartMediaInfoValue.html)
 * @see [Sample - Intro to PopupTemplate](https://developers.arcgis.com/javascript/latest/sample-code/intro-popuptemplate/)
 * @see [Sample - Multiple popup elements](https://developers.arcgis.com/javascript/latest/sample-code/popup-multipleelements/)
 * @example
 * // Create a new BarChart to display within the PopupTemplate
 * // Create the ChartMediaInfoValue
 * let barChartValue = new ChartMediaInfoValue({
 *   colors: [[220, 123, 4, 1], [229, 80, 53, 1], ...],
 *   fields: ["<array of strings indicating fields>"],
 *   normalizeField: null,
 *   tooltipField: "<field name>"
 * });
 *
 * // Create the BarChartMediaInfo media type
 * let barChart = new BarChartMediaInfo({
 *   title: "<b>Count by type</b>",
 *   caption: "Per block",
 *   value: barChartValue
 * });
 *
 * // Create the Media Content Element
 * let mediaElement = new MediaContent({
 *   mediaInfos: [barChart]
 * });
 */
export default class BarChartMediaInfo extends ChartMediaInfo {
  constructor(properties?: BarChartMediaInfoProperties);
  /**
   * Indicates the type of chart.
   *
   * @default "bar-chart"
   */
  get type(): "bar-chart";
  /**
   * Creates a deep clone of the BarChartMediaInfo class.
   *
   * @returns A deep clone of the BarChartMediaInfo instance.
   */
  clone(): BarChartMediaInfo;
}