export interface TrackedListener {
    target: EventTarget;
    event: string;
    handler: EventListenerOrEventListenerObject;
    addedAt: Date;
    id: string;
}
export interface PotentialLeak {
    event: string;
    count: number;
    oldestListener: Date;
    targets: string[];
}
/**
 * EventListenerManager - Prevents memory leaks by tracking and managing event listeners
 *
 * Key Features:
 * - Tracks all addEventListener calls for automatic cleanup
 * - Prevents duplicate listeners
 * - Graceful error handling during cleanup
 * - Memory leak detection and reporting
 * - Backward compatible with standard addEventListener
 */
export declare class EventListenerManager {
    private listeners;
    private listenerIdCounter;
    /**
     * Add an event listener with automatic tracking for cleanup
     * Prevents duplicate listeners for the same target/event/handler combination
     */
    addEventListener(target: EventTarget | null | undefined, event: string, handler: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
    /**
     * Remove a specific event listener
     */
    removeEventListener(target: EventTarget, event: string, handler: EventListenerOrEventListenerObject): boolean;
    /**
     * Remove all tracked event listeners
     * Essential for preventing memory leaks
     */
    cleanup(): void;
    /**
     * Get count of currently tracked listeners
     */
    getActiveListenerCount(): number;
    /**
     * Get listeners filtered by event type
     */
    getListenersByType(eventType: string): TrackedListener[];
    /**
     * Get detailed information about all tracked listeners
     */
    getDetailedListenerInfo(): TrackedListener[];
    /**
     * Detect potential memory leaks based on listener patterns
     */
    detectPotentialLeaks(): PotentialLeak[];
    /**
     * Generate unique ID for listener to prevent duplicates
     */
    private generateListenerId;
    /**
     * Get description of event target for debugging
     */
    private getTargetDescription;
    /**
     * Get debugging statistics
     */
    getStats(): {
        totalListeners: number;
        eventTypes: Record<string, number>;
        oldestListener: Date | null;
        targetTypes: Record<string, number>;
    };
}
/**
 * Global instance for easy access across the application
 * This can be used to ensure all event listeners are tracked globally
 */
export declare const globalEventListenerManager: EventListenerManager;
//# sourceMappingURL=event-listener-manager.d.ts.map