import type { GlobalSearchActiveTab, GlobalSearchMode, GlobalSearchProvider, GlobalSearchProviderKey, GlobalSearchStateMap } from '../types'; /** * useProviderSearch * * 职责: * 1. 按当前 keyword + activeTab 触发对应 Provider 的 search; * - All 模式:并发触发所有 enabled provider,每条结果独立写入状态(先到先显示); * - 单 Tab 模式:仅触发对应 provider; * 2. 用 AbortController 取消上一轮 in-flight 请求; * - 每个 provider 一个 controller,避免互相影响; * 3. 切换 keyword / activeTab / providers 时自动重新调度; * 4. 暴露 refresh() 主动重跑当前调度。 */ export interface UseProviderSearchOptions { keyword: string; activeTab: GlobalSearchActiveTab; providers: GlobalSearchProvider[]; /** All 模式下每个 provider 的 pageSize */ allModePageSize: number; /** 单 Tab 模式下的 pageSize */ singleModePageSize: number; /** * 当前模式(管理/业务);作为参数透传给 provider.search。 * 切换 mode 时会触发重新调度(同 keyword/activeTab)。 */ mode: GlobalSearchMode; /** * 实时 delta 原始项通知。调用方可据此刷新正在打开的详情。 */ onRealtimePatchItems?: (providerKey: GlobalSearchProviderKey, items: any[]) => void; } export interface UseProviderSearchResult { /** 各 provider 状态 */ stateMap: GlobalSearchStateMap; /** 手动重新跑当前调度 */ refresh: () => void; /** * 由自管取数的 provider(如管理模式订单表格)回写总数到对应 provider 状态, * 供分组头展示「共 N 条」/「View all」,从而省去 search() 里的「只取数量」请求。 */ reportProviderTotal: (key: GlobalSearchProviderKey, total: number) => void; } export declare function useProviderSearch(options: UseProviderSearchOptions): UseProviderSearchResult;