export type Page = 
  | 'home' 
  | 'search' 
  | 'report' 
  | 'login' 
  | 'register' 
  | 'dashboard' 
  | 'admin' 
  | 'analytics'
  | 'report-detail'
  | 'ai-detect'
  | 'profile'
  | 'how-it-works'
  | 'faq'
  | 'check-number';

export interface ScamCategoryType {
  id: string;
  name: string;
  slug: string;
  description: string | null;
  icon: string | null;
  color: string | null;
}

export interface ScamReportType {
  id: string;
  title: string;
  description: string;
  scamType: string;
  scammerPhone: string | null;
  bKashNumber: string | null;
  nagadNumber: string | null;
  facebookUrl: string | null;
  sellerName: string | null;
  amountLost: number;
  transactionDate: string | null;
  contactEmail: string | null;
  district: string | null;
  status: 'pending' | 'verified' | 'suspicious' | 'rejected';
  riskLevel: 'low' | 'medium' | 'high' | 'critical';
  riskScore: number;
  reportCount: number;
  views: number;
  upvotes: number;
  createdAt: string;
  updatedAt: string;
  reporterId: string;
  reporter?: { name: string | null; email: string };
  category?: ScamCategoryType;
  evidence?: EvidenceType[];
  linkedEntities?: LinkedEntityType[];
}

export interface EvidenceType {
  id: string;
  fileType: string;
  fileUrl: string;
  fileName: string;
  fileSize: number | null;
  createdAt: string;
}

export interface LinkedEntityType {
  id: string;
  entityType: 'phone' | 'bkash' | 'nagad' | 'facebook' | 'seller';
  entityValue: string;
  reportCount?: number;
}

export interface RiskScoreType {
  id: string;
  entityType: string;
  entityValue: string;
  riskLevel: 'low' | 'medium' | 'high' | 'critical';
  score: number;
  reportCount: number;
  evidenceCount: number;
  lastReported: string | null;
}

export interface SearchResult {
  entityValue: string;
  entityType: string;
  riskLevel: string;
  riskScore: number;
  reportCount: number;
  evidenceCount: number;
  lastReported: string | null;
  relatedReports: ScamReportType[];
}

export interface AnalyticsData {
  totalReports: number;
  totalAmount: number;
  verifiedReports: number;
  criticalEntities: number;
  topCategories: { name: string; count: number; slug: string }[];
  topDistricts: { district: string; count: number }[];
  dailyTrends: { date: string; count: number; amount: number }[];
  riskDistribution: { low: number; medium: number; high: number; critical: number };
}

export interface UserType {
  id: string;
  email: string;
  name: string | null;
  role: 'user' | 'admin';
  image: string | null;
  banned: boolean;
}
