import { Repository } from 'typeorm';
import { NestAuthUser } from '../../user/entities/user.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 { NestAuthSignupRequestDto } from '../dto/requests/signup.request.dto';
import { AuthResponseDto } from '../dto/responses/auth.response.dto';
import { NestAuthLoginRequestDto } from '../dto/requests/login.request.dto';
import { NestAuthVerify2faRequestDto } from '../dto/requests/verify-2fa.request.dto';
import { ISessionUserData, NestAuthMFAMethodEnum } from '@ackplus/nest-auth-contracts';
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 { AuthConfigService } from '../../core/services/auth-config.service';
import { NestAuthSession } from '../../session/entities/session.entity';
import { AuthTokensResponseDto } from '../dto/responses/auth.response.dto';
import { UserService } from '../../user/services/user.service';
import { ITenantContextService } from '../../tenant/tenant-context/tenant-context.interface';
import { OtpFlowService } from './otp-flow.service';
import { LogoutService } from './logout.service';
import { SessionTokenService } from './session-token.service';
import { NestAuthUserAccess } from '../../user/entities/user-access.entity';
import { NestAuthPlatformAccess } from '../../user/entities/platform-access.entity';
export declare class AuthService {
    private readonly userRepository;
    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;
    private readonly otpFlow;
    private readonly logoutService;
    private readonly sessionTokenService;
    private readonly tenantContext;
    private readonly authConfig;
    constructor(userRepository: Repository<NestAuthUser>, authProviderRegistry: AuthProviderRegistryService, mfaService: MfaService, sessionManager: SessionManagerService, jwtService: JwtService, eventEmitter: EventEmitter2, tenantService: TenantService, debugLogger: DebugLoggerService, authConfigService: AuthConfigService, userService: UserService, otpFlow: OtpFlowService, logoutService: LogoutService, sessionTokenService: SessionTokenService, tenantContext: ITenantContextService);
    getUserWithRoles(userId: string, relations?: string[]): Promise<NestAuthUser>;
    getUserWithAccess(userId: string, tenantId: string, isPlatformAccess?: boolean): Promise<{
        user: NestAuthUser;
        userAccess?: NestAuthUserAccess;
        platformAccess?: NestAuthPlatformAccess;
    }>;
    signup(input: NestAuthSignupRequestDto): Promise<AuthResponseDto>;
    login(input: NestAuthLoginRequestDto): Promise<AuthResponseDto>;
    private emitLoginFailed;
    private resolveOrCreateUserForSend;
    passwordlessSend(input: {
        identifier: string;
        channel: 'email' | 'sms';
        tenantId?: string;
    }): Promise<{
        message: string;
    }>;
    verify2fa(input: NestAuthVerify2faRequestDto): Promise<import("../dto/responses/auth.response.dto").AuthWithTokensResponseDto>;
    switchTenant(tenantId?: string | null): Promise<AuthResponseDto>;
    getSessionUserData(): Promise<ISessionUserData<any>>;
    send2faCode(userId: string, method: NestAuthMFAMethodEnum): Promise<boolean>;
    private handleSocialLogin;
    refreshToken(refreshToken: string): Promise<import("../dto/responses/auth.response.dto").AuthWithTokensResponseDto>;
    logout(logoutType?: 'user' | 'admin' | 'system', reason?: string): Promise<boolean>;
    logoutAll(userId: string, logoutType?: 'user' | 'admin' | 'system', reason?: string): Promise<boolean>;
    private ensureTenantAccess;
    private handleError;
    generateTokensFromSession(session: NestAuthSession): Promise<AuthTokensResponseDto>;
    generateAuthResponse(user: NestAuthUser, session: any, tokens: {
        accessToken: string;
        refreshToken: string;
    }, isRequiresMfa: boolean, trustToken?: string): Promise<AuthResponseDto>;
    private applyProviderVerification;
    private assertTenantIdAllowed;
    private checkTrustedDevice;
}
//# sourceMappingURL=auth.service.d.ts.map