import { CreatePesCampaignDto, PesCampaignResponseDto, UpdatePesCampaignDto } from '../dto/pes-campaign.dto';
import { CreatePesTemplateDto, PesTemplateResponseDto } from '../dto/pes-template.dto';
import { CreatePesSendingProfileDto, PesSendingProfileResponseDto, UpdatePesSendingProfileDto } from '../dto/pes-sending-profile.dto';
import { CreatePesLandingPageDto, PesLandingPageResponseDto, UpdatePesLandingPageDto } from '../dto/pes-landing-page.dto';
import { PesVerifiedUserResponseDto } from '../dto/pes-verified-users.dto';
import { CreatePesRecipientGroupDto, PesRecipientGroupResponseDto } from '../dto/pes-recipient-group.dto';
export declare class VerifyEmailDto {
    email: string;
    otpCode: string;
}
export declare class ResendVerificationDto {
    email: string;
}
export declare class SendVerificationDto {
    email: string;
}
export declare abstract class BasePesService {
    abstract createVerifiedUser(email: string): Promise<PesVerifiedUserResponseDto>;
    abstract createCampaign(userEmail: string, campaignData: CreatePesCampaignDto): Promise<PesCampaignResponseDto>;
    abstract createTemplate(templateData: CreatePesTemplateDto): Promise<PesTemplateResponseDto>;
    abstract createSendingProfile(sendingProfileData: CreatePesSendingProfileDto): Promise<PesSendingProfileResponseDto>;
    abstract createLandingPage(landingPageData: CreatePesLandingPageDto): Promise<PesLandingPageResponseDto>;
    abstract updateCampaign(campaignId: string, campaignData: UpdatePesCampaignDto): Promise<PesCampaignResponseDto>;
    abstract deleteCampaign(campaignId: string): Promise<{
        success: boolean;
        message: string;
    }>;
    abstract sendVerificationEmail(email: string, userEmail: string): Promise<{
        success: boolean;
        message: string;
    }>;
    abstract checkEmailVerificationStatus(email: string): Promise<{
        isVerified: boolean;
    }>;
    abstract verifyEmail(email: string, otpCode: string, userId: number): Promise<{
        success: boolean;
        message: string;
    }>;
    abstract resendVerificationEmail(email: string | ResendVerificationDto): Promise<{
        success: boolean;
        message: string;
    }>;
    abstract getAllTemplates(): Promise<PesTemplateResponseDto[]>;
    abstract getTemplateById(templateId: string): Promise<PesTemplateResponseDto | null>;
    abstract updateTemplate(templateId: string, templateData: CreatePesTemplateDto): Promise<PesTemplateResponseDto>;
    abstract deleteTemplate(templateId: string): Promise<{
        success: boolean;
        message: string;
    }>;
    abstract getTemplatesByVerifiedUserId(verifiedUserId: string): Promise<PesTemplateResponseDto[]>;
    abstract getCampaignByVerifiedUserEmail(email: string): Promise<PesCampaignResponseDto[] | null>;
    abstract sendCampaignEmail(email: string, campaignId: string): Promise<{
        success: boolean;
        message: string;
    }>;
    abstract sendTestEmail(email: string, templateId: string): Promise<{
        success: boolean;
        message: string;
    }>;
    abstract getVerifiedUserByEmail(email: string): Promise<PesVerifiedUserResponseDto | null>;
    abstract testSmtpConnection(smtpConfig: SMTPConnectionTestProp): Promise<{
        success: boolean;
        message: string;
    }>;
    abstract getSendingProfileById(profileId: string): Promise<PesSendingProfileResponseDto | null>;
    abstract getSendingProfilesByVerifiedUserId(verifiedUserId: string): Promise<PesSendingProfileResponseDto[]>;
    abstract updateSendingProfile(profileId: string, sendingProfileData: UpdatePesSendingProfileDto): Promise<PesSendingProfileResponseDto>;
    abstract deleteSendingProfile(profileId: string): Promise<{
        success: boolean;
        message: string;
    }>;
    abstract getLandingPageById(pageId: string): Promise<PesLandingPageResponseDto | null>;
    abstract getLandingPagesByVerifiedUserId(verifiedUserId: string): Promise<PesLandingPageResponseDto[]>;
    abstract updateLandingPage(pageId: string, landingPageData: UpdatePesLandingPageDto): Promise<PesLandingPageResponseDto>;
    abstract deleteLandingPage(pageId: string): Promise<{
        success: boolean;
        message: string;
    }>;
    abstract createRecipientGroup(data: CreatePesRecipientGroupDto): Promise<PesRecipientGroupResponseDto>;
    abstract addRecipientsToGroup(groupId: string, emails: string[]): Promise<PesRecipientGroupResponseDto>;
    abstract removeRecipientsFromGroup(groupId: string, recipientIds: string[]): Promise<PesRecipientGroupResponseDto>;
    abstract getRecipientGroupByVerifiedUserId(verifiedUserId: string): Promise<PesRecipientGroupResponseDto[]>;
    abstract getRecipientGroupById(groupId: string): Promise<PesRecipientGroupResponseDto>;
    abstract removeRecipientGroup(groupId: string, verifiedUserId: string): Promise<PesRecipientGroupResponseDto[]>;
}
export interface SMTPConnectionTestProp {
    smtpHost: string;
    smtpPort: number;
    smtpUsername: string;
    smtpPassword: string;
    smtpTls: boolean;
}
