export interface EmailEvent {
    id: string;
    timestamp: string;
    type: 'email_sent' | 'email_failed' | 'connection_verified' | 'connection_failed';
    provider: 'smtp' | 'sendgrid' | 'ses';
    recipient?: string;
    subject?: string;
    messageId?: string;
    duration?: number;
    error?: {
        message: string;
        code?: string;
        details?: any;
    };
    metadata?: Record<string, any>;
}
export interface ObservabilityConfig {
    enabled: boolean;
    logLevel?: 'debug' | 'info' | 'warn' | 'error';
    includeSensitiveData?: boolean;
    customLogger?: (event: EmailEvent) => void;
    metricsCollector?: (metrics: EmailMetrics) => void;
    tracingEnabled?: boolean;
}
export interface EmailMetrics {
    totalSent: number;
    totalFailed: number;
    successRate: number;
    averageSendTime: number;
    providerBreakdown: {
        smtp: {
            sent: number;
            failed: number;
            avgTime: number;
        };
        sendgrid: {
            sent: number;
            failed: number;
            avgTime: number;
        };
        ses: {
            sent: number;
            failed: number;
            avgTime: number;
        };
    };
    last24Hours: {
        sent: number;
        failed: number;
        avgTime: number;
    };
    sesMetrics?: {
        quotaUsage: number;
        bounceRate: number;
        complaintRate: number;
        deliveryRate: number;
        lastQuotaCheck?: string;
    };
}
export interface AuditLog {
    timestamp: string;
    action: 'email_sent' | 'email_failed' | 'configuration_changed' | 'connection_verified';
    userId?: string;
    ipAddress?: string;
    emailDetails: {
        to: string[];
        subject: string;
        provider: string;
        messageId?: string;
    };
    metadata?: Record<string, any>;
}
//# sourceMappingURL=observability.interface.d.ts.map