/**
 * CnAiChatShell 内部生命周期事件名称
 *
 * | 事件名               | 触发时机                             |
 * |---------------------|--------------------------------------|
 * | `submit_start`      | 用户发送消息，submit 调用前           |
 * | `submit_success`    | adapter.submit 成功返回后             |
 * | `submit_error`      | adapter.submit 抛出异常时             |
 * | `poll_tick`         | 每次轮询请求发出时                    |
 * | `poll_timeout`      | 轮询次数超过 maxCount 上限时          |
 * | `cancel`            | 用户主动点击停止生成按钮时             |
 * | `error`             | 轮询阶段出现未预期错误时              |
 * | `quick_reply_click` | 用户点击快捷回复按钮时                |
 */
export type ChatShellEventName = 'submit_start' | 'submit_success' | 'submit_error' | 'poll_tick' | 'poll_timeout' | 'cancel' | 'error' | 'init_start' | 'init_success' | 'init_error' | 'quick_reply_click' | 'history_load_start' | 'history_load_success' | 'history_load_error';
/**
 * CnAiChatShell 事件对象，通过 `onEvent` 回调传出
 *
 * @example
 * ```tsx
 * <CnAiChatShell
 *   onEvent={(event) => {
 *     if (event.name === 'submit_start') {
 *       armsLog({ hottag: 'chat.submit', prompt: event.payload?.prompt });
 *     }
 *   }}
 * />
 * ```
 */
export interface ChatShellEvent {
    /** 事件名称 */
    name: ChatShellEventName;
    /** 事件附加数据（因事件类型不同而异） */
    payload?: Record<string, unknown>;
}
