import { EmailEvent, ObservabilityConfig, EmailMetrics, AuditLog } from '../interfaces/observability.interface';
import { EmailOptions, EmailResponse, EmailProviderType } from '../interfaces/email-options.interface';
export declare class ObservabilityService {
    private static instance;
    private config;
    private events;
    private metrics;
    private auditLogs;
    private constructor();
    static getInstance(config?: ObservabilityConfig): ObservabilityService;
    private initializeMetrics;
    /**
     * Track email sending attempt
     */
    trackEmailAttempt(options: EmailOptions, provider: EmailProviderType, _startTime: number): string;
    /**
     * Track email success
     */
    trackEmailSuccess(eventId: string, response: EmailResponse, duration: number, provider: EmailProviderType): void;
    /**
     * Track email failure
     */
    trackEmailFailure(eventId: string, error: any, duration: number, provider: EmailProviderType): void;
    /**
     * Track connection verification
     */
    trackConnectionVerification(provider: EmailProviderType, success: boolean, duration?: number): void;
    /**
     * Track SES quota usage
     */
    trackSesQuotaUsage(quotaData: {
        max24HourSend: number;
        sentLast24Hours: number;
        maxSendRate: number;
    }): void;
    /**
     * Track SES sending statistics
     */
    trackSesStatistics(statsData: {
        deliveryAttempts: number;
        bounces: number;
        complaints: number;
        rejects: number;
    }): void;
    /**
     * Track SES error with specific error type
     */
    trackSesError(error: any, errorType: 'MessageRejected' | 'MailFromDomainNotVerified' | 'ConfigurationSetDoesNotExist' | 'TemplateDoesNotExist' | 'AccountSendingPaused' | 'SendingPaused' | 'MessageTooLarge' | 'InvalidParameterValue' | 'ValidationError' | 'ThrottlingException' | 'ServiceUnavailable' | 'InternalError' | 'NetworkError' | 'TimeoutError', duration: number): void;
    /**
     * Get current metrics
     */
    getMetrics(): EmailMetrics;
    /**
     * Get SES-specific metrics
     */
    getSesMetrics(): {
        quotaUsage: number;
        bounceRate: number;
        complaintRate: number;
        deliveryRate: number;
        lastQuotaCheck?: string;
    } | undefined;
    /**
     * Get metrics for a specific provider
     */
    getProviderMetrics(provider: EmailProviderType): {
        sent: number;
        failed: number;
        avgTime: number;
    } | {
        sent: number;
        failed: number;
        avgTime: number;
    } | {
        sent: number;
        failed: number;
        avgTime: number;
    };
    /**
     * Get events within time range
     */
    getEvents(startTime?: Date, endTime?: Date): EmailEvent[];
    /**
     * Get audit logs
     */
    getAuditLogs(startTime?: Date, endTime?: Date): AuditLog[];
    /**
     * Clear all data (useful for testing)
     */
    clearData(): void;
    private sanitizeRecipients;
    private updateMetrics;
    private createAuditLog;
    private logEvent;
    /**
     * Create email event with common properties
     * @private
     */
    private createEmailEvent;
    /**
     * Create connection verification event
     * @private
     */
    private createConnectionEvent;
}
//# sourceMappingURL=observability.service.d.ts.map