export interface Level { id: string image1Url: string image1Description: string | null image2Url: string image2Description: string | null answer: string punchline: string | null hint1: string | null hint2: string | null hint3: string | null sortOrder: number createdAt: Date updatedAt: Date } export interface LevelFormData { image1Url: string image1Description?: string image2Url: string image2Description?: string answer: string punchline?: string hint1?: string hint2?: string hint3?: string } export interface ReorderRequest { orders: { id: string; sortOrder: number }[] } export interface User { id: string email: string emailVerified: boolean name: string | null image: string | null createdAt: Date updatedAt: Date } export interface UserFormData { email: string password: string name?: string } export interface WxUser { id: string openid: string sessionKey: string | null nickname: string | null avatarUrl: string | null stamina: number staminaUpdatedAt: Date | null createdAt: Date updatedAt: Date completedLevelCount: number } export interface WxUserLevelProgress { id: string userId: string levelId: string completedAt: Date timeSpent: number level?: { id: string answer: string sortOrder: number } } export interface WxUserWithProgress extends WxUser { levelProgress: WxUserLevelProgress[] } export interface WxUserAssignableLevel { id: string answer: string sortOrder: number completed: boolean progressId: string | null completedAt: Date | null } export interface WxUserDetailResponse extends WxUser { assignedLevels: WxUserAssignableLevel[] }