import { EventEmitter } from 'events';
export interface BackpressureConfig {
    enabled: boolean;
    maxQueueSize: number;
    backpressureThreshold: number;
    maxMemoryUsageMB: number;
    maxCpuUsagePercent: number;
    minDelayMs: number;
    maxDelayMs: number;
    delayGrowthFactor: number;
    activationThreshold: number;
    deactivationThreshold: number;
    resourceSamplingIntervalMs: number;
    maxErrorRatePercent: number;
    errorRateWindowSize: number;
}
export interface BackpressureMetrics {
    isActive: boolean;
    currentDelay: number;
    memoryUsageMB: number;
    cpuUsagePercent: number;
    queueLength: number;
    concurrency: number;
    errorRate: number;
    activationCount: number;
    totalDelayTime: number;
    peakMemoryMB: number;
    gcCount: number;
}
export interface ResourceSample {
    timestamp: number;
    memoryUsageMB: number;
    cpuUsagePercent: number;
    heapUsedMB: number;
    heapTotalMB: number;
}
export declare class AdaptiveBackpressureController extends EventEmitter {
    private config;
    private metrics;
    private resourceSamples;
    private errorWindow;
    private samplingTimer?;
    private isActive;
    private currentDelay;
    constructor(config?: Partial<BackpressureConfig>);
    /**
     * Update queue state and assess backpressure needs
     */
    updateQueueState(queueLength: number, concurrency: number, hasError?: boolean): void;
    /**
     * Get current adaptive delay in milliseconds
     */
    getCurrentDelay(): number;
    /**
     * Get current metrics snapshot
     */
    getMetrics(): BackpressureMetrics;
    /**
     * Check if backpressure is currently active
     */
    isBackpressureActive(): boolean;
    /**
     * Start resource monitoring
     */
    private startResourceMonitoring;
    /**
     * Stop resource monitoring
     */
    private stopResourceMonitoring;
    /**
     * Sample current resource usage
     */
    private sampleResources;
    /**
     * Check for resource warnings and emit events
     */
    private checkResourceWarnings;
    /**
     * Assess whether backpressure should be activated/deactivated
     */
    private assessBackpressure;
    /**
     * Calculate pressure factors from various metrics
     */
    private calculatePressureFactors;
    /**
     * Activate backpressure with initial delay calculation
     */
    private activateBackpressure;
    /**
     * Deactivate backpressure
     */
    private deactivateBackpressure;
    /**
     * Adjust delay based on current pressure
     */
    private adjustDelay;
    /**
     * Force garbage collection if available and conditions are met
     */
    triggerGarbageCollection(): boolean;
    /**
     * Cleanup and stop monitoring
     */
    destroy(): void;
}
//# sourceMappingURL=backpressure-controller.d.ts.map