export type ScreenId = | "onboarding" | "dashboard" | "profile" | "teams" | "matches" | "stadiums" | "predictions" | "trivia" | "stickers" | "achievements" | "leaderboard" | "memories"; export type NavGroup = "primary" | "collection" | "play" | "social"; export interface NavItem { id: Exclude; label: string; shortLabel: string; icon: string; group: NavGroup; description: string; } export type Rarity = "common" | "uncommon" | "rare" | "epic" | "legendary"; export type TournamentStage = | "Group" | "Round of 32" | "Round of 16" | "Quarter-final" | "Semi-final" | "Third-place" | "Final"; export type MatchStatus = "completed" | "live" | "upcoming"; export type PredictionStatus = "open" | "locked" | "resolved"; export type PredictionResult = "pending" | "won" | "lost"; export type AchievementCategory = | "collection" | "journey" | "prediction" | "trivia" | "social" | "memory"; export type StickerCategory = "team" | "player" | "stadium" | "moment" | "mascot"; export type MemoryType = "match" | "stadium" | "prediction" | "sticker" | "social" | "trivia"; export type ChallengeCategory = | "collection" | "journey" | "prediction" | "trivia" | "sticker" | "memory"; export interface FanGoal { id: string; title: string; description: string; icon: string; screen: Exclude; } export interface FanProfile { id: string; displayName: string; handle: string; avatarEmoji: string; country: string; homeCity: string; favoriteTeamId: string; joinedAt: string; level: number; xp: number; nextLevelXp: number; streakDays: number; passportScore: number; supporterStyle: string; bio: string; selectedGoalIds: string[]; } export interface Team { id: string; name: string; shortName: string; flagEmoji: string; confederation: string; group: string; fifaRank: number; colors: { primary: string; secondary: string; }; collected: boolean; progress: number; story: string; starPlayer: string; matchesWatched: number; totalMatches: number; stickerCount: number; totalStickers: number; } export interface Stadium { id: string; name: string; city: string; country: string; capacity: number; icon: string; collected: boolean; progress: number; story: string; features: string[]; matchesHosted: number; } export interface Match { id: string; stage: TournamentStage; group?: string; dateTime: string; venueId: string; homeTeamId: string; awayTeamId: string; homeScore?: number; awayScore?: number; status: MatchStatus; watched: boolean; collected: boolean; predictionWindow: boolean; story: string; reward: string; tags: string[]; } export interface PredictionOption { id: string; label: string; helper: string; } export interface Prediction { id: string; type: "match" | "team" | "tournament" | "special"; title: string; description: string; status: PredictionStatus; result: PredictionResult; confidence: number; points: number; closesAt: string; options: PredictionOption[]; userPickOptionId?: string; featured?: boolean; } export interface TriviaQuestion { id: string; category: string; difficulty: "easy" | "medium" | "hard"; prompt: string; options: string[]; answerIndex: number; explanation: string; points: number; } export interface TriviaAnswer { selectedIndex: number; correct: boolean; answeredAt: string; } export interface Sticker { id: string; category: StickerCategory; title: string; subtitle: string; imageEmoji: string; rarity: Rarity; setName: string; obtained: boolean; duplicateCount: number; linkedEntityId?: string; } export interface Achievement { id: string; title: string; description: string; icon: string; category: AchievementCategory; progress: number; total: number; unlocked: boolean; claimed?: boolean; reward: string; rarity: Rarity; } export interface Challenge { id: string; title: string; description: string; category: ChallengeCategory; icon: string; progress: number; total: number; reward: string; screen: Exclude; expiresAt?: string; featured?: boolean; } export interface LeaderboardEntry { rank: number; displayName: string; handle: string; country: string; avatarEmoji: string; points: number; badges: number; streakDays: number; movement: number; isCurrentUser?: boolean; } export interface Memory { id: string; date: string; type: MemoryType; title: string; description: string; icon: string; teamIds: string[]; matchId?: string; mood: string; } export interface NewMemoryInput { type: MemoryType; title: string; description: string; icon: string; teamIds: string[]; matchId?: string; mood: string; } export interface PassportStats { totalScore: number; completionPercent: number; collectedTeams: number; totalTeams: number; watchedMatches: number; totalMatches: number; collectedStadiums: number; totalStadiums: number; obtainedStickers: number; totalStickers: number; unlockedAchievements: number; totalAchievements: number; predictionPoints: number; triviaAnswered: number; triviaCorrect: number; memoryCount: number; currentStreak: number; }