import { EventEmitter } from 'events';
export interface MemoryManagerConfig {
    warningThreshold: number;
    criticalThreshold: number;
    cleanupInterval: number;
    enableAutoCleanup: boolean;
    enableGcForcing: boolean;
    gcInterval: number;
    enableLeakDetection: boolean;
    leakDetectionInterval: number;
    trendSampleCount: number;
}
export interface MemorySnapshot {
    timestamp: number;
    rss: number;
    heapUsed: number;
    heapTotal: number;
    external: number;
    arrayBuffers: number;
    usagePercentage: number;
}
export interface MemoryStats {
    current: MemorySnapshot;
    peak: MemorySnapshot;
    average: {
        rss: number;
        heapUsed: number;
        heapTotal: number;
    };
    growthRate: number;
    cleanupCount: number;
    gcCount: number;
    leakAlerts: number;
    pressureLevel: 'normal' | 'warning' | 'critical';
}
export interface LeakDetection {
    leakDetected: boolean;
    severity: 'low' | 'medium' | 'high';
    growthTrend: 'stable' | 'growing' | 'rapidly_growing';
    growthRatePerMinute: number;
    confidence: number;
    recommendations: string[];
}
export interface ManagedResource {
    id: string;
    type: string;
    size: number;
    createdAt: number;
    lastAccessed: number;
    cleanup: () => void;
    disposable: boolean;
    priority: 'low' | 'medium' | 'high';
}
export declare class MemoryManager extends EventEmitter {
    private config;
    private snapshots;
    private managedResources;
    private cleanupTimer?;
    private gcTimer?;
    private leakDetectionTimer?;
    private stats;
    private isRunning;
    private peakSnapshot?;
    constructor(config?: Partial<MemoryManagerConfig>);
    start(): void;
    stop(): void;
    registerResource(resource: Omit<ManagedResource, 'createdAt' | 'lastAccessed'>): void;
    unregisterResource(resourceId: string): void;
    touchResource(resourceId: string): void;
    forceCleanup(): Promise<number>;
    forceGarbageCollection(): void;
    getStats(): MemoryStats;
    getSnapshots(count?: number): MemorySnapshot[];
    getManagedResources(): Array<{
        id: string;
        type: string;
        size: number;
        age: number;
        lastAccessed: number;
        priority: string;
    }>;
    detectMemoryLeaks(): LeakDetection;
    setPressureLevel(level: MemoryStats['pressureLevel']): void;
    updateConfig(newConfig: Partial<MemoryManagerConfig>): void;
    private takeMemorySnapshot;
    private updateStats;
    private updatePressureLevel;
    private handleCriticalMemoryPressure;
    private startCleanupMonitoring;
    private startGcMonitoring;
    private startLeakDetection;
    private performCleanup;
    private calculateGrowthRates;
    private calculateGrowthConsistency;
    private generateLeakRecommendations;
}
//# sourceMappingURL=memory-manager.d.ts.map