import type Graphic from "./Graphic.js";
import type { GraphicProperties } from "./Graphic.js";

export interface AttributeBinsGraphicProperties extends GraphicProperties, Partial<Pick<AttributeBinsGraphic, "stackedAttributes">> {}

/**
 * A Graphic returned in a FeatureSet as result of running `queryAttributeBins()` method.
 * It can contain [stackedAttributes](https://developers.arcgis.com/javascript/latest/references/core/AttributeBinsGraphic/#stackedAttributes) in addition to [geometry](https://developers.arcgis.com/javascript/latest/references/core/AttributeBinsGraphic/#geometry), a [symbol](https://developers.arcgis.com/javascript/latest/references/core/AttributeBinsGraphic/#symbol), and [attributes](https://developers.arcgis.com/javascript/latest/references/core/AttributeBinsGraphic/#attributes).
 *
 * @since 4.32
 * @see [AttributeBinsQuery](https://developers.arcgis.com/javascript/latest/references/core/rest/support/AttributeBinsQuery/)
 * @see [AttributeBinsFeatureSet](https://developers.arcgis.com/javascript/latest/references/core/rest/support/AttributeBinsFeatureSet/)
 * @see [Sample - Attribute Bins Query](https://developers.arcgis.com/javascript/latest/sample-code/query-attribute-bins/)
 */
export default class AttributeBinsGraphic extends Graphic {
  constructor(properties?: AttributeBinsGraphicProperties);
  /**
   * The stackedAttributes contains an array of name-value pairs, where the names correspond to unique values of the specified field or expression alias.
   * Each name-value pair in the array represents a segment of the data, and these segments are stacked within the same bin. This allows for visualizing how
   * different categories contribute to a total value. For example, it can be used to compare sales performance across different regions within the same time period.
   */
  accessor stackedAttributes: Record<string, any>[] | null | undefined;
}