/**
 * 聊天消息的发送方角色
 * - `user`：用户发送的消息
 * - `assistant`：AI 助手生成的消息
 */
export type ChatMessageRole = 'user' | 'assistant';
/**
 * 单条消息的生命周期状态
 * - `pending`：已创建占位，等待后端响应（展示"正在生成回复…"）
 * - `generating`：正在轮询，内容持续更新中（启用逐字显示效果）
 * - `done`：生成完成，内容已稳定
 * - `error`：生成失败或轮询超时
 */
export type ChatMessageStatus = 'pending' | 'generating' | 'done' | 'error';
/**
 * 快捷回复按钮数据
 *
 * 通常由 adapter.query 在生成完成后返回，
 * 挂载到 assistant 消息的 `quickReplies` 字段，
 * 用户点击后自动触发 handleSubmit 发送对应 prompt。
 */
export interface ChatQuickReply {
    /** 唯一标识 */
    id: string;
    /** 按钮文案 */
    label: string;
    /** 点击后实际发送的 prompt，不传则使用 label */
    prompt?: string;
    /** 透传业务/埋点数据 */
    payload?: Record<string, unknown>;
    /** 是否禁用 */
    disabled?: boolean;
}
/**
 * 单条聊天消息的数据结构
 */
export interface ChatMessage {
    /** 消息唯一标识（用于 React key 和轮询时定位占位消息） */
    id: string;
    /** 消息发送方角色 */
    role: ChatMessageRole;
    /** 消息文本内容（支持 Markdown 格式） */
    content: string;
    /**
     * 消息当前状态
     * @default 'done'
     */
    status?: ChatMessageStatus;
    /** 业务扩展元数据，可存放任意 KV（不参与渲染逻辑） */
    meta?: Record<string, unknown>;
    /** 消息创建时间戳（ms），可用于排序或展示时间标签 */
    time?: number;
    /** 快捷回复按钮列表，仅 assistant 消息有效 */
    quickReplies?: ChatQuickReply[];
    /**
     * 快捷回复是否已被消费（点击后置为 true，UI 不再展示按钮）
     * @default false
     */
    quickRepliesConsumed?: boolean;
}
/**
 * 默认消息气泡组件的 Props（CnAiChatShell 内部使用）
 */
export interface ChatMessageItemProps {
    /** 消息数据 */
    message: ChatMessage;
    /**
     * 是否正在生成中（启用逐字显示效果）
     * @default false
     */
    isGenerating?: boolean;
}
