import { ClientEntity } from './entities/client.entity';
import { Repository } from 'typeorm';
import { BaseClientService } from './abstracts/client.abstract';
import { ClientResponseDto } from './dto/client-response.dto';
import { CreateClientDto } from './dto/create-client.dto';
import { PaginatedClientDto } from './dto/paginated-client.dto';
import { PlanResponseDto } from './dto/plan.dto';
import { UpdateClientDto } from './dto/update-client.dto';
import { PlanDataDto } from './dto/plan-data.dto';
import { UserService } from 'modules/user/users.service';
import { RoleService } from 'modules/role-permission/roles/role.service';
import { PaginatedResponseDto } from 'common/utils/paginated-response.dto';
import { UserResponseDto } from 'modules/user/dto/user-response.dto';
import { ConfigService } from '@nestjs/config';
export declare class ClientService extends BaseClientService {
    private readonly clientRepository;
    private readonly userSevice;
    private readonly roleService;
    private readonly configService;
    private readonly logger;
    private transporter;
    constructor(clientRepository: Repository<ClientEntity>, userSevice: UserService, roleService: RoleService, configService: ConfigService);
    private initializeEmailTransporter;
    private verifyEmailConnection;
    createClient(createClientDto: CreateClientDto): Promise<ClientResponseDto>;
    getAllClients(page?: number, limit?: number): Promise<PaginatedClientDto>;
    getClientById(clientId: string): Promise<ClientResponseDto>;
    getClientEntityById(clientId: string): Promise<ClientEntity>;
    getClientPlan(clientId: string): Promise<PlanResponseDto>;
    deleteClient(clientId: string): Promise<boolean>;
    getClientUsers(clientId: string, page?: number, limit?: number): Promise<PaginatedResponseDto<UserResponseDto>>;
    unlinkUserFromClient(clientId: string, userId: number): Promise<boolean>;
    private sendEmail;
    private sendLinkingEmailAsync;
    private generateUserLinkedMessageTemplate;
    linkUserToClient(clientId: string, userEmail: string): Promise<boolean>;
    updateClient(clientId: string, updateData: UpdateClientDto): Promise<ClientResponseDto>;
    updateClientPlan(clientId: string, planDataDto: PlanDataDto): Promise<PlanResponseDto>;
    upgradeUserToClient(userId: number, planData: PlanDataDto): Promise<ClientResponseDto>;
    validateUserLinkLimit(clientId: string): Promise<boolean>;
    private mapToClientResponseDto;
}
