/** * Rate Limiter Utility * * Implements sliding window rate limiting to prevent abuse and DoS attacks. * Supports different rate limits for different operations and automatic cleanup. */ export interface RateLimitEntry { blockedUntil?: number; lastRequest: number; requests: number[]; } export interface RateLimitOptions { cleanupIntervalMs?: number; rules?: Record; } export interface RateLimitRule { blockDurationMs?: number; maxRequests: number; windowMs: number; } /** * Rate Limiter Class * * Implements sliding window rate limiting with automatic cleanup. * Thread-safe and memory-efficient with bounded storage. */ export declare class RateLimiter { private cleanupInterval; private config; private rules; constructor(options?: RateLimitOptions); /** * Check if a request is allowed under rate limiting rules */ isAllowed(identifier: string, ruleName?: string): boolean; /** * Get rate limit status for an identifier */ getStatus(identifier: string, ruleName?: string): { allowed: boolean; blockedUntil?: number; remaining: number; resetTime: number; }; /** * Reset rate limit for an identifier */ reset(identifier: string): void; /** * Get all configured rules */ getRules(): Record; /** * Update a rate limit rule */ updateRule(ruleName: string, rule: RateLimitRule): void; /** * Get current statistics */ getStats(): { activeRules: string[]; blockedIdentifiers: number; totalIdentifiers: number; }; /** * Start automatic cleanup of old entries */ private startCleanup; /** * Clean up old rate limit entries */ private cleanup; /** * Stop cleanup and clear all data */ destroy(): void; } /** * Get the global rate limiter instance */ export declare function getRateLimiter(options?: RateLimitOptions): RateLimiter; /** * Set a custom global rate limiter instance */ export declare function setRateLimiter(rateLimiter: RateLimiter): void; /** * Check if a request is rate limited */ export declare function checkRateLimit(identifier: string, ruleName?: string): boolean; /** * Get rate limit status */ export declare function getRateLimitStatus(identifier: string, ruleName?: string): { allowed: boolean; blockedUntil?: number; remaining: number; resetTime: number; }; //# sourceMappingURL=rate-limiter.d.ts.map