import * as parser from '@babel/parser';
import * as t from '@babel/types';
import { Rule } from '../rule';
import { CategoryType, CodeFinding, SeverityLevel } from '../../types';
/**
 * Rule to detect unthrottled event listeners
 */
export declare class UnthrottledEventListenersRule extends Rule {
    readonly id = "perf-unthrottled-events";
    readonly name = "Unthrottled Event Listeners";
    readonly description = "Detects event listeners that should be throttled or debounced";
    readonly category = CategoryType.Performance;
    readonly defaultSeverity = SeverityLevel.Warning;
    readonly requiresAST = true;
    private readonly highFrequencyEvents;
    private readonly listenerMethods;
    /**
     * Apply the rule to the given code
     *
     * @param code - Source code
     * @param ast - Parsed AST
     * @param filePath - Path to the file
     * @returns Array of findings
     */
    apply(code: string, ast: parser.ParseResult<t.File>, filePath: string): CodeFinding[];
    /**
     * Check if a function is already throttled or debounced
     *
     * @param node - Function node
     * @param scope - Current scope
     * @returns True if the function is throttled or debounced
     */
    private isThrottledOrDebounced;
    /**
     * Generate a suggestion for throttling an event listener
     *
     * @param code - Original code
     * @param eventName - Event name
     * @param methodName - Method name (addEventListener, on, etc.)
     * @returns Suggested code
     */
    protected generateSuggestion(_code: string, eventName?: string, methodName?: string): string;
    /**
     * Generate a suggestion for throttling a React event handler
     *
     * @param code - Original code
     * @param attributeName - Attribute name (e.g., onScroll)
     * @returns Suggested code
     */
    protected generateReactSuggestion(_code: string, attributeName: string): string;
    /**
     * Get the name of the function containing this code
     *
     * @param path - AST path
     * @returns Function name or undefined
     */
    protected getFunctionName(path: any): string | undefined;
}
