import { EventEmitter } from "node:events";
export interface AnomalyConfig {
    windowSize?: number;
    threshold?: number;
    minDataPoints?: number;
    modelType?: "isolation-forest" | "autoencoder" | "lstm";
    updateInterval?: number;
}
export interface MetricPoint {
    timestamp: number;
    value: number;
    metadata?: Record<string, unknown>;
}
export interface AnomalyResult {
    isAnomaly: boolean;
    score: number;
    expectedRange: [number, number];
    actualValue: number;
    timestamp: number;
    metric: string;
    severity: "low" | "medium" | "high" | "critical";
}
export declare class AnomalyDetector extends EventEmitter {
    private windowSize;
    private threshold;
    private minDataPoints;
    private modelType;
    private models;
    private dataBuffers;
    private statistics;
    private updateInterval;
    private updateTimer?;
    constructor(config?: AnomalyConfig);
    private startUpdateTimer;
    addDataPoint(metric: string, point: MetricPoint): Promise<AnomalyResult | null>;
    private detectAnomaly;
    private calculateStatistics;
    private isolationForestDetection;
    private buildIsolationTree;
    private getPathLength;
    private averagePathLength;
    private randomSample;
    private autoencoderDetection;
    private createAutoencoderModel;
    private lstmDetection;
    private createLSTMModel;
    private updateModels;
    getAnomalyHistory(metric: string, limit?: number): MetricPoint[];
    getStatistics(metric: string): {
        mean: number;
        std: number;
        min: number;
        max: number;
    } | undefined;
    evaluateMetrics(): Promise<Map<string, AnomalyResult[]>>;
    dispose(): void;
}
export declare function getAnomalyDetector(config?: AnomalyConfig): AnomalyDetector;
