import { IMessage, SendContent } from "./index"; /** * 聊天 Hook 标准接口 * 所有自定义 Hook 必须实现这个接口 * * @example * // 使用内置标准协议 * * * * * @example * // 使用自定义 Hook (GraphQL) * function MyApp() { * const chatData = useMyGraphQLChat({ endpoint: '...' }); * return ( * * * * ); * } */ export interface ChatHookResult { /** 消息列表 */ messages: IMessage[]; /** 加载状态 */ loading: boolean; /** 当前会话ID */ currentSessionId: string; /** 开场白 */ prologue: string; /** 建议问题列表 */ suggestions: string[]; /** 应用信息 */ appInfo: any | null; /** 是否已初始化 */ initialized: boolean; /** 会话列表 */ sessionList: any[]; /** 会话分页信息 */ sessionPagination: { total: number; pageNum: number; pageSize: number; }; /** 发送消息 */ startChat: (content: SendContent) => void; /** 停止当前对话 */ stopChat: () => void; /** 清空当前会话消息 */ clearChat: () => void; /** 重新生成最后一条回复 */ reChat: () => void; /** 发送建议问题 */ suggestChat: (suggestion: string) => void; /** 确认函数调用 */ confirmFnCall: (response: any) => void; /** 删除会话 */ deleteSession: (id: string) => void; /** 更新会话标题 */ updateSession: (id: string, title: string) => void; /** 切换会话 */ setCurrentSession: (id: string) => void; /** 直接设置消息列表 */ setMessages: (msgs: IMessage[] | ((prev: IMessage[]) => IMessage[])) => void; /** 点赞/点踩消息(可选,自定义 Hook 可不实现) */ likeMessage?: (invocationId: string, isLike: 1 | -1, feedbackData?: { feedbackTags?: string; feedbackDescription?: string; }) => Promise; /** * 设置自定义业务参数 (stateDelta)(可选,自定义 Hook 可不实现) * 设置后每次发送消息时会自动携带该参数 * 传入 undefined 可清除已设置的参数 */ setStateDelta?: (delta: Record | undefined) => void; } /** * Hook 工厂函数类型 * * @example * const useMyCustomChat: ChatHookFactory = (options) => { * // 实现自定义协议逻辑 * return { * messages: [...], * loading: false, * startChat: (content) => { ... }, * // ... 其他方法 * }; * }; */ export type ChatHookFactory = (options: any) => ChatHookResult;