export type VerificationStatus = "verified" | "pending" | "unverified";
export type ListingCondition = "new" | "like_new" | "good" | "fair" | "poor";

export interface VerificationItem {
  id: string;
  label: string;
  description: string;
  status: VerificationStatus;
  date?: string;
}

export interface Achievement {
  id: string;
  label: string;
  description: string;
  emoji: string;
  earned: boolean;
  earnedAt?: string;
  color: string;
  bgColor: string;
}

export interface TimelineMilestone {
  id: string;
  label: string;
  description: string;
  date: string;
  achieved: boolean;
}

export interface Review {
  id: string;
  buyerId: string;
  buyerName: string;
  buyerAvatar: string;
  rating: number;
  title: string;
  text: string;
  date: string;
  productId: string;
  productTitle: string;
  productImage: string;
  helpful: number;
  verified: boolean;
}

export interface RatingDistribution {
  5: number;
  4: number;
  3: number;
  2: number;
  1: number;
}

export interface SellerStats {
  activeListings: number;
  productsSold: number;
  followers: number;
  completedOrders: number;
  averageRating: number;
  positiveReviewsPercent: number;
  responseRate: number;
  yearsOnMarketplace: number;
  totalReviews: number;
  responseTime: string;
}

export interface SellerListing {
  id: string;
  slug: string;
  title: string;
  price: number;
  image: string;
  location: string;
  condition: ListingCondition;
  views: number;
  wishlisted: boolean;
  category: string;
}

export interface SellerProfile {
  id: string;
  slug: string;
  name: string;
  avatar: string;
  coverImage: string;
  bio: string;
  businessDescription: string;
  languages: string[];
  specialization: string[];
  experience: string;
  location: string;
  joinDate: string;
  stats: SellerStats;
  verifications: VerificationItem[];
  achievements: Achievement[];
  timeline: TimelineMilestone[];
  reviews: Review[];
  ratingDistribution: RatingDistribution;
  trustScore: number;
  listings: SellerListing[];
  isFollowing: boolean;
}

export interface NewReview {
  rating: number;
  title: string;
  text: string;
  productId: string;
}

export const REPORT_SELLER_REASONS = [
  "Fraud",
  "Fake Product",
  "Spam",
  "Abusive Behaviour",
  "Misleading Information",
  "Other",
] as const;

export const REPORT_LISTING_REASONS = [
  "Duplicate Listing",
  "Fake Product",
  "Prohibited Item",
  "Wrong Category",
  "Spam",
  "Other",
] as const;

export type ReportSellerReason = (typeof REPORT_SELLER_REASONS)[number];
export type ReportListingReason = (typeof REPORT_LISTING_REASONS)[number];
