import { Repository } from 'typeorm';
import { User } from './entities/user.entity';
import { CreateUserDto } from './dto/create-user.dto';
import { Role } from '../role/entities/role.entity';
import { Permission } from '../permission/entities/permission.entity';
export declare class UserService {
    private readonly userRepository;
    private readonly roleRepository;
    private readonly permissionRepository;
    constructor(userRepository: Repository<User>, roleRepository: Repository<Role>, permissionRepository: Repository<Permission>);
    create(createUserDto: CreateUserDto): Promise<User>;
    findAll(): Promise<User[]>;
    findOne(id: number): Promise<User>;
    update(id: number, updateUserDto: Partial<CreateUserDto & {
        isActive?: boolean;
        otpCode?: string | null;
        otpExpires?: Date | null;
        otpAttempts?: number;
        otpType?: string | null;
        isEmailVerified?: boolean;
        isApprovedByAdmin?: boolean;
        status?: string;
    }>): Promise<User>;
    remove(id: number): Promise<void>;
    findByEmail(email: string): Promise<User | undefined>;
    findByOtp(otpCode: string, otpType: string): Promise<User | undefined>;
    findPendingUsers(): Promise<User[]>;
    assignRolesToUser(userId: number, roleIds: number[]): Promise<User>;
    assignPermissionsToUser(userId: number, permissionIds: number[]): Promise<User>;
}
