import { BasePesService, ResendVerificationDto, SMTPConnectionTestProp } from './abstracts/pes.abstract';
import { CreatePesCampaignDto, PesCampaignResponseDto, UpdatePesCampaignDto } from './dto/pes-campaign.dto';
import { DataSource, Repository } from 'typeorm';
import { PesCampaign } from './entities/pes-campaign.entity';
import { PesEmailVerification } from './entities/pes-email-verification.entity';
import { PesVerifiedUsers } from './entities/pes_verified_users.entity';
import { PesTemplate } from './entities/pes-template.entity';
import { ConfigService } from '@nestjs/config';
import { UserService } from 'modules/user/users.service';
import { CreatePesTemplateDto, PesTemplateResponseDto, UpdatePesTemplateDto } from './dto/pes-template.dto';
import { CreatePesSendingProfileDto, PesSendingProfileResponseDto, UpdatePesSendingProfileDto } from './dto/pes-sending-profile.dto';
import { PesSendingProfile } from './entities/pes-sending-profiles.entity';
import { CreatePesLandingPageDto, PesLandingPageResponseDto, UpdatePesLandingPageDto } from './dto/pes-landing-page.dto';
import { PesLandingPage } from './entities/pes-laning-pages.entity';
import { PesVerifiedUserResponseDto } from './dto/pes-verified-users.dto';
import { CreatePesRecipientGroupDto, PesRecipientGroupResponseDto } from './dto/pes-recipient-group.dto';
import { PesRecipientGroup } from './entities/pes-recepient-group.entity';
import { PesRecipient } from './entities/pes-recipent.entity';
import { PesTrackingService } from './pes-tracking.service';
export declare class PesService extends BasePesService {
    private readonly campaignRepository;
    private readonly emailVerificationRepository;
    private readonly verifiedUsersRepository;
    private readonly templateRepository;
    private readonly sendingProfileRepository;
    private readonly landingPageRepository;
    private readonly recipientGroupRepository;
    private readonly recipientRepository;
    private readonly configService;
    private readonly userService;
    private readonly dataSource;
    private readonly trackingService;
    private readonly logger;
    private transporter;
    constructor(campaignRepository: Repository<PesCampaign>, emailVerificationRepository: Repository<PesEmailVerification>, verifiedUsersRepository: Repository<PesVerifiedUsers>, templateRepository: Repository<PesTemplate>, sendingProfileRepository: Repository<PesSendingProfile>, landingPageRepository: Repository<PesLandingPage>, recipientGroupRepository: Repository<PesRecipientGroup>, recipientRepository: Repository<PesRecipient>, configService: ConfigService, userService: UserService, dataSource: DataSource, trackingService: PesTrackingService);
    private initializeEmailTransporter;
    private sendEmail;
    sendVerificationEmail(email: string, userEmail: string): Promise<{
        success: boolean;
        message: string;
    }>;
    private generateOtp;
    private getOtpExpiryDate;
    private generateVerificationId;
    checkEmailVerificationStatus(email: string): Promise<{
        isVerified: boolean;
    }>;
    createVerifiedUser(email: string): Promise<PesVerifiedUserResponseDto>;
    verifyEmail(email: string, otpCode: string, userId: number): Promise<{
        success: boolean;
        message: string;
    }>;
    resendVerificationEmail(data: ResendVerificationDto): Promise<{
        success: boolean;
        message: string;
    }>;
    createCampaign(userEmail: string, campaignData: CreatePesCampaignDto): Promise<PesCampaignResponseDto>;
    updateCampaign(campaignId: string, campaignData: UpdatePesCampaignDto): Promise<PesCampaignResponseDto>;
    deleteCampaign(campaignId: string): Promise<{
        success: boolean;
        message: string;
    }>;
    sendTestEmail(email: string, templateId: string): Promise<{
        success: boolean;
        message: string;
    }>;
    sendCampaignEmail(email: string, campaignId: string): Promise<{
        success: boolean;
        message: string;
    }>;
    private processLinksForTracking;
    createSendingProfile(sendingProfileData: CreatePesSendingProfileDto): Promise<PesSendingProfileResponseDto>;
    testSmtpConnection(smtpConfig: SMTPConnectionTestProp): Promise<{
        success: boolean;
        message: string;
    }>;
    getSendingProfilesByVerifiedUserId(verifiedUserId: string): Promise<PesSendingProfileResponseDto[]>;
    getSendingProfileById(profileId: string): Promise<PesSendingProfileResponseDto | null>;
    updateSendingProfile(profileId: string, sendingProfileData: UpdatePesSendingProfileDto): Promise<PesSendingProfileResponseDto>;
    deleteSendingProfile(profileId: string): Promise<{
        success: boolean;
        message: string;
    }>;
    createLandingPage(landingPageData: CreatePesLandingPageDto): Promise<PesLandingPageResponseDto>;
    updateLandingPage(pageId: string, landingPageData: UpdatePesLandingPageDto): Promise<PesLandingPageResponseDto>;
    getLandingPageById(pageId: string): Promise<PesLandingPageResponseDto | null>;
    deleteLandingPage(pageId: string): Promise<{
        success: boolean;
        message: string;
    }>;
    getLandingPagesByVerifiedUserId(verifiedUserId: string): Promise<PesLandingPageResponseDto[]>;
    createTemplate(templateData: CreatePesTemplateDto): Promise<PesTemplateResponseDto>;
    getAllTemplates(): Promise<PesTemplateResponseDto[]>;
    updateTemplate(templateId: string, templateData: UpdatePesTemplateDto): Promise<PesTemplateResponseDto>;
    getTemplateById(templateId: string): Promise<PesTemplateResponseDto | null>;
    getTemplatesByVerifiedUserId(verifiedUserId: string): Promise<PesTemplateResponseDto[]>;
    deleteTemplate(templateId: string): Promise<{
        success: boolean;
        message: string;
    }>;
    getCampaignByVerifiedUserEmail(email: string): Promise<PesCampaignResponseDto[]>;
    getVerifiedUserByEmail(email: string): Promise<PesVerifiedUserResponseDto>;
    getRecipientGroupByVerifiedUserId(verifiedUserId: string): Promise<PesRecipientGroupResponseDto[]>;
    createRecipientGroup(data: CreatePesRecipientGroupDto): Promise<PesRecipientGroupResponseDto>;
    addRecipientsToGroup(groupId: string, emails: string[]): Promise<PesRecipientGroupResponseDto>;
    removeRecipientsFromGroup(groupId: string, recipientIds: string[]): Promise<PesRecipientGroupResponseDto>;
    getRecipientGroupById(groupId: string): Promise<PesRecipientGroupResponseDto>;
    removeRecipientGroup(groupId: string, verifiedUserId: string): Promise<PesRecipientGroupResponseDto[]>;
}
