// Contributor leaderboard types
export type AchievementLevel = 'newcomer' | 'bronze' | 'silver' | 'gold' | 'platinum' | 'legend';

export type SpecialBadge = 
  | 'park_explorer'
  | 'ride_master'
  | 'photographer'
  | 'critic'
  | 'editor'
  | 'completionist'
  | 'veteran'
  | 'top_contributor';

export interface ContributorStats {
  parks_added: number;
  rides_added: number;
  companies_added: number;
  models_added: number;
  photos_added: number;
  reviews_added: number;
  edits_made: number;
}

export interface TotalContributorStats {
  total_parks: number;
  total_rides: number;
  total_photos: number;
  total_reviews: number;
  total_edits: number;
}

export interface LeaderboardContributor {
  rank: number;
  user_id: string;
  username: string;
  display_name: string | null;
  avatar_url: string | null;
  join_date: string;
  contribution_score: number;
  total_score: number;
  achievement_level: AchievementLevel;
  special_badges: SpecialBadge[];
  stats: ContributorStats;
  total_stats: TotalContributorStats;
}

export interface LeaderboardData {
  contributors: LeaderboardContributor[];
  total_contributors: number;
  generated_at: string;
}

export type TimePeriod = 'all_time' | 'month' | 'week';
