export type Rarity = "common" | "rare" | "epic" | "legendary";

export type Position =
  | "P"
  | "C"
  | "1B"
  | "2B"
  | "3B"
  | "SS"
  | "LF"
  | "CF"
  | "RF"
  | "DH"
  | "UTIL";

export type Profile = {
  userId: string;
  handle: string;
  displayName: string;
  bio: string;
  avatarUrl: string | null;
  createdAt: string;
  cardCount?: number;
  followerCount?: number;
  followingCount?: number;
  isFollowing?: boolean;
};

export type CardItem = {
  id: string;
  ownerId: string;
  playerName: string;
  team: string;
  position: string;
  seasonYear: number;
  rarity: Rarity;
  battingAvg: string | null;
  homeRuns: number | null;
  rbi: number | null;
  era: string | null;
  wins: number | null;
  strikeouts: number | null;
  imageData: string | null;
  description: string;
  forTrade: boolean;
  createdAt: string;
  ownerHandle?: string;
  ownerDisplayName?: string;
  ownerAvatarUrl?: string | null;
};

export type PostItem = {
  id: string;
  userId: string;
  content: string;
  cardId: string | null;
  createdAt: string;
  authorHandle: string;
  authorDisplayName: string;
  authorAvatarUrl: string | null;
  likeCount: number;
  commentCount: number;
  likedByMe: boolean;
  card?: CardItem | null;
};

export type CommentItem = {
  id: string;
  postId: string;
  userId: string;
  content: string;
  createdAt: string;
  authorHandle: string;
  authorDisplayName: string;
  authorAvatarUrl: string | null;
};

export type TradeStatus = "pending" | "accepted" | "declined" | "cancelled";

export type TradeItem = {
  id: string;
  fromUserId: string;
  toUserId: string;
  offeredCardId: string;
  requestedCardId: string;
  message: string;
  status: TradeStatus;
  createdAt: string;
  resolvedAt: string | null;
  fromHandle: string;
  fromDisplayName: string;
  toHandle: string;
  toDisplayName: string;
  offeredCard: CardItem;
  requestedCard: CardItem;
};

export const TEAMS = [
  "Yankees",
  "Red Sox",
  "Dodgers",
  "Giants",
  "Cubs",
  "White Sox",
  "Mets",
  "Phillies",
  "Braves",
  "Cardinals",
  "Astros",
  "Rangers",
  "Mariners",
  "Padres",
  "Brewers",
  "Guardians",
  "Twins",
  "Tigers",
  "Royals",
  "Orioles",
  "Rays",
  "Blue Jays",
  "Angels",
  "Athletics",
  "Diamondbacks",
  "Rockies",
  "Marlins",
  "Nationals",
  "Pirates",
  "Reds",
] as const;

export const POSITIONS: Position[] = [
  "P",
  "C",
  "1B",
  "2B",
  "3B",
  "SS",
  "LF",
  "CF",
  "RF",
  "DH",
  "UTIL",
];

export const RARITIES: Rarity[] = ["common", "rare", "epic", "legendary"];

export const TEAM_COLORS: Record<string, { primary: string; secondary: string }> = {
  Yankees: { primary: "#0C2340", secondary: "#C4CED4" },
  "Red Sox": { primary: "#BD3039", secondary: "#0C2340" },
  Dodgers: { primary: "#005A9C", secondary: "#EF3E42" },
  Giants: { primary: "#FD5A1E", secondary: "#27251F" },
  Cubs: { primary: "#0E3386", secondary: "#CC3433" },
  "White Sox": { primary: "#27251F", secondary: "#C4CED4" },
  Mets: { primary: "#002D72", secondary: "#FF5910" },
  Phillies: { primary: "#E81828", secondary: "#002D72" },
  Braves: { primary: "#CE1141", secondary: "#13274F" },
  Cardinals: { primary: "#C41E3A", secondary: "#0C2340" },
  Astros: { primary: "#002D62", secondary: "#EB6E1F" },
  Rangers: { primary: "#003278", secondary: "#C0111F" },
  Mariners: { primary: "#0C2C56", secondary: "#005C5C" },
  Padres: { primary: "#2F241D", secondary: "#FFC425" },
  Brewers: { primary: "#12284B", secondary: "#FFC52F" },
  Guardians: { primary: "#00385D", secondary: "#E50022" },
  Twins: { primary: "#002B5C", secondary: "#D31145" },
  Tigers: { primary: "#0C2340", secondary: "#FA4616" },
  Royals: { primary: "#004687", secondary: "#BD9B60" },
  Orioles: { primary: "#DF4601", secondary: "#000000" },
  Rays: { primary: "#092C5C", secondary: "#8FBCE6" },
  "Blue Jays": { primary: "#134A8E", secondary: "#1D2D5C" },
  Angels: { primary: "#BA0021", secondary: "#003263" },
  Athletics: { primary: "#003831", secondary: "#EFB21E" },
  Diamondbacks: { primary: "#A71930", secondary: "#E3D4AD" },
  Rockies: { primary: "#33006F", secondary: "#C4CED4" },
  Marlins: { primary: "#00A3E0", secondary: "#EF3340" },
  Nationals: { primary: "#AB0003", secondary: "#14225A" },
  Pirates: { primary: "#27251F", secondary: "#FDB827" },
  Reds: { primary: "#C6011F", secondary: "#000000" },
};
