import React from 'react';
/**
 * Data point for FunnelChart
 */
export interface FunnelChartDataPoint {
    /** Stage name */
    name: string;
    /** Value at this stage */
    value: number;
    /** Optional custom color */
    color?: string;
}
/**
 * Theme overrides for FunnelChart
 */
export interface FunnelChartThemeOverrides {
    baseStyle?: string;
    colors?: string[];
}
/**
 * Point helper for curve calculations
 */
export interface FunnelChartPoint {
    x: number;
    y: number;
}
/**
 * Tooltip data for funnel stage
 */
export interface FunnelTooltipData {
    stage: FunnelChartDataPoint;
    index: number;
    percentage: number;
    dropoff: number;
    conversionRate: number;
    usersLost: number;
}
/**
 * Label position options
 */
export type FunnelLabelPosition = 'top' | 'bottom' | 'inside' | 'tooltip-only';
/**
 * Summary box position options
 */
export type FunnelSummaryPosition = 'top-right' | 'top-left' | 'bottom-right' | 'bottom-left' | 'none';
/**
 * FunnelChart props
 */
export interface FunnelChartProps extends React.HTMLAttributes<HTMLDivElement> {
    /** Funnel stages data */
    data: FunnelChartDataPoint[];
    /** Height of the chart */
    height?: number | string;
    /** Width of the chart */
    width?: number | string;
    /** Whether to show percentages */
    showPercentages?: boolean;
    /** Whether to show values */
    showValues?: boolean;
    /** Whether to show stage labels (name) */
    showLabels?: boolean;
    /** Whether to show dropoff percentages between stages */
    showDropoff?: boolean;
    /** Whether to show conversion rates between stages */
    showConversionRate?: boolean;
    /** Whether to show summary statistics */
    showSummary?: boolean;
    /** Custom colors */
    colors?: string[];
    /** Orientation of the funnel */
    orientation?: 'vertical' | 'horizontal';
    /** Whether to curve segment edges (horizontal only) */
    curved?: boolean;
    /** Whether to use gradient fills */
    useGradient?: boolean;
    /** Fill opacity when gradients are disabled or for gradient stops */
    fillOpacity?: number;
    /** Theme overrides */
    theme?: FunnelChartThemeOverrides;
    /** Additional className */
    className?: string;
    /** Callback when a stage is clicked */
    onStageClick?: (stage: FunnelChartDataPoint, index: number) => void;
    /** Format function for values */
    formatValue?: (value: number) => string;
    /** Position of stage labels */
    labelPosition?: FunnelLabelPosition;
    /** Position of summary statistics box */
    summaryPosition?: FunnelSummaryPosition;
    /** Whether to animate on mount */
    animate?: boolean;
    /** Callback when a stage receives keyboard focus */
    onStageFocus?: (stage: FunnelChartDataPoint, index: number) => void;
}
/**
 * Internal stage data with computed values
 */
export interface ComputedFunnelStage extends FunnelChartDataPoint {
    percentage: number;
    dropoff: number;
    conversionRate: number;
    usersLost: number;
    opacity: number;
    gradientId: string;
}
