import { SerializedEditorState } from 'lexical';
import { PayloadRequest } from 'payload';
import { NewsletterPluginConfig, BroadcastProviderConfig, ResendProviderConfig } from './types.cjs';

/**
 * DOMPurify configuration for email-safe HTML
 */
declare const EMAIL_SAFE_CONFIG: {
    ALLOWED_TAGS: string[];
    ALLOWED_ATTR: string[];
    ALLOWED_STYLES: {
        '*': string[];
    };
    FORBID_TAGS: string[];
    FORBID_ATTR: string[];
};
/**
 * Converts Lexical editor state to email-safe HTML
 */
declare function convertToEmailSafeHtml(editorState: SerializedEditorState | undefined | null, options?: {
    wrapInTemplate?: boolean;
    preheader?: string;
    mediaUrl?: string;
    customBlockConverter?: (node: any, mediaUrl?: string) => Promise<string>;
    payload?: any;
    populateFields?: string[] | ((blockType: string) => string[]);
    customWrapper?: (content: string, options?: {
        preheader?: string;
        subject?: string;
        documentData?: Record<string, any>;
    }) => string | Promise<string>;
    subject?: string;
    documentData?: Record<string, any>;
}): Promise<string>;

/**
 * Email HTML validation utilities
 */
interface ValidationResult {
    valid: boolean;
    warnings: string[];
    errors: string[];
    stats: {
        sizeInBytes: number;
        imageCount: number;
        linkCount: number;
        hasExternalStyles: boolean;
        hasJavaScript: boolean;
    };
}
/**
 * Validate HTML for email compatibility
 */
declare function validateEmailHtml(html: string): ValidationResult;

declare function getBroadcastConfig(req: PayloadRequest, pluginConfig: NewsletterPluginConfig): Promise<BroadcastProviderConfig | null>;

declare function getResendConfig(req: PayloadRequest, pluginConfig: NewsletterPluginConfig): Promise<ResendProviderConfig | null>;

export { EMAIL_SAFE_CONFIG, type ValidationResult, convertToEmailSafeHtml, getBroadcastConfig, getResendConfig, validateEmailHtml };
