import { ConfigService } from '@nestjs/config';
import { JwtService } from '@nestjs/jwt';
import { Repository } from 'typeorm';
import { AuthenticatedUser } from '../../common/interfaces/authenticated-user.interface';
import { UsersService } from '../users/users.service';
import { LoginLog } from './entities/login-log.entity';
export interface AuthTokens {
    accessToken: string;
    refreshToken: string;
}
export interface LoginResponse extends AuthTokens {
    user: AuthenticatedUser;
}
export interface LoginContext {
    ipAddress: string | null;
    userAgent: string | null;
}
export declare class AuthService {
    private readonly usersService;
    private readonly jwtService;
    private readonly configService;
    private readonly loginLogsRepository;
    private readonly logger;
    constructor(usersService: UsersService, jwtService: JwtService, configService: ConfigService, loginLogsRepository: Repository<LoginLog>);
    login(email: string, password: string, context: LoginContext): Promise<LoginResponse>;
    refresh(userId: number, presentedToken: string): Promise<AuthTokens>;
    logout(userId: number): Promise<void>;
    changePassword(userId: number, currentPassword: string, newPassword: string): Promise<void>;
    private issueTokens;
    private persistRefreshToken;
    private handleFailedLogin;
    private logAttempt;
}
