import { TokenService } from '../token/token.service';
import { CreateWithEmailAndPasswordDTO } from '../user/dto/create-with-email-and-password.dto';
import { UserService } from '../user/user.service';
import { AuthService } from './auth.service';
import { ForgetDTO } from './dto/forget.dto';
import { LoginEmailVerificationResendDTO } from './dto/login-email-verification-resend.dto';
import { LoginEmailVerificationDTO } from './dto/login-email-verification.dto';
import { LoginWithCodeDTO } from './dto/login-with-code.dto';
import { LoginWithRecoveryCodeDTO } from './dto/login-with-recovery-code';
import { LoginDTO } from './dto/login.dto';
import { ResendMfaCodeDTO } from './dto/resend-mfa-code.dto';
import { ResetDTO } from './dto/reset.dto';
export declare class AuthController {
    private readonly service;
    private readonly token;
    private readonly user;
    constructor(service: AuthService, token: TokenService, user: UserService);
    verify({ id }: {
        id: any;
    }, locale: string): Promise<{
        requires_password_reset: boolean;
        user_identifier: {
            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;
        }[];
        role_user: ({
            role: {
                id: number;
                created_at: Date;
                updated_at: Date;
                slug: string;
            };
        } & {
            id: number;
            user_id: number;
            created_at: Date;
            updated_at: Date;
            role_id: number;
        })[];
        user_account: {
            id: number;
            email: string | null;
            provider: import("@prisma/client").$Enums.user_account_provider_52222e2ecb_enum;
            user_id: number;
            created_at: Date;
            updated_at: Date;
            provider_user_id: string;
            scopes: string | null;
            refresh_token: import("@prisma/client/runtime/library").Bytes | null;
            token_expires_at: Date | null;
        }[];
        user_activity: {
            id: number;
            action: string;
            user_id: number;
            created_at: Date;
            updated_at: Date;
        }[];
        user_credential: {
            type: import("@prisma/client").$Enums.user_credential_type_4466d7f008_enum;
            id: number;
            hash: string;
            user_id: number;
            created_at: Date;
            updated_at: Date;
            expires_at: Date | null;
            revoked_at: Date | null;
            requires_reset: boolean;
        }[];
        user_session: {
            id: number;
            hash: string;
            user_id: number;
            user_agent: string;
            created_at: Date;
            updated_at: Date;
            ip_address: string;
            expires_at: Date;
            revoked_at: Date | null;
        }[];
        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;
    }>;
    roles(user: any, locale: string): Promise<{
        roles: {
            slug: string;
        }[];
    }>;
    refresh(locale: string, req: any, res: any, refreshTokenFromBody: string, userAgent: string, ipAddress: string): Promise<{
        accessToken: string;
        refreshToken: string;
    }>;
    login(locale: string, data: LoginDTO, ipAddress: string, userAgent: string, res: any): Promise<{
        requiresMfa: boolean;
        token: string;
    } | {
        requiresEmailVerification: boolean;
        token: string;
    } | {
        accessToken: string;
        refreshToken: string;
        requiresPasswordReset: boolean;
    } | {
        accessToken: string;
        requiresPasswordReset: boolean;
        refreshToken?: undefined;
    } | {
        requiresMfa: boolean;
        mfaToken: string;
        mfaMethods: {
            type: import("@prisma/client").$Enums.user_mfa_type_4ce08a626e_enum;
            id: number;
        }[];
    }>;
    emailVerificationLogin(locale: string, { token, code }: LoginEmailVerificationDTO, ipAddress: string, userAgent: string, res: any): Promise<{
        accessToken: string;
        refreshToken: string;
        requiresPasswordReset: boolean;
    } | {
        accessToken: string;
        requiresPasswordReset: boolean;
        refreshToken?: undefined;
    }>;
    emailVerificationLoginResend(locale: string, { token }: LoginEmailVerificationResendDTO): Promise<any>;
    registerWithEmailAndPassword(locale: string, data: CreateWithEmailAndPasswordDTO): Promise<{
        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;
        };
        challenge: {
            challengeId: number;
        };
    }>;
    loginCode(locale: string, { token, code, methodType }: LoginWithCodeDTO, ipAddress: string, userAgent: string, res: any): Promise<{
        accessToken: string;
        refreshToken: string;
        requiresPasswordReset: boolean;
    }>;
    loginRecoveryCode(locale: string, { token, code }: LoginWithRecoveryCodeDTO, ipAddress: string, userAgent: string, res: any): Promise<{
        accessToken: string;
        refreshToken: string;
        requiresPasswordReset: boolean;
    }>;
    resendMfaCode(locale: string, { token }: ResendMfaCodeDTO): Promise<{
        success: boolean;
        hasEmailMfa: boolean;
    }>;
    generateWebAuthnOptions(locale: string, { mfaToken }: {
        mfaToken: string;
    }): Promise<import("@simplewebauthn/server").PublicKeyCredentialRequestOptionsJSON>;
    verifyWebAuthn(locale: string, { mfaToken, assertionResponse }: {
        mfaToken: string;
        assertionResponse: any;
    }, ipAddress: string, userAgent: string, res: any): Promise<{
        accessToken: string;
        refreshToken: string;
        requiresPasswordReset: boolean;
    }>;
    forgot(locale: string, data: ForgetDTO): Promise<{
        success: boolean;
    }>;
    logout(req: any, res: any, refreshTokenFromBody: string): Promise<{
        success: boolean;
    }>;
    forgotReset(locale: string, { password, code }: ResetDTO, ipAddress: string, userAgent: string): Promise<{
        accessToken: string;
        refreshToken: string;
        session: {
            id: number;
            hash: string;
            user_id: number;
            user_agent: string;
            created_at: Date;
            updated_at: Date;
            ip_address: string;
            expires_at: Date;
            revoked_at: Date | null;
        };
    }>;
}
//# sourceMappingURL=auth.controller.d.ts.map