import { Repository } from 'typeorm';
import { ClsService } from 'nestjs-cls';
import { UserRepository } from './repositories/user.repository';
import { RoleEntity } from '../../entities/role.entity';
import { CreateUserDto, UpdateUserDto, ResetPasswordDto } from './dto';
export declare class UserService {
    private readonly userRepo;
    private readonly roleRepo;
    private readonly cls;
    constructor(userRepo: UserRepository, roleRepo: Repository<RoleEntity>, cls: ClsService);
    private preventSelfAction;
    findAll(query?: {
        page?: number;
        limit?: number;
        search?: string;
    }): Promise<{
        items: {
            id: any;
            name: any;
            email: any;
            phone: any;
            role: {
                id: any;
                name: any;
            } | null;
            is_active: any;
            last_login_at: any;
            created_at: any;
            updated_at: any;
        }[];
        meta: {
            total: number;
            page: number;
            limit: number;
            totalPages: number;
        };
    }>;
    findAllForLookup(): Promise<{
        id: any;
        name: any;
        email: any;
        role_id: any;
        role: {
            id: any;
            name: any;
        } | null;
    }[]>;
    findById(id: string): Promise<{
        id: any;
        name: any;
        email: any;
        phone: any;
        is_active: any;
        last_login_at: any;
        created_at: any;
        updated_at: any;
        created_by: any;
        updated_by: any;
        role: {
            id: any;
            name: any;
            description: any;
            is_system: any;
            permissions: any;
        } | null;
    }>;
    create(dto: CreateUserDto): Promise<{
        id: string;
        message: string;
    }>;
    update(id: string, dto: UpdateUserDto): Promise<{
        id: string;
        message: string;
    }>;
    resetPassword(id: string, dto: ResetPasswordDto): Promise<{
        message: string;
    }>;
    toggleStatus(id: string): Promise<{
        id: string;
        is_active: boolean;
        message: string;
    }>;
    remove(id: string): Promise<{
        message: string;
    }>;
    private toListResponse;
    private toDetailResponse;
}
