export interface Student {
  id: number;
  name: string;
  email: string;
  totalCredits: number;
  enrollments: Enrollment[];
}

export interface Enrollment {
  id: number;
  subjectId: number;
  subjectName: string;
  credits: number;
  professorName: string;
  enrolledAt: string;
}

export interface Subject {
  id: number;
  name: string;
  credits: number;
  professorId: number;
}

export interface AvailableSubject {
  id: number;
  name: string;
  credits: number;
  professorId: number;
  professorName: string;
  isAvailable: boolean;
  unavailableReason?: string;
}

export interface ClassmateStudent {
  studentId: number;
  name: string;
}

export interface Classmate {
  subjectId: number;
  subjectName: string;
  classmates: ClassmateStudent[];
}

export interface CreateStudentInput {
  name: string;
  email: string;
}

export interface UpdateStudentInput {
  name?: string;
  email?: string;
}

export interface EnrollInput {
  studentId: number;
  subjectId: number;
}

export interface StudentPayload {
  student?: Student;
  errors?: string[];
}

export interface EnrollmentPayload {
  enrollment?: Enrollment;
  errors?: string[];
}

export interface DeletePayload {
  success: boolean;
  errors?: string[];
}
