/** * API Rate Limiting * * Implements rate limiting to prevent API abuse */ interface RateLimitConfig { windowMs: number; maxRequests: number; keyGenerator?: (request: Request) => string; skip?: (request: Request) => boolean; handler?: (request: Request) => Response; } interface RateLimitEntry { count: number; resetTime: number; } /** * Check if rate limit exceeded */ export declare function checkRateLimit(request: Request, config: RateLimitConfig): { allowed: boolean; limit: number; remaining: number; resetTime: number; }; /** * Create rate limit middleware */ export declare function createRateLimitMiddleware(config: RateLimitConfig): (request: Request, next: () => Promise) => Promise; /** * Cleanup expired rate limit entries across all stores */ export declare function cleanupRateLimits(): number; /** * Start rate limit cleanup interval */ export declare function startRateLimitCleanup(intervalMs?: number): NodeJS.Timeout; /** * Get rate limit stats */ export declare function getRateLimitStats(): { total: number; active: number; expired: number; }; /** * Rate limit preset configuration */ export interface RateLimitPresetConfig { /** Time window in milliseconds */ windowMs: number; /** Maximum requests per window */ maxRequests: number; } /** * Override one or more rate limit presets. * * Unknown keys create new presets; existing keys are merged with defaults. */ export declare function configureRateLimitPresets(overrides: Record>): void; /** * Get the current (possibly overridden) rate limit presets. */ export declare function getRateLimitPresets(): Readonly>; /** * Reset all presets to their defaults. */ export declare function resetRateLimitPresets(): void; /** * Rate limit presets - backward-compatible accessor. * * Reads from the mutable `rateLimitPresets` so overrides from * `configureRateLimitPresets()` are reflected automatically. */ export declare const RATE_LIMIT_PRESETS: Record; /** * Rate limit by user ID */ export declare function createUserRateLimit(config: Omit): (request: Request, next: () => Promise) => Promise; /** * Rate limit by API key */ export declare function createAPIKeyRateLimit(config: Omit): (request: Request, next: () => Promise) => Promise; /** * Rate limit by endpoint */ export declare function createEndpointRateLimit(config: Omit): (request: Request, next: () => Promise) => Promise; export declare function checkSlidingWindowRateLimit(request: Request, config: RateLimitConfig): { allowed: boolean; limit: number; remaining: number; }; export declare function checkTokenBucketRateLimit(request: Request, config: RateLimitConfig & { refillRate: number; }): { allowed: boolean; limit: number; remaining: number; }; /** * Clear rate limit for specific key */ export declare function clearRateLimit(key: string): void; /** * Clear all rate limits */ export declare function clearAllRateLimits(): void; /** * Get rate limit info for key */ export declare function getRateLimitInfo(key: string): RateLimitEntry | null; export {}; //# sourceMappingURL=rate-limit.d.ts.map