export interface ParentScene {
  id: string
  name: string
  hint?: string
  needsLesson: boolean
  needsRepeat?: boolean
  needsEnPasses?: boolean
  needsShadowingSettings?: boolean
  needsLanguagePair: boolean
  needsDuration: boolean
  needsOnComplete: boolean
  audioPackage?: boolean
  kind?: string
  appId: string
  taskId: string
}

export interface ParentLesson {
  lessonId: string
  name: string
  scene: string
  hint?: string
  levelId?: string
  systemId?: string
  sentenceCount?: number
}

export interface IdiomNamed {
  id: string
  name: string
  nameEn?: string
}

export interface IdiomEnPass {
  speed: number
  repeat: number
}

export interface IdiomStory {
  id: string
  slug?: string
  systemId: string
  name: string
  nameEn?: string
  lessonId?: string
  levelId?: string
  sentenceCount?: number
  enabled?: boolean
}

export interface IdiomCatalog {
  version?: number
  defaults?: {
    cnRepeat?: number
    cnSpeed?: number
    enPasses?: IdiomEnPass[]
    shadowingLanguage?: string
    shadowingSpeed?: number
    listenRatio?: number
    sentenceCount?: number
  }
  levels: IdiomNamed[]
  systems: IdiomNamed[]
  stories: IdiomStory[]
}

export interface ParentLanguagePair {
  id: string
  name: string
  ready: boolean
}

export interface ParentTaskParams {
  lesson_id?: string
  lesson_name?: string
  lesson_name_en?: string
  repeat?: number
  cn_repeat?: number
  cn_speed?: number
  en_passes?: IdiomEnPass[]
  language?: 'cn' | 'en' | string
  speed?: number
  sentence_count?: number
  listen_ratio?: number
  language_pair?: string
  duration_minutes?: number
  on_complete?: 'chat' | 'power_off'
  announce?: boolean
}

export interface ParentSchedule {
  type?: 'daily' | 'hourly' | 'interval'
  time?: string
  weekdays?: number[]
  minute?: number
  every_minutes?: number
}

export interface ParentTask {
  id: string
  macAddress: string
  agentId: string
  runMode: 'immediate' | 'scheduled'
  scene: string
  appId: string
  taskId: string
  sceneName: string
  params: ParentTaskParams
  schedule: ParentSchedule
  enabled: boolean
  status: string
  createdAt?: string
  updatedAt?: string
}

export interface ParentTaskList {
  total: number
  list: ParentTask[]
}

export interface ParentDeviceStatus {
  macAddress: string
  online: boolean
}

export interface ParentTaskSave {
  macAddress: string
  agentId: string
  runMode: 'immediate' | 'scheduled'
  scene: string
  params?: ParentTaskParams
  schedule?: ParentSchedule
  enabled?: boolean
}

export type ParentHistoryKind = 'extensive' | 'shadowing' | 'chat' | string

export interface ParentHistoryItem {
  id: string
  scene: string
  sceneName: string
  kind: ParentHistoryKind
  appId: string
  taskId: string
  source: string
  status: string
  endReason: string
  startedAt?: number
  endedAt?: number
  durationMs?: number
  turnCount: number
}

export interface ParentHistoryList {
  total: number
  list: ParentHistoryItem[]
}

export interface ParentHistoryTurn {
  index: number
  expectedText: string
  asrText: string
  audioId: string | null
}

export interface ParentHistoryChat {
  createdAt: string
  chatType: 1 | 2 | 3
  content: string
  audioId: string | null
  macAddress?: string
}

export interface ParentHistoryDetail extends ParentHistoryItem {
  turns: ParentHistoryTurn[]
  chats: ParentHistoryChat[]
}
