import { PrismaService } from '@hed-hog/api-prisma';
import { MailService } from "../mail/mail.service";
import { SecurityService } from "../security/security.service";
import { SettingService } from "../setting/setting.service";
import { TokenService } from "../token/token.service";
export declare class ChallengeService {
    private readonly prisma;
    private readonly security;
    private readonly setting;
    private readonly token;
    private readonly mail;
    constructor(prisma: PrismaService, security: SecurityService, setting: SettingService, token: TokenService, mail: MailService);
    verifyMfaEmail(locale: string, userId: number, email: string): Promise<{
        challengeId: number;
    }>;
    verifyEmail(locale: string, userId: number, email: string): Promise<{
        challengeId: number;
    }>;
    verifyMultipleEmails(locale: string, userId: number, emails: string[]): Promise<{
        codeHash: string;
    }>;
    forgotEmail(locale: string, email: string): Promise<{
        id: number;
        hash: string;
        created_at: Date;
        updated_at: Date;
        attempts: number;
        expires_at: Date;
        verified_at: Date | null;
        user_mfa_id: number;
    }>;
    verifyCodePassword(locale: string, code: string): Promise<{
        user_mfa: {
            user: {
                name: string;
                id: number;
                created_at: Date;
                updated_at: Date;
                photo_id: number | null;
                suspended_until: Date | null;
                last_login_at: Date | null;
                suspended_reason: string | null;
                deactivated_at: Date | null;
            };
        } & {
            name: string;
            type: import("@prisma/client").$Enums.user_mfa_type_4ce08a626e_enum;
            id: number;
            user_id: number;
            created_at: Date;
            updated_at: Date;
            suspended_until: Date | null;
            verified_at: Date | null;
        };
    } & {
        id: number;
        hash: string;
        created_at: Date;
        updated_at: Date;
        attempts: number;
        expires_at: Date;
        verified_at: Date | null;
        user_mfa_id: number;
    }>;
    verifyCode(locale: string, userId: number, code: string, providedHash: string, name?: string, email?: string): Promise<{
        name: string;
        type: import("@prisma/client").$Enums.user_mfa_type_4ce08a626e_enum;
        id: number;
        user_id: number;
        created_at: Date;
        updated_at: Date;
        suspended_until: Date | null;
        verified_at: Date | null;
    } | {
        success: boolean;
    }>;
    sendMfaCodeByEmail(locale: string, userId: number, email: string): Promise<{
        success: boolean;
    }>;
    verifyMfaEmailCode(locale: string, userId: number, code: string): Promise<boolean>;
    sendMfaCodeToMultipleEmails(locale: string, userId: number, emails: string[]): Promise<{
        success: boolean;
    }>;
}
//# sourceMappingURL=challenge.service.d.ts.map