import { ModuleRef } from "@nestjs/core";
import { CRUDService } from "../services/crud.service";
import { EntityManager, Repository } from "typeorm";
import { OauthUserDto } from "../dtos/oauth-user-dto";
import { User } from "../entities/user.entity";
import { ActiveUserData } from "../interfaces/active-user-data.interface";
import { UserRepository } from "../repository/user.repository";
import { RoleMetadataRepository } from "../repository/role-metadata.repository";
import { HashingService } from "./hashing.service";
export declare class UserService extends CRUDService<User> {
    readonly hashingService: HashingService;
    readonly entityManager: EntityManager;
    readonly repo: UserRepository;
    readonly nonSecurityRuleAwareRepo: Repository<User>;
    private readonly roleRepository;
    readonly moduleRef: ModuleRef;
    private buildFacebookUsernameBase;
    private resolveUniqueUsername;
    constructor(hashingService: HashingService, entityManager: EntityManager, repo: UserRepository, nonSecurityRuleAwareRepo: Repository<User>, roleRepository: RoleMetadataRepository, moduleRef: ModuleRef);
    delete(id: number, solidRequestContext?: any): Promise<User>;
    deleteMany(ids: number[], solidRequestContext?: any): Promise<any>;
    findOneByEmail(email: string): Promise<User>;
    findOneByAccessCode(accessCode: string): Promise<User>;
    findOneByUsername(username: string): Promise<User>;
    updateUser(id: any, updateDto: any, files: any, solidRequestContext?: any): Promise<void>;
    addRoleToUser(username: string, roleName: string): Promise<User>;
    addRolesToUser(username: string, roleNames: string[]): Promise<User>;
    removeRoleFromUser(username: string, roleName: string): Promise<User>;
    resolveUserOnOauthGoogle(oauthUserDto: OauthUserDto): Promise<User>;
    resolveUserOnOauthFacebook(oauthUserDto: OauthUserDto): Promise<User>;
    resolveUserOnOauthMicrosoft(oauthUserDto: OauthUserDto): Promise<User>;
    findUsersByRole(roleName: string, relations?: any): Promise<User[]>;
    checkIfPermissionExists(query: any, activeUser: ActiveUserData): Promise<string[]>;
    initializeRolesForNewUser(roles: string[], user: User): Promise<void>;
    hashPassword(password: string): Promise<{
        password: string;
        passwordScheme: string;
        passwordSchemeVersion: number;
    }>;
}
//# sourceMappingURL=user.service.d.ts.map