import type Database from 'better-sqlite3';
export interface CreateCampaignData {
    name: string;
    squad_name?: string;
    subject: string;
    body_html: string;
    body_text?: string;
    from_email: string;
    from_name?: string;
}
export interface EnqueueFilters {
    tags?: string[];
    lists?: string[];
    status?: string;
}
export interface Campaign {
    id: string;
    name: string;
    squad_name: string | null;
    subject: string;
    body_html: string;
    body_text: string | null;
    from_email: string;
    from_name: string | null;
    status: string;
    total_recipients: number;
    sent_count: number;
    failed_count: number;
    bounce_count: number;
    complaint_count: number;
    created_at: string;
    started_at: string | null;
    completed_at: string | null;
}
export declare class CampaignService {
    private db;
    constructor(db: Database.Database);
    createCampaign(data: CreateCampaignData): Campaign;
    getCampaign(id: string): Campaign | undefined;
    listCampaigns(filters?: {
        page?: number;
        limit?: number;
        status?: string;
    }): {
        data: Campaign[];
        total: number;
    };
    enqueueCampaign(campaignId: string, filters: EnqueueFilters): void;
    startCampaign(campaignId: string): void;
    pauseCampaign(campaignId: string): void;
    resumeCampaign(campaignId: string): void;
    cancelCampaign(campaignId: string): void;
    getCampaignStats(campaignId: string): Campaign | undefined;
}
//# sourceMappingURL=campaign-service.d.ts.map