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;
}