import {
	type EmitterSubscription,
	NativeEventEmitter,
	NativeModules,
} from "react-native";

const { ZebraScanner } = NativeModules;

const scannerEmitter = new NativeEventEmitter(ZebraScanner);

export type ZebraScanResult = {
	data: string;
	labelType?: string;
	source?: string;
	timestamp: number;
};

export const zebraScanner = {
	startListening() {
		ZebraScanner.startListening();
	},

	stopListening() {
		ZebraScanner.stopListening();
	},

	triggerScan() {
		ZebraScanner.triggerScan();
	},

	ensureProfile() {
		ZebraScanner.ensureProfile();
	},

	addScanListener(
		callback: (scan: ZebraScanResult) => void,
	): EmitterSubscription {
		return scannerEmitter.addListener("barcodeScanned", callback);
	},
	disableScannerInput() {
		ZebraScanner.disableScannerInput();
	},
};
