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';
import { RoleHierarchyService } from '../role/role-hierarchy.service';
export declare class UserService {
    private readonly userRepo;
    private readonly roleRepo;
    private readonly cls;
    private readonly roleHierarchy;
    constructor(userRepo: UserRepository, roleRepo: Repository<RoleEntity>, cls: ClsService, roleHierarchy: RoleHierarchyService);
    private preventSelfAction;
    findAll(query?: {
        page?: number;
        limit?: number;
        search?: string;
        reports_to?: string;
    }): Promise<{
        items: {
            id: string;
            name: string;
            email: string;
            phone: string | null;
            role: {
                id: string;
                name: string;
            } | null;
            reports_to: {
                id: string;
                name: string;
            } | null;
            is_active: boolean;
            last_login_at: Date | null;
            created_at: Date;
            updated_at: Date;
        }[];
        meta: {
            total: number;
            page: number;
            limit: number;
            totalPages: number;
        };
    }>;
    findAllForLookup(): Promise<{
        id: string;
        name: string;
        email: string;
        role_id: string;
        role: {
            id: string;
            name: string;
        } | null;
    }[]>;
    findById(id: string): Promise<{
        id: string;
        name: string;
        email: string;
        phone: string | null;
        reports_to: {
            id: string;
            name: string;
        } | null;
        is_active: boolean;
        last_login_at: Date | null;
        created_at: Date;
        updated_at: Date;
        created_by: string | null;
        updated_by: string | null;
        role: {
            id: string;
            name: string;
            description: string | null;
            is_system: boolean;
            permissions: {
                module: string;
                access_level: import("../../entities").AccessLevel;
            }[];
        } | null;
    }>;
    create(dto: CreateUserDto): Promise<{
        id: string;
        message: string;
    }>;
    update(id: string, dto: UpdateUserDto): Promise<{
        id: string;
        message: string;
    }>;
    updatePreferences(id: string, prefs: {
        active_destination_id: string | null;
    }): Promise<{
        active_destination_id: string | null;
    }>;
    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 validateParentUserAssignment;
    private toListResponse;
    private toDetailResponse;
}
