import type { PrioritizedContribution } from '@difizen/magent-core';
import { Syringe } from '@difizen/mana-app';
import type { DefaultChatMessageItemModel } from './chat-message-item-model.js';
import type { DefaultChatMessageModel } from './chat-message-model.js';
import type { DefaultChatMessageSummary } from './chat-messasge-summary.js';
import type { DefaultConversationModel } from './conversation-model.js';
export interface IChatMessageSender {
    id?: string;
    type: 'HUMAN' | 'AI';
    avatar?: string;
}
export interface IChatMessageItem {
    /**
     * 唯一标识
     */
    id?: string;
    sender: IChatMessageSender;
    content: string;
    created?: string;
    modified?: string;
    [key: string]: any;
}
export interface IChatMessageCreate {
    id: string;
    input: string;
    stream?: boolean;
    [key: string]: any;
}
export interface IChatMessageRecord {
    id: string;
    created?: string;
    messages: IChatMessageItem[];
    modified?: string;
    token?: any;
    stream?: boolean;
    [key: string]: any;
}
export interface IChatMessage {
    id?: string;
    created?: string;
    input?: string;
    messages?: IChatMessageItem[];
    modified?: string;
    stream?: boolean;
    token?: any;
    [key: string]: any;
}
export declare const ChatProtocol: {
    isChatMessageCreate: (data: IChatMessage) => data is IChatMessageCreate;
    isChatMessageRecord: (data: IChatMessage) => data is IChatMessageRecord;
};
export interface IConversation {
    id?: string;
    created?: string;
    modified?: string;
    messages?: IChatMessage[];
    [key: string]: any;
}
export type BaseChatMessageItemModel = DefaultChatMessageItemModel;
export type BaseChatMessageModel = DefaultChatMessageModel;
export type BaseConversationModel = DefaultConversationModel;
export type BaseChatMessageSummary = DefaultChatMessageSummary;
export declare enum QuestionState {
    SENDING = "sending",
    VALIDATING = "validating",
    FAIL = "fail",
    SUCCESS = "success"
}
export declare enum AnswerState {
    WAITING = "waiting",
    RECEIVING = "receiving",
    FAIL = "fail",
    SUCCESS = "success"
}
export type ChatMessageItemContribution<O extends IChatMessageItem = IChatMessageItem, T extends BaseChatMessageItemModel = BaseChatMessageItemModel> = PrioritizedContribution<O, T>;
export declare const ChatMessageItemContribution: Syringe.DefinedToken;
export interface IChatEvent {
    type: string;
    [key: string]: any;
}
export interface ChatEventChunk extends IChatEvent {
    output: string;
    type: 'chunk';
    msgId?: string;
    [key: string]: any;
}
export interface ErrorMessage {
    message: string;
}
export interface ChatEventError extends IChatEvent, ErrorMessage {
    type: 'error';
}
export interface ChatEventDone extends IChatEvent {
    type: 'done';
}
export interface ChatEventResult extends IChatEvent {
    output: string;
    type: 'result';
}
export declare const ChatEvent: {
    isChunk: (event: IChatEvent) => event is ChatEventChunk;
    isError: (event: IChatEvent) => event is ChatEventError;
    isResult: (e: IChatEvent) => e is ChatEventResult;
    isDone: (event: IChatEvent) => event is ChatEventDone;
    format: (e: string, data: any) => ChatEventResult | ChatEventChunk | ChatEventError | ChatEventDone;
};
export interface ConversationOption extends IConversation {
    id: string;
}
export declare const ConversationOption: {
    is(data?: Record<string, any>): data is ConversationOption;
    isFull(data?: Record<string, any>): data is ConversationOption;
};
//# sourceMappingURL=protocol.d.ts.map