import { WebBarcodeScannerOptions, CameraSwitchResult, FlashToggleResult, FocusDistanceResult, CameraInfo, BarcodeFormat } from './data'; export { BarcodeFormat, BarcodeDetectorType, type WebBarcodeScannerOptions, type ScannerError, type CameraSwitchResult, type FlashToggleResult, type FocusDistanceResult, type CameraInfo, type DecodedBarcode } from './data'; /** * Advanced barcode scanner with tap-to-focus, camera selection, and flash control. * * This class provides a complete barcode/QR code scanning solution with advanced * camera features including: * - Automatic camera selection (prioritizes back cameras with best focus capabilities) * - Tap-to-focus using contrast detection * - Manual focus distance control * - Flash/torch control * - Multiple camera switching * - iOS and Android support * - Multiple decoder backends (Native, ZBar) * * @example * ```typescript * import { WebBarcodeScanner, BarcodeDetectorType, BarcodeFormat } from '@your-package/barcode-scanner'; * * const scanner = new WebBarcodeScanner({ * container: document.getElementById('scanner-container')!, * debug: true, * detectorType: BarcodeDetectorType.AUTO, * formats: [BarcodeFormat.QR_CODE, BarcodeFormat.EAN_13], * onCodeScanned: (code, format) => { * console.log('Scanned:', code, 'Format:', format); * }, * onError: (error) => { * console.error('Error:', error.type, error.message); * } * }); * * await scanner.init(); * ``` */ declare class WebBarcodeScanner { private readonly container; private readonly onCodeScanned; private readonly onError; private readonly onLoadingStart; private readonly onLoadingEnd; private readonly debug; private readonly detectorType; private readonly formats; private video; private canvas; private ctx; private stream; private track; private decoder; private scanning; private focusing; private manualFocusMode; private useZoomHack; private decoding; private lastDecodeTime; private minDecodeInterval; private focusElements; private availableCameras; private currentCameraIndex; private focusDistanceCapability; constructor(options: WebBarcodeScannerOptions); private log; private warn; private error; private initializeDecoder; init(): Promise; private setupCamera; private selectBestCamera; private setupContinuousFocus; private setupEventListeners; private createFocusIndicator; private clearFocusIndicators; private handleTapToFocus; private searchBestFocus; private calculateContrast; private fallbackFocus; switchCamera(): Promise; toggleFlash(): Promise; getCameraInfo(): CameraInfo; setFocusDistance(distance: number): Promise; startScanning(): void; private scan; stop(): void; isScanning(): boolean; isFocusing(): boolean; getVideoElement(): HTMLVideoElement; getCanvasElement(): HTMLCanvasElement; getStream(): MediaStream | null; getTrack(): MediaStreamTrack | null; getDecoderType(): string; getSupportedFormats(): BarcodeFormat[]; } export { WebBarcodeScanner };