import { JwtService } from '@nestjs/jwt';
import { CreateUserDto } from './dto/create-user.dto';
import { LoginDto } from './dto/login.dto';
import { Repository, DataSource } from 'typeorm';
import { User } from './user.entity';
import { PasswordResetToken } from './password-reset-token.entity';
import { ResetPasswordDto } from './dto/reset-password.dto';
import { ConfigService } from '@nestjs/config';
import { RateLimitService } from './rate-limit.service';
export declare class AuthService {
    private readonly jwtService;
    private readonly userRepository;
    private readonly passwordResetTokenRepository;
    private readonly dataSource;
    private readonly configService;
    private readonly rateLimitService;
    constructor(jwtService: JwtService, userRepository: Repository<User>, passwordResetTokenRepository: Repository<PasswordResetToken>, dataSource: DataSource, configService: ConfigService, rateLimitService: RateLimitService);
    register(createUserDto: CreateUserDto): Promise<any>;
    getTokens(userId: number, username: string, role: string): Promise<{
        accessToken: string;
        refreshToken: string;
    }>;
    updateRefreshToken(userId: number, refreshToken: string): Promise<void>;
    login(loginDto: LoginDto): Promise<{
        access_token: string;
        refresh_token: string;
        user: any;
    }>;
    refreshToken(refreshToken: string): Promise<{
        accessToken: string;
        refreshToken: string;
    }>;
    logout(refreshToken: string): Promise<void>;
    decodeRefreshToken(token: string): any;
    forgotPassword(email: string): Promise<{
        resetToken: string;
    }>;
    resetPassword(resetPasswordDto: ResetPasswordDto): Promise<{
        message: string;
    }>;
}
