import { InputProps, InputTheme } from '../Input/Input.types';
/**
 * InputAddress component props
 * @property {boolean} showCountrySelector - Whether to show the country selector
 * @property {boolean} showPostalCode - Whether to show the postal code input
 * @property {string[]} availableCountries - List of available countries (when implemented with Select)
 * @property {string} defaultCountry - Default selected country
 * @property {function} onCountryChange - Callback when country changes
 * @property {function} onPostalCodeChange - Callback when postal code changes
 * @property {string} countryLabel - Label for country input
 * @property {string} postalCodeLabel - Label for postal code input
 * @property {string} legendText - Text displayed in the fieldset legend
 * @property {InputAddressThemeOverrides} theme - Theme overrides for the address input
 */
export interface InputAddressProps {
    /** Whether to show the country selector */
    showCountrySelector?: boolean;
    /** Whether to show the postal code input */
    showPostalCode?: boolean;
    /** List of available countries (when implemented with Select) */
    availableCountries?: string[];
    /** Default selected country */
    defaultCountry?: string;
    /** Callback when country changes */
    onCountryChange?: (country: string) => void;
    /** Callback when postal code changes */
    onPostalCodeChange?: (postalCode: string) => void;
    /** Label for country input */
    countryLabel?: string;
    /** Label for postal code input */
    postalCodeLabel?: string;
    /** Text displayed in the fieldset legend */
    legendText?: string;
    /** Props passed to the street input */
    streetInputProps?: Omit<InputProps, 'ref'>;
    /** Props passed to the state input */
    stateInputProps?: Omit<InputProps, 'ref'>;
    /** Props passed to the country input */
    countryInputProps?: Omit<InputProps, 'ref'>;
    /** Props passed to the postal code input */
    postalCodeInputProps?: Omit<InputProps, 'ref'>;
    /** Class name for the container */
    className?: string;
    /** Component-level theme overrides */
    theme?: InputAddressThemeOverrides;
}
/**
 * Input position types within the address form
 */
export type InputAddressPosition = '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 InputAddress component
 */
export interface InputAddressThemeOverrides {
    /** 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 country input wrapper */
    countryWrapperStyles?: string;
    /** Styles for the postal code input wrapper */
    postalCodeWrapperStyles?: string;
    /** Country input theme overrides */
    countryInput?: InputTheme;
    /** Postal code input theme overrides */
    postalCodeInput?: 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;
}
