/** * Metadata (object-first) del organism `val-qr-scanner`. * * Scanner de QR por cámara. Todos los campos son opcionales (la cámara * funciona con defaults). El consumer pasa los labels ya resueltos por i18n; * si no, el componente cae a sus defaults auto-registrados (namespace * `QrScanner`). */ export interface QrScannerMetadata { /** Arrancar la cámara automáticamente al montar (default false). */ autoStart?: boolean; /** Label del botón de iniciar (override del auto-i18n). */ startLabel?: string; /** Label del botón de detener (override del auto-i18n). */ stopLabel?: string; /** * Mantener la cámara encendida tras un escaneo exitoso (default true). Si es * `false`, el scanner se detiene solo al primer match — útil para flujos de * un solo canje. Si es `true`, sigue escaneando (la página decide cuándo * parar / reanudar). */ continuous?: boolean; /** * Anti-rebote entre lecturas del MISMO valor, en ms (default 1500). Evita * que el mismo QR dispare `scanned` muchas veces por segundo mientras está * frente a la cámara. */ dedupeMs?: number; } /** Estado interno del scanner (expuesto para feedback de UI). */ export type QrScannerState = 'idle' | 'starting' | 'scanning' | 'denied' | 'no-camera' | 'error';