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;