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<Enrollment>;
    /**
     * Get all enrollments for a student
     * @param studentId The ID of the student
     * @returns Array of enrollments
     */
    getStudentEnrollments(studentId: string): Promise<Enrollment[]>;
    /**
     * 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<Enrollment | null>;
    /**
     * 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<Progress[]>;
    /**
     * 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<string[]>;
    /**
     * 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;
    }>;
}
