import { Repository } from 'typeorm';
import { LoggerService } from "../services/logger/logger.service";
import { CreateUserDto } from './dto/create-user.dto';
import { RegisterUserDto } from './dto/register-user.dto';
import { UpdateUserDto } from './dto/update-user.dto';
import { User } from './entities/user.entity';
import { PaginationDto } from "../common/dto/pagination.dto";
import { Role } from "../roles/entities/role.entity";
import { UpdateMyProfileDto } from './dto/update-my-profile.dto';
import { Area } from "../areas/entities/area.entity";
import { SlugService } from "../common/slug/slug.service";
import { IncomingFile, UploadHelperService } from "../files";
export declare class UsersService {
    private readonly userRepository;
    private readonly roleRepository;
    private readonly areaRepository;
    private readonly slugService;
    private readonly logger;
    private readonly uploadHelper;
    constructor(userRepository: Repository<User>, roleRepository: Repository<Role>, areaRepository: Repository<Area>, slugService: SlugService, logger: LoggerService, uploadHelper: UploadHelperService);
    register(registerUserDto: RegisterUserDto): Promise<User>;
    create(createUserDto: CreateUserDto): Promise<User>;
    findOneByEmail(email: string): Promise<User | null>;
    findAll(paginationDto: PaginationDto): Promise<{
        total: number;
        limit: number;
        offset: number;
        data: Record<string, any>;
    }>;
    getPublicPartners(paginationDto: PaginationDto): Promise<{
        total: number;
        limit: number;
        offset: number;
        partners: {
            avatar: string | null;
            id: number;
            firstname: string;
            fathersurname?: string;
            mothersurname?: string;
            email: string;
            emailb?: string;
            facebook: string;
            instagram: string;
            password: string;
            phone: string;
            isActive: boolean;
            isPublic: boolean;
            slug: string;
            campus: string;
            bio: string;
            isDeceased: boolean;
            isValidated: boolean;
            createdAt: Date;
            updatedAt: Date;
            roles: Role[];
            areas: Area[];
        }[];
    }>;
    findPublicOne(id: number): Promise<{
        avatar: string | null;
        id: number;
        firstname: string;
        fathersurname?: string;
        mothersurname?: string;
        email: string;
        emailb?: string;
        facebook: string;
        instagram: string;
        password: string;
        phone: string;
        isActive: boolean;
        isPublic: boolean;
        slug: string;
        campus: string;
        bio: string;
        isDeceased: boolean;
        isValidated: boolean;
        createdAt: Date;
        updatedAt: Date;
        roles: Role[];
        areas: Area[];
    }>;
    findOne(id: number): Promise<Record<string, any>>;
    findOneByEmailWithRoles(email: string): Promise<User | null>;
    update(id: number, updateUserDto: UpdateUserDto): Promise<Record<string, any>>;
    findOneRaw(id: number): Promise<User>;
    updateFiles(id: number, updateFiles: {
        avatar?: string;
        filePdf?: string;
    }): Promise<void>;
    replaceAvatar(id: number, file: IncomingFile): Promise<import("src/files").UploadResponse>;
    updateOwnProfile(id: number, data: UpdateMyProfileDto): Promise<{
        avatar: string | null;
    }>;
    remove(id: number): Promise<{
        message: string;
    }>;
    private joinListedPartners;
    private findUserEntity;
    private ensureDefaultRegistrationRole;
    private handleDBExceptions;
}
