import { EventEmitter } from "node:events";
export interface ForecastConfig {
    horizonSteps?: number;
    confidenceLevel?: number;
    modelType?: 'arima' | 'prophet' | 'lstm' | 'transformer';
    seasonality?: 'auto' | 'daily' | 'weekly' | 'monthly' | 'none';
    updateFrequency?: number;
}
export interface TimeSeriesData {
    timestamp: number;
    value: number;
    metadata?: Record<string, unknown>;
}
export interface Forecast {
    timestamp: number;
    predictedValue: number;
    lowerBound: number;
    upperBound: number;
    confidence: number;
}
export interface TrendAnalysis {
    direction: 'increasing' | 'decreasing' | 'stable';
    strength: number;
    changeRate: number;
    seasonalPattern?: {
        period: number;
        amplitude: number;
        phase: number;
    };
}
export declare class PredictiveAnalytics extends EventEmitter {
    private horizonSteps;
    private confidenceLevel;
    private modelType;
    private seasonality;
    private updateFrequency;
    private models;
    private dataHistory;
    private forecasts;
    private trends;
    private updateTimer?;
    constructor(config?: ForecastConfig);
    private startUpdateTimer;
    addDataPoint(metric: string, data: TimeSeriesData): Promise<void>;
    generateForecast(metric: string): Promise<Forecast[]>;
    private analyzeTrend;
    private detectSeasonality;
    private computeFFT;
    private calculateStd;
    private lstmForecast;
    private createLSTMModel;
    private transformerForecast;
    private createTransformerModel;
    private arimaForecast;
    private calculateARCoefficients;
    private calculateMACoefficients;
    private prophetForecast;
    private extractTrend;
    private extractSeasonal;
    private calculatePredictionErrors;
    private calculateAverageInterval;
    private getZScore;
    private shouldUpdateModel;
    private getLastTrainingSize;
    private updateForecasts;
    getForecast(metric: string): Forecast[] | undefined;
    getTrend(metric: string): TrendAnalysis | undefined;
    evaluateAccuracy(metric: string): Promise<{
        mae: number;
        rmse: number;
        mape: number;
    }>;
    dispose(): void;
}
export declare function getPredictiveAnalytics(config?: ForecastConfig): PredictiveAnalytics;
