import type { ComprehensiveSearchScannerData } from '../types'; /** * 原生扫码枪事件名,对齐宿主端约定(与 `@pisell/materials` 的 PisellFind 保持一致)。 */ export declare const SCAN_RESULT_EVENT = "nativeScanResult"; export interface UseScannerGunOptions { /** 是否开启扫码枪监听;false 时不订阅 / 自动 unsubscribe */ enabled?: boolean; /** * 扫到合法结果时触发(payload.data 为非空字符串才回调)。 * 通过 ref 持有最新引用,回调可随渲染变化而无需重订阅。 */ onScan?: (payload: ComprehensiveSearchScannerData) => void; } /** * 监听宿主扫码枪事件。 * * 复用 PisellFind 的实现要点: * 1. 用 ref 稳定 `getApp` 引用 —— 低代码环境下 engineContext 每次渲染可能返回新引用, * 若放进 effect 依赖会导致频繁 unsubscribe/subscribe(甚至漏事件),故 effect 依赖只保留 `enabled`。 * 2. 用 ref 持有最新 `onScan`,避免回调闭包 stale。 * 3. 非法 payload(无 data 或 data 为空串)直接忽略,避免误清空输入框 / 搜索条件。 * * @example * ```ts * useScannerGun({ * enabled: true, * onScan: (payload) => setKeyword(payload.data), * }); * ``` */ declare const useScannerGun: ({ enabled, onScan }: UseScannerGunOptions) => void; export default useScannerGun;