/**
 * Prediction Card DTO
 *
 * Typed data structure for rendering match prediction cards
 * and generating social media captions.
 */

export interface TopPick {
  /** Market name in Turkish, e.g. "Üst 2.5 Gol" */
  market: string;
  /** Market name in English, e.g. "Over 2.5" */
  marketEn: string;
  /** Pick label, e.g. "Üst" */
  pick: string;
  /** Confidence 0-100 */
  confidence: number;
  /** Odds value */
  odds: number;
}

export interface PredictionCardDto {
  // ─── Match Info ───
  matchId: string;
  sport: "football" | "basketball";
  homeTeam: string;
  awayTeam: string;
  homeLogo: string;
  awayLogo: string;
  leagueName: string;
  leagueLogo?: string;
  countryName?: string;
  countryFlag?: string;
  /** Formatted date, e.g. "01 Mar 2026 - 21:00" */
  matchDate: string;

  // ─── Score Predictions ───
  /** HT score, e.g. "1-0" */
  htScore: string;
  /** FT score, e.g. "2-1" */
  ftScore: string;
  /** Overall confidence 0-100 */
  scoreConfidence: number;

  // ─── Top 3 Best Bets ───
  topPicks: TopPick[];

  // ─── Risk ───
  riskLevel: "LOW" | "MEDIUM" | "HIGH" | "EXTREME";

  // ─── Raw prediction JSON (for Gemini caption) ───
  rawPrediction?: Record<string, any>;
}

export interface SocialPostResult {
  matchId: string;
  imagePath: string;
  caption: string;
  twitterPostId?: string;
  facebookPostId?: string;
  instagramPostId?: string;
  postedAt: Date;
  errors?: string[];
}
