import { UsersService } from './users.service';
import { CreateUserDto } from './dto/create-user.dto';
import { UpdateUserDto } from './dto/update-user.dto';
import { PaginationQueryDto } from 'common/dto/pagination-query.dto';
import { UpdateProfileDto } from './dto/update-profile.dto';
import { ChangePasswordDto } from './dto/change-password.dto';
import { DeleteUsersDto } from './dto/delete-bulk-users.dto';
import { UserRole } from 'common/enums/user.enum';
export declare class UsersController {
    private readonly usersService;
    constructor(usersService: UsersService);
    findAll(query: PaginationQueryDto, req: any): Promise<{
        data: import("./user.entity").User[];
        total: number;
        page: number;
        lastPage: number;
    }>;
    findOne(id: number): Promise<import("./user.entity").User>;
    create(createUserDto: CreateUserDto): Promise<import("./user.entity").User>;
    getProfile(req: any): Promise<{
        id: number;
        email: string;
        name: string;
        role: UserRole;
        attendanceMethod: import("../../common/enums/attendance-method.enum").AttendanceMethod;
        biometricDeviceId: string;
        employmentType: import("common/enums/user.enum").EmploymentType;
        workMode: import("common/enums/user.enum").WorkMode;
        isActive: boolean;
        department: import("common/enums/user.enum").Department;
        hireDate: Date;
        createdAt: Date;
        updatedAt: Date;
        attendanceRecords: import("../attendance/attendance.entity").Attendance[];
        leaveRequests: import("../leave/leave-request.entity").LeaveRequest[];
        leaveBalances: import("../leave/leave-balance.entity").LeaveBalance[];
        notifications: import("../notifications/notification.entity").Notification[];
    }>;
    update(id: number, updateUserDto: UpdateUserDto): Promise<import("./user.entity").User>;
    updateProfile(req: any, dto: UpdateProfileDto): Promise<import("./user.entity").User>;
    changePassword(req: any, dto: ChangePasswordDto): Promise<{
        message: string;
    }>;
    remove(id: number): Promise<void>;
    removeBulk(deleteUsersDto: DeleteUsersDto): Promise<void>;
}
