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
 * <val-username-input
 *   [props]="{
 *     control: usernameControl,
 *     label: 'Nombre de usuario',
 *     placeholder: 'tu_username',
 *     checkAvailability: checkFn
 *   }"
 * />
 */
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<boolean>;
    availabilityStatus: import("@angular/core").WritableSignal<UsernameAvailabilityStatus>;
    hasError: import("@angular/core").Signal<boolean>;
    showStatusMessage: import("@angular/core").Signal<boolean>;
    statusColor: import("@angular/core").Signal<"success" | "danger">;
    statusMessage: import("@angular/core").Signal<"" | "Username disponible" | "Username ya está en uso">;
    errorMessage: import("@angular/core").Signal<string>;
    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<UsernameInputComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<UsernameInputComponent, "val-username-input", never, { "props": { "alias": "props"; "required": false; }; }, {}, never, never, true, never>;
}
