import { JwtService } from '@nestjs/jwt';
import { ConfigService } from '@nestjs/config';
import { Model } from 'mongoose';
import { UsersService } from '../users/users.service';
import { AuditLogsService } from '../audit-logs/audit-logs.service';
import type { EmailProvider } from '../email/email-provider.interface';
import { RefreshTokenDocument } from './schemas/refresh-token.schema';
import { PasswordResetTokenDocument } from './schemas/password-reset-token.schema';
export declare class AuthService {
    private readonly users;
    private readonly jwt;
    private readonly config;
    private readonly audit;
    private readonly refreshModel;
    private readonly resetModel;
    private readonly email;
    constructor(users: UsersService, jwt: JwtService, config: ConfigService, audit: AuditLogsService, refreshModel: Model<RefreshTokenDocument>, resetModel: Model<PasswordResetTokenDocument>, email: EmailProvider);
    private refreshTtlMs;
    private signAccess;
    private issueRefresh;
    login(dto: {
        email: string;
        password: string;
        deviceId?: string;
        isRooted?: boolean;
    }): Promise<{
        accessToken: string;
        refreshToken: string;
        user: {
            id: string;
            uid: string;
            email: string;
            name: string | null;
            fullName: string | null;
            employeeCode: string;
            role: string;
            mobile: string | null;
            mobileNumber: string | null;
            sitingLocation: string | null;
            sittingLocation: string | null;
            reportingManagerId: string | null;
            reportingManagerName: string | null;
            reportingManager: import("../users/user-api.mapper").ManagerSummary | undefined;
            deviceId: string | null;
            profileImage: string | null;
            status: string | null;
            presence: string | null;
            createdAt: Date | null;
            updatedAt: Date | null;
        };
    }>;
    refresh(refreshToken: string, deviceId?: string): Promise<{
        accessToken: string;
        refreshToken: string;
        user: {
            id: string;
            uid: string;
            email: string;
            name: string | null;
            fullName: string | null;
            employeeCode: string;
            role: string;
            mobile: string | null;
            mobileNumber: string | null;
            sitingLocation: string | null;
            sittingLocation: string | null;
            reportingManagerId: string | null;
            reportingManagerName: string | null;
            reportingManager: import("../users/user-api.mapper").ManagerSummary | undefined;
            deviceId: string | null;
            profileImage: string | null;
            status: string | null;
            presence: string | null;
            createdAt: Date | null;
            updatedAt: Date | null;
        };
    }>;
    logout(params: {
        refreshToken?: string;
        userId?: string;
    }): Promise<{
        ok: boolean;
    }>;
    forgotPassword(email: string): Promise<{
        ok: boolean;
    }>;
    resetPassword(token: string, newPassword: string): Promise<{
        ok: boolean;
    }>;
    cleanupExpiredTokens(): Promise<void>;
}
