/// <reference types="react" />
export interface ComprehensiveSearchProps {
    dataSource?: any;
    isShowScanner?: boolean;
    isShowCamera?: boolean;
    isShowNFC?: boolean;
    isShowNewButton?: boolean;
    newButtonAlign?: 'left' | 'center' | 'right';
    newButtonText?: string;
    newDialogDataSource?: any;
    renderType?: 'modal' | 'drawer' | 'portal' | '';
    containerProps?: Record<string, any>;
    isShowSearch?: boolean;
    isShowSearchCamera?: boolean;
    searchIcon?: string;
    placeholder?: string;
    isShowSearchButton?: boolean;
    resultDisplay?: 'list' | 'grid';
    resultSort?: 'asc' | 'desc' | 'custom';
    sortBy?: string;
    style?: React.CSSProperties;
    loading?: boolean;
    /**
     * 搜索关键字（受控 / 非受控开关）。
     * - 传入（!== undefined）→ **受控**：输入框始终显示该值，需配合 `onKeywordChange` 回写。
     * - 不传（undefined）→ **非受控**：组件内部自管显示，输入与扫码值都会自动回填输入框，
     *   宿主仅通过 `onSearch` / `onScannerData` 获取结果即可。
     */
    keyword?: string;
    /**
     * 是否开启扫码枪监听
     * 通过宿主 `app.pubsub.subscribe('nativeScanResult', ...)` 订阅；
     * 切换 false 时会 unsubscribe，停止接收事件。
     * @default false
     */
    enableScanner?: boolean;
    /**
     * 关键字变化回调（输入 / 扫码触发）。
     * 受控用法下必传，用于把最新值回写到 `keyword`；非受控用法下可选。
     */
    onKeywordChange?: (value: string) => void;
    onSearch?: (value: string) => void;
    onAdd?: () => void;
    onDataChange?: (data: any) => void;
    onRowClick?: (record: any, index: any) => void;
    /**
     * 扫码枪回调
     * 监听到扫码枪事件时触发，参数为原始 payload 对象（含 `data` 字段）。
     * 仅在 `enableScanner` 为 true 时才会触发。
     */
    onScannerData?: (data: ComprehensiveSearchScannerData) => void;
}
/**
 * 扫码枪回传数据（对齐宿主 ScanResultPayload，与 PisellFind 一致）
 * - code: 条码标识（如条码格式 / 业务字段）
 * - data: 扫描得到的字符串值（写入输入框的内容）
 */
export interface ComprehensiveSearchScannerData {
    code: string;
    data: string;
}
export interface SearchResult {
    [key: string]: any;
}
