import { AiService } from 'src/ai/ai.service';
import { CampaignTargetService } from 'src/campaign-target/campaign-target.service';
import { EmailSentService } from 'src/email-sent/email-sent.service';
import { EmailTemplateService } from 'src/email-template/email-template.service';
import { SenderProfileService } from 'src/sender-profile/sender-profile.service';
import { TeamService } from 'src/team/team.service';
import { AutoGenerateCampaignDto, CreateCampaignDto } from './dto/create-campaign.dto';
import { UpdateCampaignDto } from './dto/update-campaign.dto';
import { Campaign } from './entities/campaign.entity';
interface AutoCampaign {
    name: string;
    emailTemplateId: string;
    senderProfileId: string;
    campaignTargets: string[];
    date: string;
}
interface CampaignData {
    campaigns: AutoCampaign[];
}
export declare class CampaignService {
    private readonly campaignRepository;
    private readonly aiService;
    private readonly campaignTargetService;
    private readonly emailTemplateService;
    private readonly profileSenderService;
    private readonly teamService;
    private readonly emailSentService;
    private readonly logger;
    constructor(campaignRepository: typeof Campaign, aiService: AiService, campaignTargetService: CampaignTargetService, emailTemplateService: EmailTemplateService, profileSenderService: SenderProfileService, teamService: TeamService, emailSentService: EmailSentService);
    create(createCampaignDto: CreateCampaignDto, businessId: string): Promise<Campaign>;
    autoGenerateCampaign(params: AutoGenerateCampaignDto, businessId: string): Promise<CampaignData>;
    findAll(businessId: string): Promise<Campaign[]>;
    findOne(id: string): Promise<Campaign>;
    update(id: string, updateCampaignDto: UpdateCampaignDto): Promise<number>;
    remove(id: string): Promise<string>;
    getStats(businessId: string): Promise<{
        totalCampaigns: number;
        targetTeamsCount: number;
        emailStats: {
            totalSent: number;
            totalOpened: number;
            openRate: string;
        };
        phishingResponseStats: {
            totalClicks: number;
            totalFormSubmissions: number;
            totalReports: number;
            totalDownloads: number;
            clickRate: string;
            submissionRate: string;
            reportRate: string;
        };
        campaignStatuses: {
            draft: number;
            scheduled: number;
            inProgress: number;
            completed: number;
            cancelled: number;
        };
    }>;
    getCampaignMetrics(id: string): Promise<{
        campaignName: string;
        campaignStatus: string;
        coverage: string;
        targetedEmployees: {
            total: number;
            reachedCount: number;
            clickedCount: number;
            didNotClickCount: number;
        };
        emailStats: {
            totalSent: number;
            totalOpened: number;
            openRate: string;
        };
        phishingResponseStats: {
            totalClicks: number;
            totalFormSubmissions: number;
            totalReports: number;
            totalDownloads: number;
            clickRate: string;
            submissionRate: string;
            reportRate: string;
        };
    }>;
}
export {};
