import type { ChartDataPoint } from '../../types/chart.types';
export interface BaseAxisProps {
    /** Whether to show the axis */
    show?: boolean;
    /** Custom className for styling */
    className?: string;
    /** Color of the axis line and text */
    color?: string;
    /** Font size for axis labels */
    fontSize?: number;
    /** Whether to show tick marks */
    showTicks?: boolean;
    /** Length of tick marks */
    tickLength?: number;
    /** Spacing between ticks and labels */
    tickPadding?: number;
}
export interface XAxisProps extends BaseAxisProps {
    /** Data points for the x-axis */
    data: Array<{
        name?: string;
        label?: string;
        [key: string]: string | number | null | undefined;
    }>;
    /** X position of the axis */
    x: number;
    /** Y position of the axis */
    y: number;
    /** Width of the axis */
    width: number;
    /** Width of each category/bar group */
    categoryWidth: number;
    /** Gap between categories */
    categoryGap?: number;
    /** Text anchor for labels */
    textAnchor?: 'start' | 'middle' | 'end';
    /** Rotation angle for labels */
    labelRotation?: number;
    /** Custom label formatter */
    labelFormatter?: (value: ChartDataPoint, index: number) => string;
    /** Maximum width for labels before truncation */
    maxLabelWidth?: number;
    /** Whether tick marks should align directly with the left/right edges (for line/area charts) */
    alignWithEdge?: boolean;
}
export interface YAxisProps extends BaseAxisProps {
    /** Minimum value for the y-axis */
    min: number;
    /** Maximum value for the y-axis */
    max: number;
    /** Number of ticks on the y-axis */
    tickCount?: number;
    /** X position of the axis */
    x: number;
    /** Y position of the axis */
    y: number;
    /** Height of the axis */
    height: number;
    /** Text anchor for labels */
    textAnchor?: 'start' | 'middle' | 'end';
    /** Custom tick formatter */
    tickFormatter?: (value: number) => string;
    /** Whether to show grid lines */
    showGrid?: boolean;
    /** Width of the chart area for grid lines */
    gridWidth?: number;
    /** Custom tick values */
    ticks?: number[];
}
export interface AxisTickProps {
    /** Value of the tick */
    value: number | string;
    /** X position */
    x: number;
    /** Y position */
    y: number;
    /** Whether to show the tick mark */
    showTick?: boolean;
    /** Length of the tick mark */
    tickLength?: number;
    /** Text anchor */
    textAnchor?: 'start' | 'middle' | 'end';
    /** Custom formatter */
    formatter?: (value: number | string) => string;
    /** Font size */
    fontSize?: number;
    /** Color */
    color?: string;
    /** Rotation angle */
    rotation?: number;
    /** Maximum width before truncation */
    maxWidth?: number;
}
