import { JwtService } from '@nestjs/jwt';
import { AdminService } from '../admin/admin.service';
import { StudentsService } from '../students/students.service';
import { TeachersService } from '../teachers/teachers.service';
import { Role } from '../common/roles/role.enum';
import { ResetPasswordDto } from './dto/reset-password.dto';
import { OtpService } from './otp.service';
import { NotificationService } from './notification.service';
import { Channel } from './schemas/otp-management.schema';
export declare class AuthService {
    private readonly jwtService;
    private readonly adminService;
    private readonly teachersService;
    private readonly studentsService;
    private readonly otpService;
    private readonly notificationService;
    constructor(jwtService: JwtService, adminService: AdminService, teachersService: TeachersService, studentsService: StudentsService, otpService: OtpService, notificationService: NotificationService);
    private normalizeEmail;
    private normalizePhone;
    private getJwtExpiresIn;
    private findUserByChannel;
    private resolveContact;
    validateUser(email: string, password: string): Promise<{
        id: string;
        email: string | undefined;
        role: Role;
    }>;
    login(email: string, password: string): Promise<{
        access_token: string;
        user: {
            id: string;
            email: string | undefined;
            role: Role;
        };
        expires_in: string;
    }>;
    getMe(user: any): Promise<{
        id: any;
        email: any;
        role: any;
        name: any;
        photoUrl: string | undefined;
    }>;
    sendOtp(channel: Channel, value: string): Promise<{
        message: string;
    }>;
    verifyOtp(channel: Channel, to: string, otp: string): Promise<{
        ok: boolean;
        attemptsUsed: number;
        lockedUntil: number | null;
    }>;
    resendOtp(channel: Channel, to: string): Promise<{
        message: string;
    }>;
    private updatePasswordForUser;
    resetPassword(dto: ResetPasswordDto): Promise<{
        message: string;
    }>;
}
