import { Repository } from 'typeorm';
import { Course } from './course.entity';
import { CreateCourseDto } from './dto/create-course.dto';
import { UpdateCourseDto } from './dto/update-course.dto';
import { User } from '../users/user.entity';
import { Enrollment } from '../enrollments/enrollment.entity';
import { ConfigService } from '@nestjs/config';
import { CourseProgress } from '../progress/course-progress.entity';
import { MailService } from '../mail/mail.service';
export declare class CoursesService {
    private coursesRepo;
    private enrollmentRepo;
    private progressRepo;
    private userRepo;
    private readonly config;
    private readonly mailService;
    constructor(coursesRepo: Repository<Course>, enrollmentRepo: Repository<Enrollment>, progressRepo: Repository<CourseProgress>, userRepo: Repository<User>, config: ConfigService, mailService: MailService);
    createCourse(dto: CreateCourseDto, trainer: any): Promise<Course>;
    findAll(userId: number | null): Promise<any[]>;
    findById(id: number): Promise<Course | null>;
    updateCourse(id: number, dto: UpdateCourseDto, user: User): Promise<Course>;
    updatePublishStatus(id: number, isPublished: boolean, user: User): Promise<Course | {
        message: string;
        status: string;
    }>;
    approvePublish(id: number): Promise<string>;
    rejectPublish(id: number): Promise<string>;
    deleteCourse(id: number, user: User): Promise<{
        message: string;
    }>;
    getCourseContentForUser(userId: number | null, courseId: number): Promise<any>;
    getTrainerProfile(trainerId: number): Promise<{
        trainer: {
            id: number;
            name: any;
            email: string;
            phone: string;
            gender: string;
        };
        courses: {
            id: number;
            title: string;
            description: string;
            level: string;
            duration: string;
            price: number;
            discountPrice: number | null;
            ratingAvg: string;
            ratingCount: number;
            isPublished: boolean;
            courseImage: string | null;
            courseVideo: string | null;
            lessonsCount: number;
        }[];
    }>;
}
