export interface StormTier {
  category: number; // 1-5
  label: string;
  color: string;
  bgColor: string;
}

export function getStormTier(confidence: number, valueRating: number): StormTier {
  if (confidence >= 0.80 && valueRating >= 8) {
    return { category: 5, label: 'Cat 5', color: '#ef4444', bgColor: 'rgba(239,68,68,0.12)' };
  }
  if (confidence >= 0.70 && valueRating >= 7) {
    return { category: 4, label: 'Cat 4', color: '#f97316', bgColor: 'rgba(249,115,22,0.12)' };
  }
  if (confidence >= 0.60 && valueRating >= 5) {
    return { category: 3, label: 'Cat 3', color: '#f59e0b', bgColor: 'rgba(245,158,11,0.12)' };
  }
  if (confidence >= 0.50) {
    return { category: 2, label: 'Cat 2', color: '#4a9eff', bgColor: 'rgba(74,158,255,0.12)' };
  }
  return { category: 1, label: 'Cat 1', color: '#8892a4', bgColor: 'rgba(136,146,164,0.12)' };
}

export function calcEdge(confidence: number): number {
  return Math.round((confidence - 0.50) * 1000) / 10;
}

export function calcImpliedProb(moneyline: number): number {
  if (moneyline > 0) {
    return 100 / (moneyline + 100);
  }
  return Math.abs(moneyline) / (Math.abs(moneyline) + 100);
}

/**
 * Get storm tier from composite confidence (no valueRating needed).
 * Used when composite score is available.
 */
export function getStormTierFromComposite(compositeConfidence: number): StormTier {
  if (compositeConfidence >= 0.80) {
    return { category: 5, label: 'Cat 5', color: '#ef4444', bgColor: 'rgba(239,68,68,0.12)' };
  }
  if (compositeConfidence >= 0.70) {
    return { category: 4, label: 'Cat 4', color: '#f97316', bgColor: 'rgba(249,115,22,0.12)' };
  }
  if (compositeConfidence >= 0.60) {
    return { category: 3, label: 'Cat 3', color: '#f59e0b', bgColor: 'rgba(245,158,11,0.12)' };
  }
  if (compositeConfidence >= 0.50) {
    return { category: 2, label: 'Cat 2', color: '#4a9eff', bgColor: 'rgba(74,158,255,0.12)' };
  }
  return { category: 1, label: 'Cat 1', color: '#8892a4', bgColor: 'rgba(136,146,164,0.12)' };
}
