import { ObservableReactValue } from '../utils/observers/ObservableReactValue'; import { IdType } from '../types'; import { MessageReasoningModel } from './MessageReasoningModel'; import { MessageText } from './MessageText'; import MessageAttachmentsModel from './MessageAttachmentsModel'; import { Attachment } from './AttachmentModel'; export declare enum ChatMessageOwner { USER = "user", ASSISTANT = "assistant" } export type RatingType = 'like' | 'dislike'; export type MessageFeedbackTagType = { id: IdType; label: string; value: string | number; }; export type TextContent = { type: 'text'; text: string; }; export type InternalMessageType = any; export type MessageUserContent = string | (Attachment | TextContent)[]; export type MessageAssistantContent = string | (TextContent)[]; export type Message = { id: IdType; parentId?: IdType; time?: number; rating?: RatingType; reasoning?: { title?: string; text?: string; timeSec?: number; }; } & ({ role: ChatMessageOwner.USER; content: MessageUserContent; } | { role: ChatMessageOwner.ASSISTANT; content: MessageAssistantContent; }); export declare class MessageModel { private _data; readonly viewerUniqueKey: string; /** * Text of message that supports "observation", should you need to update the component immediately upon variable modification, perfect for React.useSyncExternalStore. */ readonly texts: ObservableReactValue; readonly reasoningManager: MessageReasoningModel; readonly attachments: MessageAttachmentsModel; /** * An observable flag indicating the start/finish of message typing. */ typing: ObservableReactValue; photoswipeContainerId: string; constructor(_data: DM); get id(): IdType; get data(): DM; get parentId(): IdType | undefined; set parentId(val: IdType | undefined); get rating(): RatingType | undefined; set rating(value: RatingType | undefined); get time(): number | undefined; get role(): ChatMessageOwner; get isUser(): boolean; get isAssistant(): boolean; get content(): string | (Attachment | TextContent)[]; get text(): string; set text(value: string); setId: (id: string) => void; }