import { XAgent } from '../use-x-agent'; import { type SSEOutput, XStreamOptions } from '../x-stream'; import { XRequestParams } from '../x-request'; import type { AnyObject } from '../_util/type'; export type SimpleType = string | number | boolean | object; export type MessageStatus = 'local' | 'loading' | 'success' | 'error'; type RequestPlaceholderFn = (message: Message, info: { messages: Message[]; }) => Message; type RequestFallbackFn = (message: Message, info: { error: Error; messages: Message[]; }) => Message | Promise; type TransformMessageFn = (info: { originMessage?: Message; chunk: Output; chunks: Output[]; status: MessageStatus; }) => Message; type RequestParams = Omit & { message: Message; } & AnyObject; export interface XChatConfig { agent?: XAgent; defaultMessages?: DefaultMessageInfo[]; /** Convert agent message to bubble usage message type */ parser?: (message: AgentMessage) => BubbleMessage | BubbleMessage[]; requestPlaceholder?: AgentMessage | RequestPlaceholderFn; requestFallback?: AgentMessage | RequestFallbackFn; transformMessage?: TransformMessageFn; transformStream?: XStreamOptions['transformStream']; resolveAbortController?: (abortController: AbortController) => void; } export interface MessageInfo { id: number | string; message: Message; status: MessageStatus; } export type DefaultMessageInfo = Pick, 'message'> & Partial, 'message'>>; export type RequestResultObject = { message: Message | Message[]; status: MessageStatus; }; export type StandardRequestResult = Omit, 'message' | 'status'> & { message: Message; status?: MessageStatus; }; export default function useXChat, Output = SSEOutput>(config: XChatConfig): { readonly onRequest: (value: SimpleType | RequestParams | Input) => void; readonly messages: import("vue").Ref[], MessageInfo[]>; readonly parsedMessages: import("vue").ComputedRef[]>; readonly setMessages: (updater: MessageInfo[] | ((prev: MessageInfo[]) => MessageInfo[])) => void; }; export {};