/**
 * Core email request interface
 * This is framework-agnostic and can be used by any application
 */
export interface EmailRequest {
    /**
     * Recipient email address
     */
    to: string | string[];
    /**
     * Email subject line
     */
    subject: string;
    /**
     * Plain text content (optional if html is provided)
     */
    text?: string;
    /**
     * HTML content (optional if text is provided)
     */
    html?: string;
    /**
     * Sender email address
     */
    from?: string;
    /**
     * CC recipients
     */
    cc?: string | string[];
    /**
     * BCC recipients
     */
    bcc?: string | string[];
    /**
     * Reply-to email address
     */
    replyTo?: string;
    /**
     * Email attachments
     */
    attachments?: EmailRequestAttachment[];
    /**
     * Custom headers
     */
    headers?: Record<string, string>;
    template?: {
        id: string;
        engine: 'native' | 'custom';
        data: Record<string, any>;
        version?: string;
        locale?: string;
    };
    sendGridTemplate?: {
        dynamicTemplateId: string;
        dynamicTemplateData: Record<string, any>;
    };
    sesTemplate?: {
        templateName: string;
        templateData: Record<string, any>;
    };
}
/**
 * Email attachment interface for requests
 */
export interface EmailRequestAttachment {
    filename: string;
    content: Buffer | string;
    contentType?: string;
    encoding?: string;
    path?: string;
}
/**
 * Email response interface for requests
 */
export interface EmailRequestResponse {
    success: boolean;
    messageId?: string;
    error?: {
        message: string;
        code: string;
        provider?: string;
        details?: {
            rejected?: string[];
            accepted?: string[];
            smtpResponse?: string;
            sendgridResponse?: any;
            sesResponse?: any;
            errorType?: string;
            statusCode?: number;
            suggestion?: string;
            sendgridError?: any;
            headers?: any;
            rawError?: any;
        };
    };
}
/**
 * Email validation result
 */
export interface EmailValidationResult {
    isValid: boolean;
    errors: string[];
    suggestions?: string[];
}
//# sourceMappingURL=email-request.interface.d.ts.map