import type { ChatRoleType as EliceChatRoleType } from "../apis"; export interface AiChatMessage { role: EliceChatRoleType; content: string; ts: number; } export interface AiChatLoadResponse { sessionId: string; messages: AiChatMessage[]; } export interface AiChatPromptOptions { systemInstruction?: string; } export interface AiChatPromptResponse { sessionId: string; responseMessageContent: string; } export type AiChatEvent = { type: 'reset'; payload: null; } | { type: 'clear'; payload: { sessionId: string; }; } | { type: 'load'; payload: { sessionId: string; messages: AiChatMessage[]; }; } | { type: 'comment'; payload: AiChatMessage; }; export interface AiChatEventListener { (event: { type: 'reset'; payload: null; }): void; (event: { type: 'clear'; payload: { sessionId: string; }; }): void; (event: { type: 'load'; payload: { sessionId: string; messages: AiChatMessage[]; }; }): void; (event: { type: 'comment'; payload: AiChatMessage; }): void; } export interface AiChatSubscription { unsubscribe: () => void; } export interface AiChatModel { load(sessionId: string): Promise; clear(sessionId: string): Promise; reset(): void; subscribe(callback: AiChatEventListener): AiChatSubscription; prompt(contentRequest: string, options?: AiChatPromptOptions): Promise; sessionId: string | null; messages: AiChatMessage[]; }