export interface Job {
  id: string;
  title: string;
  company: string;
  location: string;
  type: "full-time" | "part-time" | "contract" | "remote";
  workMode?: "onsite" | "hybrid" | "remote";
  salary?: string;
  description: string;
  requirements: string[];
  postedAt: string;
  isFeatured?: boolean;
}

export interface ApplicationWithDetails {
  id: string;
  userId: string;
  jobId: string;
  job?: {
    id: string;
    title: string;
    companyName: string;
    companyId: string;
  };
  status: "pending" | "reviewing" | "interview" | "rejected" | "accepted";
  createdAt: string;
  updatedAt: string;
}

export interface Application {
  id: string;
  jobId: string;
  jobTitle: string;
  company: string;
  status: "pending" | "reviewing" | "interview" | "rejected" | "accepted";
  appliedAt: string;
}

export interface User {
  id: string;
  name: string;
  email: string;
  role: "candidate" | "admin" | "company" | "superadmin";
  roles?: string[]; // Added to match backend response structure
  avatar?: string;
  avatarUrl?: string;
  area?: string;
  profileComplete?: number;
  companyId?: string;
}

export interface Notification {
  id: string;
  title: string;
  message: string;
  type: "info" | "success" | "warning" | "error";
  read: boolean;
  createdAt: string;
  userId: string;
  actionUrl?: string;
  actionLabel?: string;
}

export interface Stats {
  totalJobs: number;
  totalCandidates: number;
  newApplications: number;
  activeJobs: number;
}

export interface Message {
  id: string;
  fromUserId: string;
  toUserId: string;
  fromName: string;
  toName: string;
  subject: string;
  content: string;
  read: boolean;
  createdAt: string;
  threadId?: string;
}

export interface Company {
  id: string;
  name: string;
  logo?: string;
  description: string;
  website?: string;
  industry: string;
  size: string;
  founded?: string;
  location: string;
}

export interface CompanyProfile {
  id: string;
  name: string;
  email: string;
  phone: string;
  logo?: string;
  coverImage?: string;
  description: string;
  website?: string;
  linkedin?: string;
  instagram?: string;
  facebook?: string;
  industry: string;
  companySize: string;
  founded?: string;
  cnpj?: string;
  address: {
    street: string;
    number: string;
    complement?: string;
    neighborhood: string;
    city: string;
    state: string;
    zipCode: string;
  };
  benefits: string[];
  culture: string;
  activeJobs?: number;
}

export interface Candidate {
  id: string;
  name: string;
  email: string;
  phone: string;
  location: string;
  title: string;
  experience: string;
  avatar?: string;
  bio: string;
  skills: string[];
  applications: Application[];
}
