import * as React from 'react';
import { type MakeOptional } from '@mui/x-internals/types';
import { type ChartsAxisProps } from '@mui/x-charts/ChartsAxis';
import { type ChartsTooltipProps } from '@mui/x-charts/ChartsTooltip';
import { type ChartsAxisSlots, type ChartsAxisSlotProps, type XAxis, type YAxis } from '@mui/x-charts/internals';
import { type ChartsOverlayProps, type ChartsOverlaySlotProps, type ChartsOverlaySlots } from '@mui/x-charts/ChartsOverlay';
import { type ChartsLegendSlotProps, type ChartsLegendSlots } from '@mui/x-charts/ChartsLegend';
import { type ChartsSlotPropsPro, type ChartsSlotsPro } from "../internals/material/index.js";
import { type ChartContainerProProps } from "../ChartContainerPro/index.js";
import { type HeatmapSeriesType } from "../models/seriesType/heatmap.js";
import { type HeatmapTooltipProps } from "./HeatmapTooltip/index.js";
import { type HeatmapItemSlotProps, type HeatmapItemSlots } from "./HeatmapItem.js";
import { type HeatmapPluginSignatures } from "./Heatmap.plugins.js";
import { type ChartsToolbarProSlotProps, type ChartsToolbarProSlots } from "../ChartsToolbarPro/Toolbar.types.js";
export interface HeatmapSlots extends ChartsAxisSlots, ChartsOverlaySlots, HeatmapItemSlots, ChartsToolbarProSlots, Partial<ChartsSlotsPro> {
  /**
   * Custom component for the tooltip.
   * @default ChartsTooltipRoot
   */
  tooltip?: React.ElementType<HeatmapTooltipProps>;
  /**
   * Custom component for the legend.
   * @default ContinuousColorLegendProps
   */
  legend?: ChartsLegendSlots['legend'];
}
export interface HeatmapSlotProps extends ChartsAxisSlotProps, ChartsOverlaySlotProps, HeatmapItemSlotProps, ChartsLegendSlotProps, ChartsToolbarProSlotProps, Partial<ChartsSlotPropsPro> {
  tooltip?: Partial<HeatmapTooltipProps>;
}
export type HeatmapSeries = MakeOptional<HeatmapSeriesType, 'type'>;
export interface HeatmapProps extends Omit<ChartContainerProProps<'heatmap', HeatmapPluginSignatures>, 'series' | 'plugins' | 'xAxis' | 'yAxis' | 'skipAnimation' | 'slots' | 'slotProps' | 'experimentalFeatures' | 'highlightedAxis' | 'onHighlightedAxisChange' | 'onAxisClick'>, Omit<ChartsAxisProps, 'slots' | 'slotProps'>, Omit<ChartsOverlayProps, 'slots' | 'slotProps'> {
  /**
   * The function called for onClick events.
   * The second argument contains information about all line/bar elements at the current mouse position.
   * @param {MouseEvent} event The mouse event recorded on the `<svg/>` element.
   * @param {null | ChartsAxisData} data The data about the clicked axis and items associated with it.
   *
   * @deprecated Use `onItemClick` instead to get access to both x- and y-axis values.
   */
  onAxisClick?: ChartContainerProProps<'heatmap', HeatmapPluginSignatures>['onAxisClick'];
  /**
   * The configuration of the x-axes.
   * If not provided, a default axis config is used.
   * An array of [[AxisConfig]] objects.
   */
  xAxis: Readonly<MakeOptional<XAxis<'band'>, 'scaleType'>[]>;
  /**
   * The configuration of the y-axes.
   * If not provided, a default axis config is used.
   * An array of [[AxisConfig]] objects.
   */
  yAxis: Readonly<MakeOptional<YAxis<'band'>, 'scaleType'>[]>;
  /**
   * The series to display in the bar chart.
   * An array of [[HeatmapSeries]] objects.
   */
  series: Readonly<HeatmapSeries[]>;
  /**
   * The configuration of the tooltip.
   * @see See {@link https://mui.com/x/react-charts/tooltip/ tooltip docs} for more details.
   */
  tooltip?: ChartsTooltipProps;
  /**
   * If `true`, the legend is not rendered.
   * @default true
   */
  hideLegend?: boolean;
  /**
   * If true, shows the default chart toolbar.
   * @default false
   */
  showToolbar?: boolean;
  /**
   * Overridable component slots.
   * @default {}
   */
  slots?: HeatmapSlots;
  /**
   * The props used for each component slot.
   * @default {}
   */
  slotProps?: HeatmapSlotProps;
}
declare const Heatmap: React.ForwardRefExoticComponent<HeatmapProps & React.RefAttributes<SVGSVGElement>>;
export { Heatmap };