import { TwoFactorAuthenticationService } from './twoFactorAuthentication.service';
import { UsersService } from '../users/users.service';
import { AuthService } from './auth.service';
import { LoginDto } from './dto/login.dto';
import { User } from '@prisma/client';
interface RequestWithUser extends Request {
    user: User;
}
export declare class AuthController {
    private readonly twoFactorService;
    private readonly usersService;
    private readonly authService;
    constructor(twoFactorService: TwoFactorAuthenticationService, usersService: UsersService, authService: AuthService);
    login(loginDto: LoginDto): Promise<{
        access_token: string;
        user: {
            id: any;
            email: any;
            isTwoFactorEnabled: any;
        };
    } | {
        requires2FA: boolean;
        userId: string;
        message: string;
    }>;
    authenticate2FA(body: {
        userId: string;
        code: string;
    }): Promise<{
        access_token: string;
        user: {
            id: any;
            email: any;
            isTwoFactorEnabled: any;
        };
    }>;
    register(req: RequestWithUser): Promise<{
        qrCodeUrl: string;
    }>;
    turnOnTwoFactorAuthentication(req: RequestWithUser, code: string): Promise<{
        message: string;
    }>;
}
export {};
