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;
