import { AiSmartFollowRowIdsTaskItem } from '../services/types';
import type { CnAiBizRequestConfig } from '../../../cn-ai-table/types';
export interface UseSmartFollowOptions {
    /** 表格 ID */
    tableId: string;
    /** 格式化后的表格数据（用于提交任务） */
    formattedTableData: Array<Record<string, string>>;
    /** 列定义 */
    columnDefinitions: Array<{
        dataIndex: string;
        title: string;
        format?: string;
        [key: string]: any;
    }>;
    /** 是否启用（页面进入时启用） */
    enabled?: boolean;
    /** 业务侧 AI 请求 URL 配置（仅智能跟单能力） */
    bizRequestConfig?: Pick<CnAiBizRequestConfig, 'smartFollow'>;
}
export interface SmartFollowRefreshOptions {
    /** 是否强制重刷（不使用缓存） */
    forcePrompt?: boolean;
    /** 是否重置会话上下文（清除 conversationId / respMessageId） */
    resetConversation?: boolean;
}
export interface UseSmartFollowReturn {
    /** 是否正在加载（有 runningTasks） */
    loading: boolean;
    /** 需要关注的行 ID 列表（needAttention: true 的行，增量累积） */
    needAttentionRowIds: string[];
    /** 已完成的任务（全量，用于其他场景） */
    finishedTasks: AiSmartFollowRowIdsTaskItem[];
    /** 失败的任务 */
    failedTasks: AiSmartFollowRowIdsTaskItem[];
    /** 运行中的任务 */
    runningTasks: AiSmartFollowRowIdsTaskItem[];
    /** 会话 ID（用于后续问答带有本次总结的记忆） */
    conversationId: string | null;
    /** 响应消息 ID */
    respMessageId: string | null;
    /** 刷新（重新提交任务），支持可选参数控制强制重刷和会话重置 */
    refresh: (options?: SmartFollowRefreshOptions) => void;
}
/**
 * 智能跟单 Hook（总览任务）
 *
 * 流程：
 * 1. 页面进入时提交跟单总览任务（submitOrderFollowBriefTask），获取 followOrderJobId
 * 2. 通过 queryFollowOrderTaskByJobId 轮询任务结果，每次传入 jobId 和上次的 lastChunkId 作为 startingId
 * 3. 接口增量返回需要跟单的内容（无需再全局聚合），根据 finished 字段判断是否继续轮询
 * 4. 轮询结束后一次性 flush 累积的 needAttentionRowIds 到 state
 *
 * 注意：
 * - 此 Hook 只负责判断哪些行需要跟单
 * - 单条跟单详情（jobOutput）需要在视图层通过 submitOrderFollowDetailTask 单独请求
 * - Hook 内部在轮询中会增量更新 needAttentionRowIds，但主表格是否展示由视图层
 *   （table-view.tsx 中的 deferredNeedAttentionRowIds）控制，轮询期间不回显、
 *   轮询结束后一次性写入。修改本 Hook 时无需关心表格高亮时机。
 */
export declare function useSmartFollow(options: UseSmartFollowOptions): UseSmartFollowReturn;
