import { useChartValidation } from './useChartValidation';
import type { ChartDataPoint, ChartConfig } from '../types/chart.types';
export interface UseChartScalesOptions {
    data: ChartDataPoint[];
    config: ChartConfig;
    /**
     * Chart type - affects how scales are calculated
     */
    chartType?: 'bar' | 'line' | 'combo';
    /**
     * Whether bars are stacked (affects Y-axis max calculation)
     */
    stacked?: boolean;
    /**
     * User-provided minimum Y value
     */
    minValue?: number;
    /**
     * User-provided maximum Y value
     */
    maxValue?: number;
    /**
     * Whether to include zero in the Y-axis range
     */
    includeZero?: boolean;
    /**
     * Inner width for X-axis calculations
     */
    innerWidth?: number;
    /**
     * Gap between categories
     */
    categoryGap?: number;
}
export interface ChartScales {
    /**
     * Y-axis scale
     */
    y: {
        min: number;
        max: number;
        hasValidData: boolean;
    };
    /**
     * X-axis scale info
     */
    x: {
        categoryWidth: number;
        totalWidth: number;
        pointPosition: (index: number) => number;
    };
}
export interface UseChartScalesReturn {
    /**
     * Calculated scales for X and Y axes
     */
    scales: ChartScales;
    /**
     * Sanitized data from validation
     */
    sanitizedData: ChartDataPoint[];
    /**
     * Whether the chart has valid data to render
     */
    isValid: boolean;
    /**
     * Validation warnings
     */
    hasWarnings: boolean;
    /**
     * Safe math utilities
     */
    safeMath: ReturnType<typeof useChartValidation>['safeMath'];
    /**
     * Safe scale utilities
     */
    safeScale: ReturnType<typeof useChartValidation>['safeScale'];
}
/**
 * Unified hook for chart scale calculations
 * Handles both bar and line charts with consistent logic
 */
export declare function useChartScales(options: UseChartScalesOptions): UseChartScalesReturn;
