import React from 'react';
import type { Transition } from 'motion/react';
import { ButtonProps } from '../../core/Button/Button.types';
/**
 * InputCounter component props
 * @property {number} value - Current counter value (controlled)
 * @property {function} onChange - Callback when value changes
 * @property {number} min - Minimum allowed value (optional)
 * @property {number} max - Maximum allowed value (optional)
 * @property {number} step - Increment/decrement step size (default: 1)
 * @property {boolean} disabled - Whether the counter is disabled
 * @property {function} formatNumber - Custom number formatter
 * @property {object} buttonProps - Props to pass to increment/decrement buttons
 * @property {object} theme - Theme overrides for styling
 * @property {object} transition - Custom Framer Motion transition
 */
export interface InputCounterProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onChange'> {
    /** Current counter value (controlled) */
    value: number;
    /** Callback when value changes */
    onChange: (value: number) => void;
    /** Minimum allowed value (optional) */
    min?: number;
    /** Maximum allowed value (optional) */
    max?: number;
    /** Increment/decrement step size (default: 1) */
    step?: number;
    /** Whether the counter is disabled */
    disabled?: boolean;
    /** Number of decimal places to display (auto-detected from step if not specified) */
    decimalPlaces?: number;
    /** Custom number formatter (e.g., for decimals or localization) */
    formatNumber?: (value: number) => string;
    /** Additional class names */
    className?: string;
    /** Props to pass to increment/decrement buttons (omitting onClick) */
    buttonProps?: Omit<ButtonProps, 'onClick'>;
    /** Theme overrides for styling */
    theme?: Partial<InputCounterTheme>;
    /** Custom Framer Motion transition */
    transition?: Transition;
    /** ARIA label for accessibility */
    'aria-label'?: string;
}
/**
 * Theme configuration for InputCounter component
 */
export interface InputCounterTheme {
    /** Base container style */
    baseStyle: string;
    /** Wrapper style for button animations */
    buttonWrapperStyle: string;
    /** Number display style */
    numberStyle: string;
}
