import type { EmailPayload, StandardResponse } from '../types/email.type.js';
import type { BulkPayload, BulkReport, EmailServiceHooks } from '../types/bulk.type.js';
/**
 * Boucle interne exécutée par `ESP.sendBulk`. Reçoit une fonction `sendOne`
 * qui délègue à `sendMail()` de l'ESP concret — permet au template method de
 * la classe ESP de conserver le rate limit Phase 3 automatiquement.
 *
 * Comportement par destinataire :
 * 1. Validation marketing → si absent, throw avant même la boucle
 * 2. checkSuppression via hook → skip si bloqué par le stream
 * 3. Interpolation subject/html/text via renderTemplate + mergeVars
 * 4. Injection List-Unsubscribe si marketing
 * 5. Appel sendOne (qui applique rate limit)
 * 6. Hook onSent / onFailed
 * 7. Accumulation dans le BulkReport
 */
export declare function runBulk(payload: BulkPayload, hooks: EmailServiceHooks | undefined, sendOne: (payload: EmailPayload) => Promise<StandardResponse>): Promise<BulkReport>;
