export interface SteamCollection {
  id: number
  steam_id: string
  title: string
  description: string
  author_name: string
  total_items: number
  unique_visitors: number
  current_favorites: number
  created_at: string
  updated_at: string
}

export interface SteamCollectionItem {
  id: number
  steam_item_id: string
  title: string
  author_name: string
  description: string
  tags: string[]
  order_index: number
  collection: number
  created_at: string
  updated_at: string
}

export interface OpusMagnumData {
  puzzle: string
  cost: string
  cycles: string
  area: string
}

export interface SubmissionFile {
  file: File
  preview: string
  type: 'image' | 'gif'
  ocrData?: OpusMagnumData
  ocrProcessing?: boolean
  ocrError?: string
  original_filename?: string
}

export interface PuzzleResponse {
  id?: number
  puzzle: number | SteamCollectionItem
  puzzle_name: string
  cost?: string
  cycles?: string
  area?: string
  needs_manual_validation?: boolean
  ocr_confidence_score?: number
  validated_cost?: string
  validated_cycles?: string
  validated_area?: string
  final_cost?: string
  final_cycles?: string
  final_area?: string
  files?: SubmissionFile[]
  created_at?: string
  updated_at?: string
}

export interface Submission {
  id?: string
  user?: number | null
  responses: PuzzleResponse[]
  notes?: string
  is_validated?: boolean
  validated_by?: number | null
  validated_at?: string | null
  total_responses?: number
  needs_validation?: boolean
  created_at?: string
  updated_at?: string
}

export interface UserInfo {
  id?: number
  username?: string
  first_name?: string
  last_name?: string
  email?: string
  is_authenticated: boolean
  is_staff: boolean
  is_superuser: boolean
  cas_groups?: string[]
}
