import { OnModuleInit } from '@nestjs/common';
import { Model } from 'mongoose';
import { Teacher, TeacherDocument } from './schemas/teacher.schema';
import { CreateTeacherDto } from './dto/create-teacher.dto';
import { UpdateTeacherDto } from './dto/update-teacher.dto';
export declare class TeachersService implements OnModuleInit {
    private teacherModel;
    private readonly logger;
    constructor(teacherModel: Model<TeacherDocument>);
    onModuleInit(): Promise<void>;
    private normEmail;
    private normStr;
    private handleDupKey;
    create(dto: CreateTeacherDto): Promise<import("mongoose").FlattenMaps<Teacher & import("mongoose").Document<unknown, any, any, Record<string, any>> & Required<{
        _id: string;
    }>>>;
    backfillTeacherIds(): Promise<{
        total: number;
        updated: number;
        failed: number;
    }>;
    findByEmail(email: string): Promise<(import("mongoose").FlattenMaps<TeacherDocument> & Required<{
        _id: string;
    }>) | null>;
    findByIdForAuth(id: string): Promise<(import("mongoose").FlattenMaps<TeacherDocument> & Required<{
        _id: string;
    }>) | null>;
    findByPhone(phone: string): Promise<(import("mongoose").FlattenMaps<TeacherDocument> & Required<{
        _id: string;
    }>) | null>;
    findAll(isActive?: boolean): import("mongoose").Query<(import("mongoose").FlattenMaps<TeacherDocument> & Required<{
        _id: string;
    }>)[], import("mongoose").Document<unknown, {}, TeacherDocument, {}> & Teacher & import("mongoose").Document<unknown, any, any, Record<string, any>> & Required<{
        _id: string;
    }>, {}, TeacherDocument, "find", {}>;
    searchTeachers(query: string, limit?: number): Promise<(import("mongoose").FlattenMaps<TeacherDocument> & Required<{
        _id: string;
    }>)[]>;
    findMinimal(): Promise<(import("mongoose").FlattenMaps<TeacherDocument> & Required<{
        _id: string;
    }>)[]>;
    findOne(id: string): import("mongoose").Query<(import("mongoose").FlattenMaps<TeacherDocument> & Required<{
        _id: string;
    }>) | null, import("mongoose").Document<unknown, {}, TeacherDocument, {}> & Teacher & import("mongoose").Document<unknown, any, any, Record<string, any>> & Required<{
        _id: string;
    }>, {}, TeacherDocument, "findOne", {}>;
    update(id: string, dto: UpdateTeacherDto): Promise<import("mongoose").FlattenMaps<Teacher & import("mongoose").Document<unknown, any, any, Record<string, any>> & Required<{
        _id: string;
    }>> | undefined>;
    toggleActive(id: string): Promise<{
        _id: string;
        isActive: boolean;
    }>;
    delete(id: string): Promise<{
        message: string;
    }>;
    updatePassword(id: string, newPasswordHash: string): Promise<{
        message: string;
    }>;
    updateSelfProfile(id: string, data: {
        name?: string;
        phone?: string;
        photoUrl?: string;
    }): Promise<import("mongoose").FlattenMaps<TeacherDocument> & Required<{
        _id: string;
    }>>;
    updateEmail(id: string, newEmail: string): Promise<import("mongoose").FlattenMaps<TeacherDocument> & Required<{
        _id: string;
    }>>;
    updateNotificationPrefs(id: string, prefs: {
        email?: boolean;
        whatsapp?: boolean;
    }): Promise<import("mongoose").FlattenMaps<TeacherDocument> & Required<{
        _id: string;
    }>>;
}
