import * as React from 'react'; /** `true` si el track de video expone linterna (ImageCapture / torch constraint). */ export declare function trackSupportsTorch(track: MediaStreamTrack | null | undefined): boolean; /** Simbolismos de retail que intentamos detectar. */ export declare const RETAIL_BARCODE_FORMATS: string[]; /** `true` si este navegador puede escanear con la cámara (detector + getUserMedia). */ export declare function isCameraScanSupported(): boolean; /** * Beep corto de confirmación al escanear — WebAudio puro (sin assets ni libs, * CSP-safe). El AudioContext se crea perezosamente en el primer uso (ya hubo * gesto del usuario al abrir el escáner, así que suena). Falla en silencio si el * dispositivo no permite audio. Exportado para reutilizarlo con lectores físicos. */ export declare function useScanBeep(): () => void; /** Chip superpuesto sobre la cámara (éxito / error del padre tras resolver el código). */ export type BarcodeScannerFeedback = { message: string; tone?: 'success' | 'error' | 'neutral'; }; export interface BarcodeScannerProps { open: boolean; onClose: () => void; /** Se dispara con el código detectado. El padre resuelve qué hacer con él. */ onDetected: (code: string) => void; /** * Escaneo continuo (default): no cierra tras el primer código, ignora * repetidos ~1.2s y sigue detectando. `false` cierra al primer código * (ideal para llenar UN campo de formulario). */ continuous?: boolean; /** Beep de confirmación al detectar (default true). */ beepOnScan?: boolean; /** Texto del encabezado del overlay. */ title?: string; /** Ayuda mostrada bajo la retícula mientras la cámara está lista. */ hint?: string; /** * Posicionamiento del overlay. `absolute` (default) lo ancla al ancestro * posicionado más cercano — correcto dentro de un panel inmersivo o un * modal, sin taparse con el chrome del host. `fixed` cubre todo el viewport. */ position?: 'absolute' | 'fixed'; /** * Feedback del padre (ej. "Harina × 2" / "Sin coincidencia") pintado ENCIMA * del video. Los toasts de Sonner del host quedan detrás de este overlay * opaco en la práctica — este chip es la confirmación visible al escanear. */ feedback?: BarcodeScannerFeedback | null; } /** * Overlay de cámara a pantalla del contenedor con retícula de puntería. Montalo * condicionalmente (`open`) dentro de un ancestro `relative` cuando uses el * posicionamiento `absolute` por defecto. */ export declare function BarcodeScanner({ open, onClose, onDetected, continuous, beepOnScan, title, hint, position, feedback, }: BarcodeScannerProps): React.JSX.Element | null; export default BarcodeScanner; //# sourceMappingURL=barcode-scanner.d.ts.map