import { ChangeEmailDto } from './dto/change-email.dto';
import { ChangePasswordDto } from './dto/change-password.dto';
import { EmailVerificationDto } from './dto/email-verification-confirm.dto';
import { GenerateWebAuthnRegistrationOptionsDto } from './dto/generate-webauthn-registration-options.dto';
import { RegenerateRecoveryCodesDto } from './dto/regenerate-recovery-codes.dto';
import { RemoveEmailMfaDto } from './dto/remove-email-mfa.dto';
import { RemoveMfaWithRecoveryCodeDto } from './dto/remove-mfa-with-recovery-code.dto';
import { RemoveMfaDto } from './dto/remove-mfa.dto';
import { RemoveTotpMfaDto } from './dto/remove-totp-mfa.dto';
import { SendEmailVerificationDto } from './dto/send-email-verification.dto';
import { SetPreferencesDto } from './dto/set-preferences.dto';
import { UpdateDto } from './dto/update.dto';
import { VerifyBeforeAddMfaDto } from './dto/verify-before-add-mfa.dto';
import { VerifyMfaTotpDto } from './dto/verify-mfa-totp.dto';
import { VerifyWebAuthnRegistrationDto } from './dto/verify-webauthn-registration.dto';
import { VerifyWebAuthnDto } from './dto/verify-webauthn.dto';
import { ProfileService } from './profile.service';
export declare class ProfileController {
    private readonly profileService;
    constructor(profileService: ProfileService);
    updatePreferences({ id }: {
        id: any;
    }, data: SetPreferencesDto, locale: string): Promise<{
        success: boolean;
    }>;
    checkMfaBeforeAdd({ id }: {
        id: any;
    }, locale: string): Promise<{
        requiresVerification: boolean;
        availableMethods?: undefined;
        hasWebAuthn?: undefined;
        hasRecoveryCodes?: undefined;
        verificationType?: undefined;
    } | {
        requiresVerification: boolean;
        availableMethods: ("email" | "totp")[];
        hasWebAuthn: boolean;
        hasRecoveryCodes: boolean;
        verificationType?: undefined;
    } | {
        requiresVerification: boolean;
        verificationType: "email" | "totp";
        hasWebAuthn: boolean;
        hasRecoveryCodes: boolean;
        availableMethods?: undefined;
    }>;
    checkMfaBeforeRemove({ id }: {
        id: any;
    }, locale: string): Promise<{
        requiresVerification: boolean;
        availableMethods: ("email" | "totp")[];
        hasWebAuthn: boolean;
        hasRecoveryCodes: boolean;
    }>;
    verifyBeforeAddMfa({ id }: {
        id: any;
    }, data: VerifyBeforeAddMfaDto, locale: string): Promise<{
        success: boolean;
    }>;
    generateMfaTotp({ id }: {
        id: any;
    }, locale: string): Promise<{
        otpauthUrl: any;
        qrCode: any;
        secret: string;
    }>;
    verifyMfaTotp(locale: string, { id }: {
        id: any;
    }, { token, secret, name }: VerifyMfaTotpDto): Promise<{
        codes: string[];
        token: string;
    }>;
    removeMfaTotp(locale: string, { id }: {
        id: any;
    }, mfaId: number, { token }: RemoveTotpMfaDto): Promise<{
        token: string;
    }>;
    confirmEmailVerification({ id }: {
        id: any;
    }, data: EmailVerificationDto, locale: string): Promise<{
        success: boolean;
    }>;
    sendEmailVerification({ id }: {
        id: any;
    }, data: SendEmailVerificationDto, locale: string): Promise<{
        challengeId: number;
    }>;
    sendEmailVerificationMfa({ id }: {
        id: any;
    }, data: SendEmailVerificationDto, locale: string): Promise<{
        challengeId: number;
    }>;
    sendEmailVerificationMfaConfirm({ id }: {
        id: any;
    }, data: EmailVerificationDto, locale: string): Promise<{
        codes: string[];
        token: string;
    }>;
    sendCodeToRemove({ id }: {
        id: any;
    }, locale: string, { email }: SendEmailVerificationDto): Promise<{
        challengeId: number;
    }>;
    getEmailIdentifier({ id }: {
        id: any;
    }): Promise<{
        type: import("@prisma/client").$Enums.user_identifier_type_e66d505520_enum;
        id: number;
        value: string;
        enabled: boolean;
        user_id: number;
        created_at: Date;
        updated_at: Date;
        verified_at: Date | null;
    }>;
    removeMfaEmail(locale: string, { id }: {
        id: any;
    }, mfaId: number, { token, hash }: RemoveEmailMfaDto): Promise<{
        token: string;
    }>;
    getProfile({ id }: {
        id: any;
    }): Promise<{
        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;
    }>;
    getMFAMethod({ id }: {
        id: any;
    }): Promise<({
        user_mfa_email: {
            id: number;
            email: string;
            created_at: Date;
            updated_at: Date;
            user_mfa_id: number;
        }[];
        user_mfa_totp: {
            id: number;
            secret: import("@prisma/client/runtime/library").Bytes;
            created_at: Date;
            updated_at: Date;
            user_mfa_id: number;
        }[];
        user_mfa_webauthn: {
            id: number;
            created_at: Date;
            updated_at: Date;
            last_used_at: Date | null;
            user_mfa_id: number;
            credential_id: import("@prisma/client/runtime/library").Bytes;
            public_key: import("@prisma/client/runtime/library").Bytes;
            sign_count: number;
        }[];
    } & {
        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;
    })[]>;
    updateMFA({ id: userId }: {
        id: any;
    }, mfaId: number, { name }: UpdateDto): 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;
    }>;
    removeMfaWithRecoveryCode({ id }: {
        id: any;
    }, mfaId: number, { recoveryCode }: RemoveMfaWithRecoveryCodeDto, locale: string): Promise<{
        token: string;
    }>;
    removeMfa({ id }: {
        id: any;
    }, mfaId: number, data: RemoveMfaDto, locale: string): Promise<{
        token: string;
    }>;
    sendRecoveryCodesVerification({ id }: {
        id: any;
    }, locale: string): Promise<{
        requiresVerification: boolean;
        availableMethods?: undefined;
        hasWebAuthn?: undefined;
        hasRecoveryCodes?: undefined;
        verificationType?: undefined;
    } | {
        requiresVerification: boolean;
        availableMethods: ("email" | "totp")[];
        hasWebAuthn: boolean;
        hasRecoveryCodes: boolean;
        verificationType?: undefined;
    } | {
        requiresVerification: boolean;
        verificationType: "email" | "totp";
        hasWebAuthn: boolean;
        hasRecoveryCodes: boolean;
        availableMethods?: undefined;
    }>;
    regenerateRecoveryCodes({ id }: {
        id: any;
    }, data: RegenerateRecoveryCodesDto, locale: string): Promise<{
        codes: string[];
    }>;
    generateWebAuthnRegistrationOptions({ id }: {
        id: any;
    }, { name }: GenerateWebAuthnRegistrationOptionsDto, locale: string): Promise<import("@simplewebauthn/server").PublicKeyCredentialCreationOptionsJSON>;
    verifyWebAuthnRegistration({ id }: {
        id: any;
    }, { name, attestationResponse }: VerifyWebAuthnRegistrationDto, locale: string): Promise<{
        success: boolean;
        codes: string[];
    }>;
    generateWebAuthnAuthenticationOptions({ id }: {
        id: any;
    }, locale: string): Promise<import("@simplewebauthn/server").PublicKeyCredentialRequestOptionsJSON>;
    verifyWebAuthnAuthentication({ id }: {
        id: any;
    }, { assertionResponse }: VerifyWebAuthnDto): Promise<{
        success: boolean;
    }>;
    removeWebAuthnMfa({ id }: {
        id: any;
    }, mfaId: number, locale: string): Promise<{
        success: boolean;
    }>;
    changePassword({ id }: {
        id: any;
    }, body: ChangePasswordDto, locale: string, ipAddress: string, userAgent: string): Promise<{
        success: boolean;
    }>;
    changeEmail({ id }: {
        id: any;
    }, body: ChangeEmailDto, locale: string): Promise<{
        requireEmailVerification: boolean;
    }>;
    updateAvatar(locale: string, { id }: {
        id: any;
    }, file: MulterFile): Promise<{
        id: number;
        path: string;
    }>;
    update(data: UpdateDto, { id }: {
        id: any;
    }): Promise<{
        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;
    }>;
}
//# sourceMappingURL=profile.controller.d.ts.map