import { FormControl } from '@angular/forms';
import { Color } from '@ionic/core';
import { ComponentState } from '../../types';
/**
 * Currency configuration.
 */
export interface CurrencyConfig {
    /** Currency code (ISO 4217, e.g., 'USD', 'MXN', 'EUR') */
    code: string;
    /** Currency symbol (e.g., '$', '€', '£') */
    symbol: string;
    /** Currency name */
    name: string;
    /** Symbol position */
    symbolPosition?: 'prefix' | 'suffix';
    /** Decimal separator */
    decimalSeparator?: string;
    /** Thousands separator */
    thousandsSeparator?: string;
    /** Number of decimal places */
    decimalPlaces?: number;
}
/**
 * Common currency configurations.
 */
export declare const COMMON_CURRENCIES: CurrencyConfig[];
/**
 * Metadata for the currency input component.
 */
export interface CurrencyInputMetadata {
    /** Form control for the numeric value (stores raw number) */
    control: FormControl<number | null>;
    /** Unique token for the input */
    token?: string;
    /** Display label */
    label?: string;
    /** Field name */
    name?: string;
    /** Help text */
    hint?: string;
    /** Input placeholder */
    placeholder?: string;
    /** Field state */
    state?: ComponentState;
    /** Currency configuration */
    currency?: CurrencyConfig;
    /** Currency code (shortcut if not providing full config) */
    currencyCode?: string;
    /** Available currencies for selector */
    currencies?: CurrencyConfig[];
    /** Show currency selector */
    showCurrencySelector?: boolean;
    /** Allow negative values */
    allowNegative?: boolean;
    /** Number of decimal places (overrides currency default) */
    decimalPlaces?: number;
    /** Show thousands separator */
    showThousandsSeparator?: boolean;
    /** Show currency symbol */
    showSymbol?: boolean;
    /** Minimum value */
    min?: number;
    /** Maximum value */
    max?: number;
    /** Component color */
    color?: Color;
    /** Fill style */
    fill?: 'outline' | 'solid';
    /** Label placement */
    labelPlacement?: 'fixed' | 'floating' | 'stacked' | 'start' | 'end';
    /** Custom CSS class */
    cssClass?: string;
    /** Content key for reactive label */
    labelContentKey?: string;
    /** Content key for reactive placeholder */
    placeholderContentKey?: string;
    /** Content key for reactive hint */
    hintContentKey?: string;
    /** Component class name for content lookup */
    contentClass?: string;
    /** Custom error messages */
    errors?: Record<string, string>;
    /** Show validation errors */
    showErrors?: boolean;
}
/**
 * Event emitted when currency input changes.
 */
export interface CurrencyInputChangeEvent {
    /** Raw numeric value */
    value: number | null;
    /** Formatted display value */
    formattedValue: string;
    /** Selected currency */
    currency: CurrencyConfig;
}
