import React from "react";
export type ProgressSize = "sm" | "md" | "lg";
export type ProgressLabelPosition = "right" | "top" | "bottom" | "inside";
/**
 * Theme configuration for Progress component
 */
export interface ProgressTheme {
    /** Outer container styles */
    containerStyle: string;
    /** Track (background) styles */
    trackStyle: string;
    /** Fill (progress bar) styles */
    fillStyle: string;
    /** Label text styles */
    labelStyle: string;
    /** Inside label styles (when label is inside the bar) */
    insideLabelStyle: string;
    /** Size variants for the track height */
    sizes: Record<ProgressSize, string>;
    /** Indeterminate animation styles */
    indeterminateStyle: string;
}
/**
 * Theme overrides for Progress component
 */
export interface ProgressThemeOverrides {
    containerStyle?: string;
    trackStyle?: string;
    fillStyle?: string;
    labelStyle?: string;
    insideLabelStyle?: string;
    sizes?: Partial<Record<ProgressSize, string>>;
    indeterminateStyle?: string;
}
export interface ProgressProps extends Omit<React.HTMLAttributes<HTMLDivElement>, "children"> {
    /**
     * Progress value from 0 to 100.
     * If undefined, the progress bar will be in indeterminate mode.
     */
    value?: number;
    /**
     * The size of the progress bar
     * @default 'md'
     */
    size?: ProgressSize;
    /**
     * Whether to show the percentage label
     * @default false
     */
    showLabel?: boolean;
    /**
     * Position of the label
     * @default 'right'
     */
    labelPosition?: ProgressLabelPosition;
    /**
     * Custom label formatter function
     * @param percentage - The current percentage value (0-100)
     * @returns The formatted label string
     */
    formatLabel?: (percentage: number) => string;
    /**
     * Whether to animate value changes
     * @default true
     */
    animated?: boolean;
    /**
     * Additional class name for the outer container/track wrapper
     */
    wrapperClassName?: string;
    /**
     * Component-level theme overrides
     */
    theme?: ProgressThemeOverrides;
}
