import { OnModuleInit } from '@nestjs/common';
import { Observable } from 'rxjs';
import { AnalyticsService } from './analytics.service';
import { PerformanceCorrelationService } from './performance-correlation.service';
export interface AnomalyDetection {
    id: string;
    timestamp: Date;
    type: 'performance' | 'error' | 'traffic' | 'resource' | 'query';
    severity: 'low' | 'medium' | 'high' | 'critical';
    component: string;
    metric: string;
    value: number;
    baseline: number;
    deviation: number;
    confidence: number;
    description: string;
    suggestedActions: string[];
}
export interface RegressionAnalysis {
    id: string;
    timestamp: Date;
    metric: string;
    component: string;
    timeWindow: string;
    trend: 'improving' | 'degrading' | 'stable';
    regressionRate: number;
    confidence: number;
    predictedValue: number;
    actualValue: number;
    impactAssessment: {
        severity: 'low' | 'medium' | 'high' | 'critical';
        affectedUsers: number;
        estimatedLoss: string;
        timeToRevert: string;
    };
}
export interface QueryOptimizationSuggestion {
    id: string;
    timestamp: Date;
    queryHash: string;
    query: string;
    table: string;
    currentPerformance: {
        executionTime: number;
        ioOperations: number;
        cpuUsage: number;
    };
    optimizationStrategy: {
        type: 'index' | 'rewrite' | 'cache' | 'partition' | 'normalize';
        suggestion: string;
        estimatedImprovement: number;
        confidence: number;
        effort: 'low' | 'medium' | 'high';
    };
    sqlRecommendation?: string;
    indexSuggestion?: {
        table: string;
        columns: string[];
        type: 'btree' | 'hash' | 'gin' | 'gist';
    };
}
export interface PredictiveInsight {
    id: string;
    timestamp: Date;
    predictionType: 'load' | 'failure' | 'performance' | 'resource';
    timeHorizon: '1h' | '6h' | '24h' | '7d' | '30d';
    metric: string;
    component: string;
    currentValue: number;
    predictedValue: number;
    confidence: number;
    trend: 'increasing' | 'decreasing' | 'stable' | 'volatile';
    riskLevel: 'low' | 'medium' | 'high' | 'critical';
    recommendedActions: string[];
    thresholds: {
        warning: number;
        critical: number;
    };
}
export interface MLAlert {
    id: string;
    timestamp: Date;
    type: 'anomaly' | 'regression' | 'prediction' | 'optimization';
    severity: 'info' | 'warning' | 'error' | 'critical';
    title: string;
    description: string;
    component: string;
    metric?: string;
    triggeredBy: {
        value: number;
        threshold: number;
        confidence: number;
    };
    actions: Array<{
        type: 'investigate' | 'optimize' | 'scale' | 'alert' | 'rollback';
        description: string;
        priority: number;
        automated: boolean;
    }>;
    relatedInsights: string[];
}
export declare class MLAnalyticsService implements OnModuleInit {
    private readonly analyticsService;
    private readonly performanceCorrelationService;
    private readonly logger;
    private readonly dataHistory;
    private readonly anomalySubject;
    private readonly regressionSubject;
    private readonly optimizationSubject;
    private readonly predictionSubject;
    private readonly alertSubject;
    private readonly config;
    constructor(analyticsService: AnalyticsService, performanceCorrelationService: PerformanceCorrelationService);
    onModuleInit(): Promise<void>;
    private startMLAnalysis;
    private updateDataHistory;
    private performAnomalyDetection;
    private performRegressionAnalysis;
    private generatePredictiveInsights;
    private analyzeQueryOptimizationOpportunities;
    private performAdvancedAnalysis;
    private classifyAnomalyType;
    private calculateAnomalySeverity;
    private getComponentFromMetric;
    private generateAnomalyDescription;
    private generateAnomalySuggestions;
    private assessRegressionImpact;
    private calculateTrend;
    private calculatePredictionConfidence;
    private getPredictionType;
    private assessPredictionRisk;
    private generatePredictionRecommendations;
    private getMetricThresholds;
    private suggestOptimizationStrategy;
    private generateAlertsFromAnomalies;
    private estimateAffectedUsers;
    private estimateLoss;
    private estimateRevertTime;
    getAnomalies(): Observable<AnomalyDetection[]>;
    getRegressionAnalysis(): Observable<RegressionAnalysis[]>;
    getOptimizationSuggestions(): Observable<QueryOptimizationSuggestion[]>;
    getPredictiveInsights(): Observable<PredictiveInsight[]>;
    getMLAlerts(): Observable<MLAlert[]>;
    getCurrentAnomalies(): AnomalyDetection[];
    getCurrentRegressions(): RegressionAnalysis[];
    getCurrentOptimizations(): QueryOptimizationSuggestion[];
    getCurrentPredictions(): PredictiveInsight[];
    getCurrentAlerts(): MLAlert[];
    acknowledgeAlert(alertId: string): boolean;
    dismissAnomaly(anomalyId: string): boolean;
    getMLMetrics(): {
        anomaliesDetected: number;
        regressionsAnalyzed: number;
        optimizationSuggestions: number;
        predictiveInsights: number;
        activeAlerts: number;
        dataHistorySize: number;
    };
}
