import type { MessageStatus, SimpleType } from '../x-chat'; import type { AbstractXRequestClass, XRequestOptions } from '../x-request'; export interface ChatProviderConfig { request: AbstractXRequestClass | (() => AbstractXRequestClass); } export interface TransformMessage { originMessage?: ChatMessage; chunk: Output; chunks: Output[]; status: MessageStatus; responseHeaders: Headers; } export default abstract class AbstractChatProvider { private _request; private _getMessagesFn; private _originalCallbacks?; get request(): AbstractXRequestClass; constructor(config: ChatProviderConfig); /** * 转换onRequest传入的参数,你可以和Provider实例化时request配置中的params进行合并或者额外处理 * @param requestParams 请求参数 * @param options 请求配置,从Provider实例化时request配置中来 */ abstract transformParams(requestParams: Partial, options: XRequestOptions): Input; /** * 将onRequest传入的参数转换为本地(用户发送)的ChatMessage,用于消息渲染 * @param requestParams onRequest传入的参数 */ abstract transformLocalMessage(requestParams: Partial): ChatMessage | ChatMessage[]; /** * 可在更新返回数据时对messages做转换,同时会更新到messages * @param info */ abstract transformMessage(info: TransformMessage): ChatMessage; getMessages(): ChatMessage[]; injectGetMessages(getMessages: () => ChatMessage[]): void; injectRequest({ onUpdate, onSuccess, onError, }: { onUpdate: (data: Output, responseHeaders: Headers) => any; onSuccess: (data: Output[], responseHeaders: Headers) => any; onError: (error: any, errorInfo?: any) => any; }): void; }