import { type ChartAnyPluginSignature, type ChartPublicAPI } from '@mui/x-charts/internals';
import { type HeatmapPluginSignatures } from "../Heatmap/Heatmap.plugins.js";
import { type LineChartProPluginSignatures } from "../LineChartPro/LineChartPro.plugins.js";
import { type ScatterChartProPluginSignatures } from "../ScatterChartPro/ScatterChartPro.plugins.js";
import { type BarChartProPluginSignatures } from "../BarChartPro/BarChartPro.plugins.js";
import { type AllPluginSignatures, type DefaultPluginSignatures } from "../internals/plugins/allPlugins.js";
import { type FunnelChartPluginSignatures } from "../FunnelChart/FunnelChart.plugins.js";
import { type RadarChartProPluginSignatures } from "../RadarChartPro/RadarChartPro.plugins.js";
import { type PieChartProPluginSignatures } from "../PieChartPro/PieChartPro.plugins.js";
import { type SankeyChartPluginSignatures } from "../SankeyChart/SankeyChart.plugins.js";
export type ProPluginsPerSeriesType = {
  heatmap: HeatmapPluginSignatures;
  line: LineChartProPluginSignatures;
  scatter: ScatterChartProPluginSignatures;
  bar: BarChartProPluginSignatures;
  funnel: FunnelChartPluginSignatures;
  radar: RadarChartProPluginSignatures;
  pie: PieChartProPluginSignatures;
  sankey: SankeyChartPluginSignatures;
  composition: DefaultPluginSignatures;
};
/**
 * The API of the chart `apiRef` object.
 * The chart type can be passed as the first generic parameter to narrow down the API to the specific chart type.
 * @example ChartProApi<'bar'>
 * If the chart is being created using composition, the `composition` value can be used.
 * @example ChartProApi<'composition'>
 */
export type ChartProApi<ChartType extends keyof ProPluginsPerSeriesType | undefined = undefined, Signatures extends readonly ChartAnyPluginSignature[] = (ChartType extends keyof ProPluginsPerSeriesType ? ProPluginsPerSeriesType[ChartType] : AllPluginSignatures)> = ChartPublicAPI<Signatures>;