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

export interface PieChartMediaInfoProperties extends ChartMediaInfoProperties {}

/**
 * A `PieChartMediaInfo` is a type of chart media element that represents a pie chart displayed within a popup.
 *
 * ![popuptemplate-media-element-piechart](https://developers.arcgis.com/javascript/latest/assets/references/core/widgets/popup/popuptemplate-media-element-piechart.png)
 *
 * @since 4.11
 * @see [PopupTemplate](https://developers.arcgis.com/javascript/latest/references/core/PopupTemplate/)
 * @see [Content](https://developers.arcgis.com/javascript/latest/references/core/popup/content/Content/)
 * @see [ChartMediaInfoValue](https://developers.arcgis.com/javascript/latest/references/core/popup/content/support/ChartMediaInfoValue/)
 * @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 PieChart to display within the PopupTemplate
 * // Create the ChartMediaInfoValue
 * let pieChartValue = new ChartMediaInfoValue({
 *   colors: [[220, 123, 4, 1], [229, 80, 53, 1], ...],
 *   fields: ["<array of strings indicating fields>"],
 *   normalizeField: null,
 *   tooltipField: "<field name>"
 * });
 *
 * // Create the PieChartMediaInfo media type
 * let pieChart = new PieChartMediaInfo({
 *   title: "<b>Count by type</b>",
 *   caption: "Per block",
 *   value: pieChartValue
 * });
 *
 * // Create the MediaContent
 * let mediaElement = new MediaContent({
 *   mediaInfos: [pieChart]
 * });
 */
export default class PieChartMediaInfo extends ChartMediaInfo {
  constructor(properties?: PieChartMediaInfoProperties);
  /**
   * Indicates the type of chart.
   *
   * @default "pie-chart"
   */
  get type(): "pie-chart";
  /**
   * Creates a deep clone of the PieChartMediaInfo class.
   *
   * @returns A deep clone of the PieChartMediaInfo instance.
   */
  clone(): PieChartMediaInfo;
}