import { EnrollmentRepository } from "../repositories/EnrollmentRepository"; import { ProgressRepository } from "../repositories/ProgressRepository"; import { Enrollment } from "../models/Enrollment"; import { Progress } from "../models/Progress"; import { SqliteAdapter } from "../database/SqliteAdapter"; /** * Service for managing student enrollments and progress tracking */ export declare class EnrollmentService { private enrollmentRepository; private progressRepository; private dbAdapter; constructor(enrollmentRepository: EnrollmentRepository, progressRepository: ProgressRepository, dbAdapter: SqliteAdapter); /** * Enroll a student in a course * @param studentId The ID of the student * @param courseId The ID of the course * @returns The created enrollment or existing enrollment */ enrollStudent(studentId: string, courseId: string): Promise; /** * Get all enrollments for a student * @param studentId The ID of the student * @returns Array of enrollments */ getStudentEnrollments(studentId: string): Promise; /** * Get enrollment for a specific course * @param studentId The ID of the student * @param courseId The ID of the course * @returns The enrollment or null */ getStudentCourseEnrollment(studentId: string, courseId: string): Promise; /** * Mark a lecture as completed and update overall course progress * @param studentId The ID of the student * @param lectureId The ID of the lecture * @param courseId The ID of the course * @returns Object with progress information */ markLectureCompleted(studentId: string, lectureId: string, courseId: string): Promise<{ success: boolean; completedLectures: number; totalLectures: number; progress: number; }>; /** * Get progress records for a student in a course * @param studentId The ID of the student * @param courseId The ID of the course * @returns Array of progress records */ getStudentCourseProgress(studentId: string, courseId: string): Promise; /** * Get enrollment details and completed lecture IDs for a student in a specific course. * Throws ApiError if enrollment is not found. * @param studentId The ID of the student * @param courseId The ID of the course * @returns Object containing the enrollment and an array of completed lecture IDs */ getEnrollmentAndProgressForStudent(studentId: string, courseId: string): Promise<{ enrollment: Enrollment; completedLectures: string[]; }>; /** * Get completed quizzes for a student in a course * @param studentId The ID of the student * @param courseId The ID of the course * @returns Array of quiz IDs that have been completed */ getCompletedQuizzesForStudent(studentId: string, courseId: string): Promise; /** * Record a quiz as completed and update overall course progress * @param studentId The ID of the student * @param quizId The ID of the quiz * @param courseId The ID of the course * @param score Optional score from the quiz * @returns Object with progress information */ recordQuizCompleted(studentId: string, quizId: string, courseId: string, score?: number): Promise<{ success: boolean; progress: number; isCompleted: boolean; }>; }