export type FacingMode = "user" | "environment";

export interface CameraConfig {
  el: string | HTMLDivElement;
  facingMode?: FacingMode;       // 前/后摄像头
  features?: string[];           // 功能列表 ["photo", "detection"]
  overlayImage?: HTMLImageElement | null; // 合影 PNG
}

export interface CameraFeature {
  name: string;
  init?(camera: CameraCore): Promise<void> | void;
  destroy?(): Promise<void> | void;
}

export interface CameraCore {
  getVideoEl(): HTMLVideoElement;
  getStream(): MediaStream | null;
}

export interface FaceRecognitionConfig {
  // 多长时间识别一次 单位 ms, 默认 3000ms
  duration?: number;
  // 识别人数 默认 不限
  maxResults?: number;
  // 是否在视频上绘制人脸检测框，默认 false
  drawDetections?: boolean;
  // 是否在视频上绘制人脸特征点，默认 false
  drawFaceLandmarks?: boolean;
  // 最小置信度，默认 0.6
  minConfidence?: number;
}

export interface SmileDetectionConfig {
  /** happy 概率阈值，默认 0.7 */
  smileThreshold?: number
  /** 触发冷却时间（ms），默认 30000，仅控制 DETECTED 边沿事件 */
  cooldownMs?: number
  /** face-api 模型文件目录 URI，默认使用 ROLLUP_BASE_STATIC/models */
  modelUri?: string
  /** 最大检测人脸数，默认 10 */
  maxFaces?: number
}

/** 微笑状态事件 payload */
export interface SmileStateData {
  /** 当前画面中"微笑"判定（happy >= smileThreshold）的人脸数 */
  smileCount: number
  /** 当前画面中检测到的总人脸数 */
  totalFaces: number
  /** 当前画面中所有人脸的最大"开心"置信度（0-1）；totalFaces 为 0 时为 0 */
  maxHappiness: number
  /** 时间戳 */
  timestamp: number
}