import { Repository } from 'typeorm';
import { TenantConnectionService } from '../tenant/tenant-connection.service';
import { User } from './entities/user.entity';
import { CreateUserDto } from './dto/create-user.dto';
import { UpdateUserDto } from './dto/update-user.dto';
import { Role } from '../role/entities/role.entity';
import { BaseTenantService } from '@/common/base/service/base-crud.service';
import { I18nContext } from 'nestjs-i18n';
import { RegisterDto } from './dto/register-user.dto';
import { ApproveUserDto } from './dto/approve-user.dto';
import { ChangePasswordDto } from './dto/change-password-user.dto';
export declare class UserService extends BaseTenantService<User> {
    protected tenantConn: TenantConnectionService;
    protected entity: typeof User;
    constructor(tenantConn: TenantConnectionService);
    getRepository(): Promise<Repository<User>>;
    getRoleRepo(): Promise<Repository<Role>>;
    register(dto: RegisterDto, tenant: any): Promise<{
        message: string;
    }>;
    createUser(req: any, dto: CreateUserDto, tenant: any, i18n: I18nContext): Promise<any>;
    findAllUser(): Promise<Omit<User, 'password'>[]>;
    findOneUser(id: number, relations?: string[]): Promise<Omit<User, 'password'>>;
    updateUser(id: number, dto: UpdateUserDto): Promise<Omit<User, 'password'>>;
    remove(id: number): Promise<void>;
    findByEmailWithPassword(email: string): Promise<User | null>;
    assignRoles(userId: number, roleIds: number[]): Promise<User>;
    bulkDelete(ids: (number | string)[]): Promise<{
        success: boolean;
        deletedCount: number;
        ids: (string | number)[];
    }>;
    approveUser(dto: ApproveUserDto): Promise<{
        message: string;
    }>;
    changePassword(req: any, dto: ChangePasswordDto): Promise<{
        message: string;
    }>;
}
