import { InputProps, InputTheme } from '../Input/Input.types';
/**
 * InputCreditCard component props
 * @property {function} onCardNumberChange - Callback when card number changes
 * @property {function} onExpiryDateChange - Callback when expiry date changes
 * @property {function} onCvcChange - Callback when CVC changes
 * @property {string} expiryDateLabel - Label for expiry date input
 * @property {string} cvcLabel - Label for CVC input
 * @property {string} legendText - Text displayed as the form label
 * @property {InputCreditCardThemeOverrides} theme - Theme overrides for the credit card input
 */
export interface InputCreditCardProps {
    /** Callback when card number changes */
    onCardNumberChange?: (cardNumber: string) => void;
    /** Callback when expiry date changes */
    onExpiryDateChange?: (expiryDate: string) => void;
    /** Callback when CVC changes */
    onCvcChange?: (cvc: string) => void;
    /** Label for expiry date input */
    expiryDateLabel?: string;
    /** Label for CVC input */
    cvcLabel?: string;
    /** Text displayed as the form label */
    legendText?: string;
    /** Props passed to the card number input */
    cardNumberInputProps?: Omit<InputProps, 'ref'>;
    /** Props passed to the expiry date input */
    expiryDateInputProps?: Omit<InputProps, 'ref'>;
    /** Props passed to the CVC input */
    cvcInputProps?: Omit<InputProps, 'ref'>;
    /** Class name for the container */
    className?: string;
    /** Component-level theme overrides */
    theme?: InputCreditCardThemeOverrides;
}
/**
 * Input position types within the credit card form
 */
export type InputCreditCardPosition = 'top' | 'middle' | 'bottomLeft' | 'bottomRight' | 'bottomFull';
/**
 * Input position styles
 */
export interface InputPositionStyles {
    top: string;
    middle: string;
    bottomLeft: string;
    bottomRight: string;
    bottomFull: string;
}
/**
 * Theme overrides for the InputCreditCard component
 */
export interface InputCreditCardThemeOverrides {
    /** Container styles */
    container?: string;
    /** Styles for the legend element */
    legendStyles?: string;
    /** Styles for the fieldset element */
    fieldsetStyles?: string;
    /** Styles for the content container */
    contentStyles?: string;
    /** Styles for the expiry date input wrapper */
    expiryDateWrapperStyles?: string;
    /** Styles for the CVC input wrapper */
    cvcWrapperStyles?: string;
    /** Card number input theme overrides */
    cardNumberInput?: InputTheme;
    /** Expiry date input theme overrides */
    expiryDateInput?: InputTheme;
    /** CVC input theme overrides */
    cvcInput?: InputTheme;
    /** Styles for input positions */
    inputPositions?: InputPositionStyles;
    /** Styles for the chevron icon */
    chevronStyles?: string;
    /** Base input group style that serves as foundation for all positions */
    baseInputGroupStyle?: string;
    /** Style for the top input (first in sequence) */
    topInputGroupStyle?: string;
    /** Style for middle inputs (between first and last) */
    middleInputGroupStyle?: string;
    /** Style for bottom-left input (in a split bottom row) */
    bottomLeftInputGroupStyle?: string;
    /** Style for bottom-right input (in a split bottom row) */
    bottomRightInputGroupStyle?: string;
    /** Style for a full-width bottom input (when only one bottom input is shown) */
    bottomFullInputGroupStyle?: string;
}
