import { Repository } from 'typeorm';
import { Newsletter, NewsletterResultSummary, NewsletterStatus } from './entities/newsletter.entity';
import { CreateNewsletterDto } from './dto/create-newsletter.dto';
import { UpdateNewsletterDto } from './dto/update-newsletter.dto';
import { EmailService } from '../email/email.service';
import { UsersService } from '../users/users.service';
export declare class NewsletterService {
    private readonly newsletterRepo;
    private readonly emailService;
    private readonly usersService;
    private readonly logger;
    private readonly activeSends;
    constructor(newsletterRepo: Repository<Newsletter>, emailService: EmailService, usersService: UsersService);
    listTemplates(): import("./newsletter-templates.config").NewsletterTemplateDef[];
    findAll(): Promise<Newsletter[]>;
    findOne(id: string): Promise<Newsletter>;
    create(dto: CreateNewsletterDto, createdBy: string): Promise<Newsletter>;
    update(id: string, dto: UpdateNewsletterDto): Promise<Newsletter>;
    remove(id: string): Promise<void>;
    duplicate(id: string, createdBy: string): Promise<Newsletter>;
    previewHtml(id: string): Promise<string>;
    sendTest(id: string, emails: string[], adminUserId: string): Promise<{
        total: number;
        sent: number;
        failed: number;
        results: {
            email: string;
            ok: boolean;
            error?: string;
        }[];
    }>;
    sendTestAdmins(id: string): Promise<{
        total: number;
        sent: number;
        failed: number;
        results: {
            email: string;
            ok: boolean;
            error?: string;
        }[];
    }>;
    getRecipientCount(): Promise<number>;
    startSend(id: string): Promise<{
        totalRecipients: number;
        resumed: boolean;
    }>;
    getProgress(id: string): Promise<{
        status: NewsletterStatus;
        totalRecipients: number;
        sentCount: number;
        failedCount: number;
        sentAt: Date | null;
    }>;
    getReport(id: string): Promise<{
        status: NewsletterStatus;
        subject: string;
        sentAt: Date | null;
        totalRecipients: number;
        sentCount: number;
        failedCount: number;
        resultSummary: NewsletterResultSummary | null;
        opens: number;
    }>;
    private runBulkSend;
    private delay;
    private sanitizeBlocks;
    private sanitizeOneSection;
    private clampColumnPx;
    private uniqueSectionId;
    private sanitizeLeafSection;
}
