import { FormControl } from '@angular/forms';
import { Observable } from 'rxjs';
import { ComponentState } from '../../types';
/**
 * Metadata for UsernameInputComponent.
 */
export interface UsernameInputMetadata {
    /** FormControl para el valor del username */
    control: FormControl<string>;
    /** Label del campo */
    label?: string;
    /** Texto explicativo debajo del input (estilo consistente con phone-input). */
    hint?: string;
    /** Placeholder del input */
    placeholder?: string;
    /** Prefijo visual (default: '@') */
    prefix?: string;
    /** Longitud mínima permitida (default: 3) */
    minLength?: number;
    /** Longitud máxima permitida (default: 30) */
    maxLength?: number;
    /** Función para verificar disponibilidad del username */
    checkAvailability?: (handle: string) => Observable<boolean>;
    /** Mensajes de error personalizados */
    errors?: Record<string, string>;
    /** Estado del componente */
    state?: ComponentState;
    /** Mostrar indicador de disponibilidad (default: true) */
    showAvailability?: boolean;
    /** Debounce en ms para check de disponibilidad (default: 500) */
    debounceTime?: number;
}
/**
 * Estado de disponibilidad del username.
 */
export type UsernameAvailabilityStatus = 'idle' | 'checking' | 'available' | 'taken' | 'invalid';
