import { FormControl } from '@angular/forms';
import { Color } from '@ionic/core';
import { ComponentState } from '../../types';
/**
 * Quick selection preset for number stepper.
 */
export interface NumberStepperPreset {
    /** Preset value */
    value: number;
    /** Display label (optional, defaults to value) */
    label?: string;
    /** Whether this is a popular/highlighted option */
    popular?: boolean;
}
/**
 * Metadata for the number stepper component.
 */
export interface NumberStepperMetadata {
    /** Form control for the value */
    control: FormControl<number>;
    /** Minimum value */
    min?: number;
    /** Maximum value */
    max?: number;
    /** Step increment */
    step?: number;
    /** Show manual input field */
    showInput?: boolean;
    /** Allow manual input editing */
    editableInput?: boolean;
    /** Unit price for total calculation */
    unitPrice?: number;
    /** Currency code for price display */
    currency?: string;
    /** Currency symbol */
    currencySymbol?: string;
    /** Show total price */
    showTotal?: boolean;
    /** Unit label (e.g., "boletos", "tickets") */
    unitLabel?: string;
    /** Singular unit label */
    unitLabelSingular?: string;
    /** Preset values for quick selection */
    presets?: NumberStepperPreset[];
    /** Show preset buttons */
    showPresets?: boolean;
    /** Component color */
    color?: Color;
    /** Size variant */
    size?: 'small' | 'medium' | 'large';
    /** Button shape */
    buttonShape?: 'square' | 'round';
    /** Layout direction */
    layout?: 'horizontal' | 'vertical';
    /** Custom CSS class */
    cssClass?: string;
    /** Component state */
    state?: ComponentState;
    /** Label for the component */
    label?: string;
    /** Hint text */
    hint?: string;
    /** Decrement button aria label */
    decrementLabel?: string;
    /** Increment button aria label */
    incrementLabel?: string;
    /** Content key for label */
    labelContentKey?: string;
    /** Content key for unit label */
    unitLabelContentKey?: string;
    /** Content class for reactive content */
    contentClass?: string;
}
/**
 * Event emitted when value changes.
 */
export interface NumberStepperChangeEvent {
    /** New value */
    value: number;
    /** Previous value */
    previousValue: number;
    /** Total price (if unitPrice is set) */
    totalPrice?: number;
    /** Whether at minimum */
    atMin: boolean;
    /** Whether at maximum */
    atMax: boolean;
}
