import { FormControl } from '@angular/forms';
import { Color } from '@ionic/core';
import { ComponentState } from '../../types';
/**
 * Metadata for the textarea input component.
 */
export interface TextareaInputMetadata {
    /** Associated form control */
    control: FormControl<string>;
    /** 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;
    /** Initial value for the field */
    value?: string;
    /** Default value configuration */
    withDefault?: string | boolean;
    /** Number of visible rows */
    rows?: number;
    /** Minimum number of rows (for autoGrow) */
    minRows?: number;
    /** Maximum number of rows (for autoGrow) */
    maxRows?: number;
    /** Auto grow textarea based on content */
    autoGrow?: boolean;
    /** Maximum character count */
    maxLength?: number;
    /** Minimum character count */
    minLength?: number;
    /** Show character counter */
    showCounter?: boolean;
    /** Counter format: 'remaining' shows remaining chars, 'current' shows current/max */
    counterFormat?: 'remaining' | 'current';
    /** Disable resize */
    disableResize?: boolean;
    /** Input mode for virtual keyboard */
    inputMode?: 'none' | 'text' | 'decimal' | 'numeric' | 'tel' | 'search' | 'email' | 'url';
    /** Autocapitalize behavior */
    autocapitalize?: 'off' | 'none' | 'on' | 'sentences' | 'words' | 'characters';
    /** Enable spellcheck */
    spellcheck?: boolean;
    /** Wrap mode */
    wrap?: 'hard' | 'soft' | 'off';
    /** Component color */
    color?: Color;
    /** Fill style */
    fill?: 'outline' | 'solid';
    /** Label placement */
    labelPlacement?: 'fixed' | 'floating' | 'stacked' | 'start' | 'end';
    /** Show clear button */
    clearOnEdit?: boolean;
    /** 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;
}
