import { StudentsService } from './students.service';
import { CreateStudentDto } from './dto/create-student.dto';
import { UpdateStudentDto } from './dto/update-student.dto';
import { PromoteStudentDto } from './dto/promote-student.dto';
import { ReAdmitStudentDto, ReAdmitBulkDto } from './dto/re-admit-student.dto';
import { Model } from 'mongoose';
import { SectionDocument } from '../sections/schemas/section.schema';
import { PromoteBulkDto } from './dto/promote-bulk.dto';
export declare class StudentsController {
    private readonly studentsService;
    private readonly sectionModel;
    constructor(studentsService: StudentsService, sectionModel: Model<SectionDocument>);
    create(dto: CreateStudentDto): Promise<(import("mongoose").FlattenMaps<import("./schemas/student.schema").StudentDocument> & Required<{
        _id: string;
    }>) | null | undefined>;
    updatePhotos(id: string, files: {
        photo?: Express.Multer.File[];
        fatherPhoto?: Express.Multer.File[];
        motherPhoto?: Express.Multer.File[];
    }): Promise<import("mongoose").Document<unknown, {}, import("./schemas/student.schema").StudentDocument, {}> & import("./schemas/student.schema").Student & import("mongoose").Document<unknown, any, any, Record<string, any>> & Required<{
        _id: string;
    }>>;
    findAll(ayId?: string): Promise<any[]>;
    filter(classId?: string, sectionId?: string, academicYearId?: string, ayId?: string): Promise<any[]>;
    search(query?: string, limit?: string): Promise<any[]>;
    getRecentEnrollments(limit?: string, ayId?: string): Promise<{
        id: string;
        name: string;
        createdAt: Date | undefined;
    }[]>;
    getMonthlyEnrollmentStats(ayId?: string): Promise<{
        month: string;
        students: any;
    }[]>;
    promote(id: string, body: PromoteStudentDto): Promise<import("mongoose").FlattenMaps<import("./schemas/student.schema").Student & import("mongoose").Document<unknown, any, any, Record<string, any>> & Required<{
        _id: string;
    }>>>;
    promoteBulk(body: PromoteBulkDto, ayId?: string): Promise<{
        selected: number;
        matched: number;
        modified: number;
        toAcademicYearId?: undefined;
        targetClassId?: undefined;
        targetSectionId?: undefined;
    } | {
        selected: number;
        matched: number;
        modified: number;
        toAcademicYearId: string;
        targetClassId: string;
        targetSectionId: string | null;
    }>;
    reAdmit(id: string, body: ReAdmitStudentDto): Promise<import("mongoose").FlattenMaps<import("./schemas/student.schema").Student & import("mongoose").Document<unknown, any, any, Record<string, any>> & Required<{
        _id: string;
    }>>>;
    reAdmitBulk(body: ReAdmitBulkDto): Promise<{
        total: number;
        successful: number;
        failed: number;
        errors: any[] | undefined;
    }>;
    me(userId: string): Promise<any>;
    updateOwnPassword(userId: string, currentPassword: string, newPassword: string): Promise<{
        message: string;
    }>;
    getStudentsBySectionForTeacher(sectionId: string, userId: string, role: string): Promise<any[]>;
    getMySectionsStudents(teacherId: string): Promise<{
        sectionId: string;
        name: string;
        classId: string;
        students: any[];
    }[]>;
    findOne(id: string, ayId?: string): Promise<any>;
    toggleActive(id: string): Promise<{
        _id: string;
        isActive: boolean;
    }>;
    resetPassword(id: string, newPassword: string): Promise<{
        message: string;
    }>;
    update(id: string, dto: UpdateStudentDto): Promise<any>;
    remove(id: string): Promise<(import("mongoose").Document<unknown, {}, import("./schemas/student.schema").StudentDocument, {}> & import("./schemas/student.schema").Student & import("mongoose").Document<unknown, any, any, Record<string, any>> & Required<{
        _id: string;
    }>) | null>;
}
