import { type SecurityAlert, type AlertDeliveryResult } from '../types.js';
import { BaseAlertChannel, type BaseChannelConfig } from './base.js';
import type { SendInternalResult } from './base.js';
export interface EmailChannelConfig extends BaseChannelConfig {
    /** Email provider: 'smtp' or 'ses' */
    provider: 'smtp' | 'ses';
    /** From address */
    from: string;
    /** Default recipient addresses */
    defaultRecipients: string[];
    /** SMTP configuration (required if provider is 'smtp') */
    smtp?: {
        host: string;
        port: number;
        secure: boolean;
        auth?: {
            user: string;
            pass: string;
        };
    };
    /** AWS SES configuration (required if provider is 'ses') */
    ses?: {
        region: string;
        accessKeyId?: string;
        secretAccessKey?: string;
    };
    /** Subject prefix */
    subjectPrefix?: string;
    /** Include raw JSON in email */
    includeRawJson?: boolean;
}
/**
 * Email alert channel using SMTP or AWS SES
 */
export declare class EmailAlertChannel extends BaseAlertChannel {
    protected readonly channelType: "email";
    protected readonly channelName = "Email";
    protected readonly logger: import("pino").Logger<never, boolean>;
    private readonly provider;
    private readonly from;
    private readonly defaultRecipients;
    private readonly smtp?;
    private readonly ses?;
    private readonly subjectPrefix;
    private readonly includeRawJson;
    private transporter;
    constructor(config: EmailChannelConfig);
    /**
     * Initialize the email transporter
     */
    private initTransporter;
    /**
     * Send an alert via email
     */
    protected sendInternal(alert: SecurityAlert): Promise<SendInternalResult>;
    /**
     * Send an alert via email to specific recipients
     */
    sendToRecipients(alert: SecurityAlert, recipients: string[]): Promise<AlertDeliveryResult>;
    /**
     * Format alert as email message
     */
    private formatMessage;
    /**
     * Format plain text email
     */
    private formatPlainText;
    /**
     * Format HTML email
     */
    private formatHtml;
    private htmlTableRow;
    private escapeHtml;
    /**
     * Test the email connection
     */
    test(): Promise<boolean>;
}
/**
 * Create a new email alert channel
 */
export declare function createEmailChannel(config: EmailChannelConfig): EmailAlertChannel;
//# sourceMappingURL=email.d.ts.map