import type { LegendProps, LegendPayload } from "recharts";
import type { ChartDataPoint } from "./chart-types";
/**
 * Get computed color value from CSS variable
 * Handles both RGB and HSL formats
 */
export declare function getCSSVariableColor(variable: string): string;
/**
 * Default chart colors using CSS variables
 */
export declare const CHART_COLORS: {
    readonly chart1: "--color-chart-1";
    readonly chart2: "--color-chart-2";
    readonly chart3: "--color-chart-3";
    readonly chart4: "--color-chart-4";
    readonly chart5: "--color-chart-5";
    readonly chart6: "--color-chart-6";
};
/**
 * Get default chart color by index
 * @param index - Color index (0-based)
 * @returns Computed color value
 */
export declare function getDefaultChartColor(index: number): string;
/**
 * Get all default chart colors as an array
 * @returns Array of computed color values
 */
export declare function getDefaultChartColors(): string[];
/**
 * Create a color getter function that uses CSS variables
 * @param customColors - Optional custom colors array
 * @returns Function that returns color for given index
 */
export declare function createColorGetter(customColors?: string[]): (index: number) => string;
/**
 * Format large numbers using Intl.NumberFormat with locale-aware abbreviations
 * @param value - Number to format
 * @param locale - Locale for formatting (defaults to user's locale)
 * @param options - Additional formatting options
 * @returns Formatted string
 */
export declare function formatLargeNumber(value: number | string, locale?: string, options?: Intl.NumberFormatOptions): string;
/**
 * Intelligently truncate text using Intl.Segmenter for proper word/grapheme boundaries
 * @param text - Text to truncate
 * @param maxLength - Maximum character length
 * @param locale - Locale for segmentation (defaults to user's locale)
 * @param preferWordBoundary - Whether to prefer breaking at word boundaries
 * @returns Truncated text with ellipsis if needed
 */
export declare function truncateText(text: string, maxLength: number, locale?: string, preferWordBoundary?: boolean): string;
/**
 * Calculate optimal label display settings using Intl API for better formatting
 * @param labels - Array of label strings
 * @param availableWidth - Available width for labels
 * @param locale - Locale for formatting and text analysis
 * @returns Object with angle, fontSize, truncateLength, showTooltip, and formatting settings
 */
export declare function calculateLabelSettings(labels: string[], availableWidth?: number, locale?: string): {
    angle: number;
    fontSize: number;
    truncateLength: number;
    showTooltip: boolean;
    formatLabels: boolean;
    locale: string;
};
/**
 * Custom tick component for X-axis with Intl-powered intelligent label handling
 */
export declare function CustomXAxisTick({ x, y, payload, angle, fontSize, truncateLength, showTooltip, formatLabels, locale, }: {
    x: number;
    y: number;
    payload: {
        value: string | number;
    };
    angle?: number;
    fontSize?: number;
    truncateLength?: number;
    showTooltip?: boolean;
    formatLabels?: boolean;
    locale?: string;
}): import("react/jsx-runtime").JSX.Element;
/**
 * Custom tick component for Y-axis with Intl-powered intelligent label handling
 */
export declare function CustomYAxisTick({ x, y, payload, fontSize, truncateLength, formatLabels, locale, }: {
    x: number;
    y: number;
    payload: {
        value: string | number;
    };
    fontSize?: number;
    truncateLength?: number;
    formatLabels?: boolean;
    locale?: string;
}): import("react/jsx-runtime").JSX.Element;
/**
 * Custom legend content renderer for consistent styling
 */
export declare const renderCustomLegend: (props: {
    payload?: ReadonlyArray<LegendPayload>;
}) => import("react/jsx-runtime").JSX.Element | null;
/**
 * Default legend props for consistent styling
 */
export declare const defaultLegendProps: Partial<LegendProps>;
/**
 * Default chart margins for consistent spacing across all charts
 */
export declare const defaultChartMargin: {
    top: number;
    right: number;
    left: number;
    bottom: number;
};
/**
 * Get chart margin based on whether legend is shown
 * @param showLegend - Whether the legend is displayed
 * @returns Chart margin object with top: 0 if legend is shown
 */
export declare function getChartMargin(showLegend?: boolean): {
    top: number;
    right: number;
    left: number;
    bottom: number;
};
/**
 * Extract min and max values from chart data
 * @param data - Chart data array
 * @param configKeys - Keys to extract values from (e.g., ['sales', 'revenue'])
 * @returns Object with min and max values
 */
export declare function extractDataRange(data: ChartDataPoint[], configKeys: string[]): {
    min: number;
    max: number;
} | null;
/**
 * Calculate Y-axis width based on formatted label content
 * @param minValue - Minimum value in the data
 * @param maxValue - Maximum value in the data
 * @param fontSize - Font size for Y-axis labels (default: 10)
 * @returns Calculated width in pixels
 */
export declare function calculateYAxisWidth(minValue?: number, maxValue?: number, fontSize?: number): number;
/**
 * Default Y-axis width to constrain space usage
 * This is a fallback when we can't calculate dynamically
 */
export declare const defaultYAxisWidth = 60;
/**
 * Default Y-axis tick formatter for compact number display
 */
export declare const defaultYAxisTickFormatter: (value: number | string) => string;
/**
 * Default CartesianGrid props for consistent styling across all charts
 */
export declare const defaultGridProps: {
    stroke: string;
    strokeWidth: number;
    strokeOpacity: number;
    strokeDasharray: string;
    strokeLinecap: "round";
    strokeLinejoin: "bevel";
    vertical: boolean;
};
//# sourceMappingURL=chart-utils.d.ts.map