import type BinParametersBase from "./BinParametersBase.js";
import type { BinParametersBaseProperties } from "./BinParametersBase.js";
import type { NormalizationBinParametersMixinProperties, NormalizationBinParametersMixin } from "./NormalizationBinParametersMixin.js";

export interface AutoIntervalBinParametersProperties extends BinParametersBaseProperties, NormalizationBinParametersMixinProperties, Partial<Pick<AutoIntervalBinParameters, "end" | "numBins" | "start">> {}

/**
 * AutoIntervalBinParameters specifies [binParameters](https://developers.arcgis.com/javascript/latest/references/core/rest/support/AttributeBinsQuery/#binParameters) on [AttributeBinsQuery](https://developers.arcgis.com/javascript/latest/references/core/rest/support/AttributeBinsQuery/) object.
 * It defines the number of [numBins](https://developers.arcgis.com/javascript/latest/references/core/rest/support/AutoIntervalBinParameters/#numBins), and the [start](https://developers.arcgis.com/javascript/latest/references/core/rest/support/AutoIntervalBinParameters/#start) and [end](https://developers.arcgis.com/javascript/latest/references/core/rest/support/AutoIntervalBinParameters/#end) values for binning  on a specified [field](https://developers.arcgis.com/javascript/latest/references/core/rest/support/AutoIntervalBinParameters/#field). Bin size is automatically calculated based
 * on the range between the start and end values and the number of bins. The end value will be included in the last bin.
 * The AutoIntervalBinParameters does not support `timestamp-offset`, `date-only`, or `time-only` field types.
 *
 * When analyzing annual accident data across the USA, focusing on the time of day accidents occurred, you can use auto interval bin to visualize the distribution of accidents throughout
 * different hours of the day. The bin parameters would be:
 *
 * ```js
 * // Query bins with auto interval bin parameters based on field "HOUR" with 24 bins.
 * const binQuery = new AttributeBinsQuery({
 *   where: "Unit = 0",
 *   binParameters: new AutoIntervalBinParameters({
 *     numBins: 24,
 *     field: "HOUR", // the field to bin, containing the hours of the day
 *     start: 0, // the lower boundary of the first bin
 *     end: 24 // the upper boundary of the last bin
 *   })
 * });
 * ```
 *
 * <figure>
 *   <img src="https://developers.arcgis.com/javascript/latest/assets/references/core/rest/binQuery/auto-bin.avif" alt="color-blend" style="width:400px;"/>
 *   <figcaption>Total accidents in the USA by hour for the year 2021. Each bin represents the number of accidents that occurred during each hour of the day. The chart is based on the results obtained from the bin query shown above.</figcaption>
 * </figure>
 *
 * @since 4.32
 * @see [AttributeBinsQuery](https://developers.arcgis.com/javascript/latest/references/core/rest/support/AttributeBinsQuery/)
 */
export default class AutoIntervalBinParameters extends AutoIntervalBinParametersSuperclass {
  constructor(properties?: AutoIntervalBinParametersProperties);
  /** The end value of bins to generate. The value can be a number or a date. */
  accessor end: number | Date | null | undefined;
  /** The number of bins to generate. */
  accessor numBins: number | null | undefined;
  /** The start value of bins to generate. The value can be a number or a date. */
  accessor start: number | Date | null | undefined;
  /** The type of bin parameters. */
  readonly type: "auto-interval";
}
declare const AutoIntervalBinParametersSuperclass: typeof BinParametersBase & typeof NormalizationBinParametersMixin