import { BoxProps, ElementProps, Factory, StylesApiProps, TooltipFloatingProps } from '@mantine/core';
export type HeatmapStylesNames = 'root' | 'rect' | 'weekdayLabel' | 'monthLabel';
interface HeatmapRectData {
    date: string;
    value: number | null;
}
export interface HeatmapProps extends BoxProps, StylesApiProps<HeatmapFactory>, ElementProps<'svg', 'display' | 'opacity' | 'viewBox' | 'width' | 'height'> {
    /** Heatmap data, key is date in `YYYY-MM-DD` format (interpreted as a UTC calendar day) */
    data: Record<string, number>;
    /** Heatmap domain, array of 2 numbers, min and max values, calculated from data by default */
    domain?: [number, number];
    /** Heatmap start date. Current date - 1 year by default. Date is normalized to UTC midnight of the intended calendar day. */
    startDate?: Date | string;
    /** Heatmap end date. Current date by default. Date is normalized to UTC midnight of the intended calendar day. */
    endDate?: Date | string;
    /** If set, month labels are displayed @default `false` */
    withMonthLabels?: boolean;
    /** Month labels, array of 12 elements, can be used for localization */
    monthLabels?: string[];
    /** If set, weekday labels are displayed @default `false` */
    withWeekdayLabels?: boolean;
    /** Weekday labels, array of 7 elements, can be used for localization */
    weekdayLabels?: string[];
    /** If set, trailing dates that do not fall into the given `startDate` – `endDate` range are displayed to fill empty space. @default `true` */
    withOutsideDates?: boolean;
    /** First day of week, 0 – Sunday, 1 – Monday. @default 1 – Monday */
    firstDayOfWeek?: 0 | 1 | 2 | 3 | 4 | 5 | 6;
    /** Size of day rect in px @default 10 */
    rectSize?: number;
    /** Gap between rects in px @default 1 */
    gap?: number;
    /** Rect radius in px @default 2 */
    rectRadius?: number;
    /** Colors array, used to calculate color for each value, by default 4 shades of green colors are used */
    colors?: string[];
    /** Width of weekday labels column @default 30 */
    weekdaysLabelsWidth?: number;
    /** Height of month labels row @default 30 */
    monthsLabelsHeight?: number;
    /** Font size of month and weekday labels @default 12 */
    fontSize?: number;
    /** A function to generate tooltip label based on the hovered rect date and value, required for the tooltip to be visible */
    getTooltipLabel?: (input: HeatmapRectData) => React.ReactNode;
    /** If set, tooltip is displayed on rect hover @default `false` */
    withTooltip?: boolean;
    /** Props passed down to the `Tooltip.Floating` component */
    tooltipProps?: Partial<TooltipFloatingProps>;
    /** Props passed down to each rect depending on its date and associated value */
    getRectProps?: (input: HeatmapRectData) => React.ComponentPropsWithoutRef<'rect'>;
    /** If set, inserts a spacer column between months @default `false` */
    splitMonths?: boolean;
}
export type HeatmapFactory = Factory<{
    props: HeatmapProps;
    ref: SVGSVGElement;
    stylesNames: HeatmapStylesNames;
}>;
export declare const Heatmap: import("@mantine/core").MantineComponent<{
    props: HeatmapProps;
    ref: SVGSVGElement;
    stylesNames: HeatmapStylesNames;
}>;
export {};
