/**
 * 事件枚举
 * 定义 JSSDK 中所有可触发的事件类型
 */
export enum EmitEvent {
  // ==================== Human 对象生命周期事件 ====================
  
  /** Human 对象加载完成，可以开始使用 */
  HUMAN_READY = 'human.ready',
  
  /** Human 对象发生错误 */
  HUMAN_ERROR = 'human.error',
  
  /** Human 对象触发指令动作 */
  HUMAN_ACTION_PENDING = 'human.action.pending',
  
  /** Human 对象加载进度更新 */
  HUMAN_LOAD_PROGRESS = 'human.load.progress',
  
  /** 核心模型包加载完成 */
  CORE_BUNDLES_LOADED = 'core.bundles.loaded',
  
  // ==================== 音频播放事件 ====================
  
  /** 音频开始播放 */
  AUDIO_PLAY = 'audio.play',
  
  /** 音频暂停播放 */
  AUDIO_PAUSE = 'audio.pause',
  
  /** 音频静音/取消静音 */
  AUDIO_MUTE = 'audio.mute',
  
  // ==================== 录音相关事件 ====================
  
  /** 录音器消息 */
  RECORDER_MESSAGE = 'recorder.message',
  
  /** 录音开始 */
  RECORDER_START = 'recorder.start',
  
  /** 录音结束 */
  RECORDER_STOP = 'recorder.stop',
  
  /** 发送录音数据到 ASR 服务 */
  RECORDER_SENDING = 'recorder.sending',
  
  // ==================== 语音交互事件 ====================
  
  /** 语音交互进入睡眠模式 */
  VOICE_SLEEP = 'voice.sleep',
  
  /** 语音交互被唤醒 */
  VOICE_WAKE = 'voice.wake',
  
  /** 语音交互被打断 */
  VOICE_INTERRUPT = 'voice.interrupt',

  /** TTS 播放期间用户打断（Barge-in） */
  VOICE_BARGE_IN = 'voice.barge_in',

  /** 语音转文本结果 */
  VOICE2TEXT = 'voice2text',
  
  /** 唤醒状态下开始录音 */
  WAKE_RECORDER_START = 'wake.record.start',
  
  /** 唤醒状态下结束录音 */
  WAKE_RECORDER_STOP = 'wake.record.stop',
  
  // ==================== 语音交互模式事件 ====================
  
  /** 语音交互模式已开启 */
  VOICE_INTERACTION_OPENED = 'voice.interaction.opened',
  
  /** 语音交互模式已关闭 */
  VOICE_INTERACTION_CLOSED = 'voice.interaction.closed',
  
  /** 语音交互被唤醒（检测到唤醒词） */
  VOICE_INTERACTION_WAKEUP = 'voice.interaction.wakeup',
  
  /** 语音交互进入休眠（检测到退出词或超时） */
  VOICE_INTERACTION_SLEEP = 'voice.interaction.sleep',

  /** 唤醒确认语播报 */
  VOICE_INTERACTION_WAKE_CONFIRM = 'voice.interaction.wake.confirm',

  /** 优雅退出提示语播报 */
  VOICE_INTERACTION_EXIT_PROMPT = 'voice.interaction.exit.prompt',

  /** 退出提示语播完后进入等待态（显示推荐问题，等待用户再次唤醒） */
  VOICE_INTERACTION_POST_EXIT_IDLE = 'voice.interaction.post_exit_idle',

  /** 语音交互被打断（检测到打断词） */
  VOICE_INTERACTION_INTERRUPT = 'voice.interaction.interrupt',

  /** 显示打断提示（SPEAKING 状态 2 秒后） */
  VOICE_INTERRUPT_HINT_SHOW = 'voice.interrupt.hint.show',

  /** 隐藏打断提示 */
  VOICE_INTERRUPT_HINT_HIDE = 'voice.interrupt.hint.hide',

  /** 语音打断成功（用户说出打断词） */
  VOICE_INTERRUPTED = 'voice.interrupted',

  /** 开始采集音频 */
  VOICE_INTERACTION_AUDIO_START = 'voice.interaction.audio.start',
  
  /** 停止采集音频 */
  VOICE_INTERACTION_AUDIO_STOP = 'voice.interaction.audio.stop',
  
  /** 语音播放开始 */
  VOICE_INTERACTION_PLAY_START = 'voice.interaction.play.start',
  
  /** 语音播放结束 */
  VOICE_INTERACTION_PLAY_END = 'voice.interaction.play.end',
  
  /** WebRTC 连接状态变化 */
  VOICE_INTERACTION_WEBRTC_STATE = 'voice.interaction.webrtc.state',

  /** WebRTC TTS 音频开始播放（用于回声抑制） */
  WEBRTC_TTS_PLAY_START = 'webrtc.tts.play.start',

  /** WebRTC TTS 音频结束播放（用于回声抑制） */
  WEBRTC_TTS_PLAY_END = 'webrtc.tts.play.end',

  // ==================== 对话和 TTS 事件 ====================
  
  /** 对话消息的 BlendShapes 动画开始播放 */
  CHAT_MESSAGE_BS_PLAY_START = 'chat.message.bs.play.start',
  
  /** 对话消息的 BlendShapes 动画结束播放 */
  CHAT_MESSAGE_BS_PLAY_END = 'chat.message.bs.play.end',
  
  // ==================== Agent 工具交互事件 ====================

  /** 收到服务端工具执行结果 (CMD 1040): quiz card, reward animation, etc. */
  TOOL_RESULT = 'tool.result',

  // ==================== Gateway 服务事件 ====================

  /** Gateway WebSocket 连接成功 */
  GATEWAY_CONNECTED = 'gateway.connected',
  
  /** Gateway WebSocket 断开连接 */
  GATEWAY_DISCONNECTED = 'gateway.disconnected',
  
  /** Gateway WebSocket 正在重连 */
  GATEWAY_RECONNECTING = 'gateway.reconnecting',
  
  /** Gateway 接收到消息 */
  GATEWAY_MESSAGE = 'gateway.message',
  
  /** Gateway 发生错误 */
  GATEWAY_ERROR = 'gateway.error',

  /** Gateway 主动推送会话状态（CMD 1030）。例如播完退出语后推送 SLEEPING，reason=graceful_exit */
  GATEWAY_STATE_PUSH = 'gateway.state.push',
  
  // ==================== 摄像头相关事件 ====================
  
  /** 摄像头人体检测结果 */
  CAMERA_PERSON_TEST_RESULT = 'camera.person.test.result',
  
  /** 摄像头人脸识别结果 */
  CAMERA_FACE_RECOGNITION_RESULT = 'camera.face.recognition.result',

  /** 摄像头表情检测：检测到微笑（边沿事件，受 cooldown 控制） */
  EXPRESSION_SMILE_DETECTED = 'expression.smile.detected',

  /** 摄像头表情检测：微笑状态变化（状态流，smileCount>0 时每秒 heartbeat） */
  EXPRESSION_SMILE_STATE_CHANGED = 'expression.smile.state_changed',

  // ==================== 渲染相关事件 ====================
  
  /** 渲染服务初始化完成 */
  RENDER_READY = 'render.ready',
  
  /** 渲染服务发生错误 */
  RENDER_ERROR = 'render.error',
  
  /** 模型加载进度更新 */
  MODEL_LOAD_PROGRESS = 'model.load.progress',
  
  /** 模型加载完成 */
  MODEL_LOADED = 'model.loaded',
  
  /** 模型加载失败 */
  MODEL_LOAD_FAILED = 'model.load.failed',
  
  /** 动画播放开始 */
  ANIMATION_START = 'animation.start',
  
  /** 动画播放结束 */
  ANIMATION_END = 'animation.end',

  ERROR = 'error'
}