import { PaginatedResponseDto } from 'common/utils/paginated-response.dto';
import { CreateAdminDto } from '../dto/create-admin.dto';
import { UpdateUserDto } from '../dto/update-user.dto';
import { UserFilterDto } from '../dto/user-filter.dto';
import { UserResponseDto } from '../dto/user-response.dto';
import { UserEntity } from '../entity/users.entity';
export declare abstract class BaseUserAbstract {
    abstract createAdmin(user: CreateAdminDto): Promise<UserResponseDto>;
    abstract findAllUsers(page?: number, limit?: number): Promise<PaginatedResponseDto<UserResponseDto>>;
    abstract findUserById(userId: number): Promise<UserResponseDto>;
    abstract findUserByUserIdWithEntity(userId: number): Promise<UserEntity>;
    abstract findUserByEmail(email: string): Promise<UserResponseDto>;
    abstract countUsers(): Promise<number>;
    abstract updateUser(userId: number, userData: UpdateUserDto): Promise<UserResponseDto>;
    abstract deleteUser(userId: number): Promise<void>;
    abstract findUsersByFilter(filter: UserFilterDto, page: number, limit: number): Promise<PaginatedResponseDto<UserResponseDto>>;
    abstract findUserByRole(role: string, page: number, limit: number): Promise<PaginatedResponseDto<UserResponseDto>>;
    abstract findUserByClientId(clientId: string, page: number, limit: number): Promise<PaginatedResponseDto<UserResponseDto>>;
    abstract findUserByStatus(status: string, page: number, limit: number): Promise<PaginatedResponseDto<UserResponseDto>>;
    abstract getUsersLinkedToClient(clientId: string, page: number, limit: number): Promise<PaginatedResponseDto<UserResponseDto>>;
    abstract getUserCountByRole(role: string): Promise<number>;
}
