import type { WebChartCalendarDatePartsBinning, WebChartHeatChartSeries, WebChartSeries, WebChartTemporalBinning } from "../../spec/web-chart.js";
import type { ChartTypes } from "../misc/index.js";

/**
 * Determines if a Set of series type matches a combo bar-line chart
 *
 * @param uniqueTypes - The set of unique series types
 * @internal
 */
export function isComboLineAndBarChart(uniqueTypes: Set<string>): boolean | undefined;

/**
 * Determines if a Set of series type matches a box plot
 *
 * @param uniqueTypes - The set of unique series types
 * @internal
 */
export function isBoxPlotChart(uniqueTypes: Set<string>): boolean;

/**
 * Getting the type of a chart or series. If the input parameters are incorrect (empty array of series, or a mix of unknown/unallowed series types) the function returns `undefined`.
 * To get the series type, a valid seriesIndex is required. Otherwise, the type of a chart is determined and returned.
 *
 * @param chartSeries - The array of chart's series
 * @param seriesIndex - An index to get a specific series' type.  A valid index is required if the goal is to get the type of the series.
 * @internal
 */
export function getChartOrSeriesType(chartSeries: WebChartSeries[] | undefined, seriesIndex?: number): ChartTypes | undefined;

/**
 * Gets the binning type for a heat chart from the provided chart series.
 *
 * @param chartSeries - The heat chart series to check
 * @param isXAxis - An indicator to find the associated binning type for the x-axis or y-axis
 * @returns The binning type for the specified axis
 * @internal
 */
export function getHeatChartBinningType(chartSeries: WebChartHeatChartSeries | undefined, isXAxis?: boolean): WebChartCalendarDatePartsBinning | WebChartTemporalBinning | undefined;