import type { Response } from 'express';
import { NewsletterService } from './newsletter.service';
import { CreateNewsletterDto } from './dto/create-newsletter.dto';
import { UpdateNewsletterDto } from './dto/update-newsletter.dto';
import { SendTestNewsletterDto } from './dto/send-test-newsletter.dto';
export declare class NewsletterController {
    private readonly newsletterService;
    constructor(newsletterService: NewsletterService);
    listTemplates(): import("./newsletter-templates.config").NewsletterTemplateDef[];
    recipientCount(): Promise<{
        total: number;
    }>;
    findAll(): Promise<import("./entities/newsletter.entity").Newsletter[]>;
    create(dto: CreateNewsletterDto, userId: string): Promise<import("./entities/newsletter.entity").Newsletter>;
    findOne(id: string): Promise<import("./entities/newsletter.entity").Newsletter>;
    update(id: string, dto: UpdateNewsletterDto): Promise<import("./entities/newsletter.entity").Newsletter>;
    remove(id: string): Promise<void>;
    duplicate(id: string, userId: string): Promise<import("./entities/newsletter.entity").Newsletter>;
    preview(id: string, res: Response): Promise<void>;
    sendTest(id: string, dto: SendTestNewsletterDto, userId: 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;
        }[];
    }>;
    startSend(id: string): Promise<{
        totalRecipients: number;
        resumed: boolean;
    }>;
    getProgress(id: string): Promise<{
        status: import("./entities/newsletter.entity").NewsletterStatus;
        totalRecipients: number;
        sentCount: number;
        failedCount: number;
        sentAt: Date | null;
    }>;
    getReport(id: string): Promise<{
        status: import("./entities/newsletter.entity").NewsletterStatus;
        subject: string;
        sentAt: Date | null;
        totalRecipients: number;
        sentCount: number;
        failedCount: number;
        resultSummary: import("./entities/newsletter.entity").NewsletterResultSummary | null;
        opens: number;
    }>;
}
