import { User, UserRole } from "../entities";
import { Repository } from "typeorm";
import { IPreRegisterUserHandler } from "./interfaces/pre-register-user-handler.interface";
import { IPostRegisterUserHandler } from "./interfaces/post-register-user-handler.interface";
import { IUserValidator } from "./interfaces/user-validator.interface";
import { IGetUser } from "./interfaces/get-user.interface";
export declare class UserService {
    private readonly userRepository;
    private readonly userRoleRepository;
    private preRegisterUserHandlers;
    private postRegisterUserHandlers;
    private userValidators;
    constructor(userRepository: Repository<User>, userRoleRepository: Repository<UserRole>);
    getUserAsync(options: IGetUser): Promise<User | null>;
    validateUserAsync(credentials: {
        username?: string;
        email?: string;
        password: string;
    }): Promise<User>;
    private validateUserPasswordAsync;
    createUserAsync(user: User, appData?: object): Promise<User>;
    updateUserPasswordAsync(user: User, newPassword: string): Promise<void>;
    private insertUserAsync;
    addPreRegisterUserHandler(handler: IPreRegisterUserHandler): void;
    addPostRegisterUserHandler(handler: IPostRegisterUserHandler): void;
    addUserValidator(userValidator: IUserValidator): void;
    private applyPreRegisterUserHandlersAsync;
    private applyPostRegisterUserHandlersAsync;
    private applyUserValidatorsAsync;
}
