import { Repository } from 'typeorm';
import { NestAuthUser } from '../../user/entities/user.entity';
import { NestAuthOTP } from '../../auth/entities/otp.entity';
import { MfaService } from './mfa.service';
import { JwtService } from '../../core/services/jwt.service';
import { EventEmitter2 } from '@nestjs/event-emitter';
import { SessionManagerService } from '../../session/services/session-manager.service';
import { SignupRequestDto } from '../dto/requests/signup.request.dto';
import { AuthResponseDto } from '../dto/responses/auth.response.dto';
import { LoginRequestDto } from '../dto/requests/login.request.dto';
import { Verify2faRequestDto } from '../dto/requests/verify-2fa.request.dto';
import { MFAMethodEnum, MFAOptions } from '../../core/interfaces/mfa-options.interface';
import { ForgotPasswordRequestDto } from '../dto/requests/forgot-password.request.dto';
import { ResetPasswordRequestDto } from '../dto/requests/reset-password.request.dto';
import { AuthProviderRegistryService } from '../../core/services/auth-provider-registry.service';
import { TenantService } from '../../tenant/services/tenant.service';
import { DebugLoggerService } from '../../core/services/debug-logger.service';
import { VerifyForgotPasswordOtpRequestDto } from '../dto/requests/verify-forgot-password-otp-request-dto';
import { ResetPasswordWithTokenRequestDto } from '../dto/requests/reset-password-with-token.request.dto';
import { ChangePasswordRequestDto } from '../dto/requests/change-password.request.dto';
import { VerifyOtpResponseDto } from '../dto/responses/verify-otp.response.dto';
import { SendEmailVerificationRequestDto } from '../dto/requests/send-email-verification.request.dto';
import { VerifyEmailRequestDto } from '../dto/requests/verify-email.request.dto';
import { AuthConfigService } from '../../core/services/auth-config.service';
import { AuthTokensResponseDto } from '../dto/responses/auth.response.dto';
import { UserService } from '../../user/services/user.service';
export declare class AuthService {
    private readonly userRepository;
    private otpRepository;
    private readonly authProviderRegistry;
    private readonly mfaService;
    private readonly sessionManager;
    private readonly jwtService;
    private readonly eventEmitter;
    private readonly tenantService;
    private readonly debugLogger;
    private readonly authConfigService;
    private readonly userService;
    constructor(userRepository: Repository<NestAuthUser>, otpRepository: Repository<NestAuthOTP>, authProviderRegistry: AuthProviderRegistryService, mfaService: MfaService, sessionManager: SessionManagerService, jwtService: JwtService, eventEmitter: EventEmitter2, tenantService: TenantService, debugLogger: DebugLoggerService, authConfigService: AuthConfigService, userService: UserService);
    get mfaConfig(): MFAOptions;
    getUserWithRolesAndPermissions(userId: string, relations?: string[]): Promise<NestAuthUser>;
    getUser(): Promise<Partial<NestAuthUser>>;
    signup(input: SignupRequestDto): Promise<AuthResponseDto>;
    login(input: LoginRequestDto): Promise<AuthResponseDto>;
    verify2fa(input: Verify2faRequestDto): Promise<{
        accessToken: string;
        refreshToken: string;
        trustToken: string;
    }>;
    send2faCode(userId: string, method: MFAMethodEnum): Promise<boolean>;
    private handleSocialLogin;
    refreshToken(refreshToken: string): Promise<AuthTokensResponseDto>;
    changePassword(input: ChangePasswordRequestDto): Promise<AuthResponseDto>;
    forgotPassword(input: ForgotPasswordRequestDto): Promise<true | {
        message: string;
    }>;
    verifyForgotPasswordOtp(input: VerifyForgotPasswordOtpRequestDto): Promise<VerifyOtpResponseDto>;
    resetPassword(input: ResetPasswordRequestDto): Promise<boolean>;
    resetPasswordWithToken(input: ResetPasswordWithTokenRequestDto): Promise<boolean>;
    logout(logoutType?: 'user' | 'admin' | 'system', reason?: string): Promise<boolean>;
    logoutAll(userId: string, logoutType?: 'user' | 'admin' | 'system', reason?: string): Promise<boolean>;
    sendEmailVerification(input: SendEmailVerificationRequestDto): Promise<{
        message: string;
    }>;
    verifyEmail(input: VerifyEmailRequestDto): Promise<{
        message: string;
    }>;
    private generateTokensPayload;
    private handleError;
    private generateTokensFromSession;
}
//# sourceMappingURL=auth.service.d.ts.map