import { CoursesService } from './courses.service';
import { CreateCourseDto, UpdateCourseDto } from './dto/course.dto';
import { CreateModuleDto, UpdateModuleDto, CreateLessonDto } from './dto/module-lesson.dto';
export declare class CoursesController {
    private readonly coursesService;
    constructor(coursesService: CoursesService);
    create(createCourseDto: CreateCourseDto): Promise<{
        id: number;
        level: string | null;
        createdAt: Date;
        updatedAt: Date;
        description: string | null;
        title: string;
        code: string;
        instructor: string | null;
        category: string;
        credits: number;
        semester: number | null;
        academicYear: string | null;
        language: string | null;
        learningOutcomes: string[];
        capacity: number | null;
        isPublished: boolean;
    }>;
    findAll(): Promise<({
        assignments: {
            id: number;
            status: string;
            type: import("@prisma/client").$Enums.AssignmentType;
            description: string | null;
            title: string;
            courseId: number;
            dueDate: Date;
            maxPoints: number;
        }[];
        modules: ({
            lessons: {
                id: number;
                createdAt: Date;
                updatedAt: Date;
                type: string;
                title: string;
                content: string | null;
                order: number;
                videoUrl: string | null;
                moduleId: number;
            }[];
        } & {
            id: number;
            createdAt: Date;
            updatedAt: Date;
            description: string | null;
            title: string;
            courseId: number;
            order: number;
        })[];
    } & {
        id: number;
        level: string | null;
        createdAt: Date;
        updatedAt: Date;
        description: string | null;
        title: string;
        code: string;
        instructor: string | null;
        category: string;
        credits: number;
        semester: number | null;
        academicYear: string | null;
        language: string | null;
        learningOutcomes: string[];
        capacity: number | null;
        isPublished: boolean;
    })[]>;
    findOne(id: number, req: any): Promise<{
        enrollments: {
            id: number;
            status: string;
            createdAt: Date;
            updatedAt: Date;
            userId: number;
            courseId: number;
            paymentStatus: import("@prisma/client").$Enums.PaymentStatus;
            grade: number | null;
            progress: number;
            completionDate: Date | null;
        }[];
        assignments: {
            id: number;
            status: string;
            type: import("@prisma/client").$Enums.AssignmentType;
            description: string | null;
            title: string;
            courseId: number;
            dueDate: Date;
            maxPoints: number;
        }[];
        modules: ({
            lessons: ({
                completions: {
                    id: number;
                    userId: number;
                    lessonId: number;
                    completedAt: Date;
                }[];
            } & {
                id: number;
                createdAt: Date;
                updatedAt: Date;
                type: string;
                title: string;
                content: string | null;
                order: number;
                videoUrl: string | null;
                moduleId: number;
            })[];
        } & {
            id: number;
            createdAt: Date;
            updatedAt: Date;
            description: string | null;
            title: string;
            courseId: number;
            order: number;
        })[];
    } & {
        id: number;
        level: string | null;
        createdAt: Date;
        updatedAt: Date;
        description: string | null;
        title: string;
        code: string;
        instructor: string | null;
        category: string;
        credits: number;
        semester: number | null;
        academicYear: string | null;
        language: string | null;
        learningOutcomes: string[];
        capacity: number | null;
        isPublished: boolean;
    }>;
    update(id: number, updateCourseDto: UpdateCourseDto): Promise<{
        id: number;
        level: string | null;
        createdAt: Date;
        updatedAt: Date;
        description: string | null;
        title: string;
        code: string;
        instructor: string | null;
        category: string;
        credits: number;
        semester: number | null;
        academicYear: string | null;
        language: string | null;
        learningOutcomes: string[];
        capacity: number | null;
        isPublished: boolean;
    }>;
    remove(id: number): Promise<{
        id: number;
        level: string | null;
        createdAt: Date;
        updatedAt: Date;
        description: string | null;
        title: string;
        code: string;
        instructor: string | null;
        category: string;
        credits: number;
        semester: number | null;
        academicYear: string | null;
        language: string | null;
        learningOutcomes: string[];
        capacity: number | null;
        isPublished: boolean;
    }>;
    createModule(createModuleDto: CreateModuleDto): Promise<{
        id: number;
        createdAt: Date;
        updatedAt: Date;
        description: string | null;
        title: string;
        courseId: number;
        order: number;
    }>;
    updateModule(id: number, updateModuleDto: UpdateModuleDto): Promise<{
        id: number;
        createdAt: Date;
        updatedAt: Date;
        description: string | null;
        title: string;
        courseId: number;
        order: number;
    }>;
    createLesson(createLessonDto: CreateLessonDto): Promise<{
        id: number;
        createdAt: Date;
        updatedAt: Date;
        type: string;
        title: string;
        content: string | null;
        order: number;
        videoUrl: string | null;
        moduleId: number;
    }>;
    completeLesson(id: number, userId: number): Promise<{
        id: number;
        userId: number;
        lessonId: number;
        completedAt: Date;
    }>;
}
