import { OnInit, OnDestroy } from '@angular/core';
import { UsernameInputMetadata, UsernameAvailabilityStatus } from './types';
import * as i0 from "@angular/core";
/**
* Username Input Component
*
* Input especializado para usernames/handles con:
* - Prefijo '@' visual
* - Validación de formato (alfanuméricos y _)
* - Normalización automática (lowercase, sin espacios)
* - Verificación de disponibilidad con debounce
* - Estados visuales: available, taken, checking
*
* @example
*
*/
export declare class UsernameInputComponent implements OnInit, OnDestroy {
props: UsernameInputMetadata;
/**
* AuthService optional — si está inyectado y `props.checkAvailability` no se provee,
* el component cae automáticamente a `AuthService.checkHandleAvailability` (backend
* de Valtech). Consumers que quieran otro endpoint pasan su propio callback.
*/
private authService;
private destroy$;
private checkAvailability$;
isFocused: import("@angular/core").WritableSignal;
availabilityStatus: import("@angular/core").WritableSignal;
hasError: import("@angular/core").Signal;
showStatusMessage: import("@angular/core").Signal;
statusColor: import("@angular/core").Signal<"success" | "danger">;
statusMessage: import("@angular/core").Signal<"" | "Username disponible" | "Username ya está en uso">;
errorMessage: import("@angular/core").Signal;
ngOnInit(): void;
ngOnDestroy(): void;
onFocus(): void;
onBlur(): void;
onInput(event: CustomEvent): void;
/**
* Resolve la fn de check de disponibilidad:
* 1. Si el caller pasa `props.checkAvailability` → usar esa
* 2. Si AuthService está inyectado → caer a `checkHandleAvailability` (backend Valtech)
* 3. Sino → undefined (no se muestra status indicator)
*/
private resolveCheckFn;
private setupAvailabilityCheck;
private normalizeUsername;
private isValidFormat;
static ɵfac: i0.ɵɵFactoryDeclaration;
static ɵcmp: i0.ɵɵComponentDeclaration;
}