/** Rate Limiting Implementation using rate-limiter-flexible */ import { RateLimiterRedis, RateLimiterMemory } from 'rate-limiter-flexible'; import type { RateLimiterAbstract } from 'rate-limiter-flexible'; export interface RateLimitConfig { windowMs: number; maxRequests: number; keyGenerator?: (req: any) => string; points?: number; duration?: number; } export interface RateLimitResult { allowed: boolean; remaining: number; resetTime: number; retryAfter?: number; } export interface RateLimitStats { isDistributed: boolean; redisConnected: boolean; } export declare const createDistributedRateLimiter: (config: RateLimitConfig) => Promise; export declare const createInMemoryRateLimiter: (config: RateLimitConfig) => RateLimiterMemory; export declare const checkRateLimit: (limiter: RateLimiterAbstract, req: any, config: RateLimitConfig) => Promise; export declare const resetRateLimitKey: (limiter: RateLimiterAbstract, key: string) => Promise; export declare const getRateLimitStats: (limiter: RateLimiterAbstract) => RateLimitStats; export declare const getDistributedRateLimiter: (config: RateLimitConfig) => Promise; export declare const getInMemoryRateLimiter: (config: RateLimitConfig) => RateLimiterMemory; export declare class DistributedRateLimiter { private limiter; private config; constructor(config: RateLimitConfig); private setupLimiter; isAllowed(req: any): Promise; resetKey(key: string): Promise; getStats(): RateLimitStats; get rateLimiter(): RateLimiterAbstract; } export declare class InMemoryRateLimiter { private limiter; private config; constructor(config: RateLimitConfig); isAllowed(req: any): Promise; resetKey(key: string): Promise; getStats(): RateLimitStats; get rateLimiter(): RateLimiterMemory; } export { RateLimiterRedis, RateLimiterMemory }; export type { RateLimiterAbstract }; declare const _default: { createDistributedRateLimiter: (config: RateLimitConfig) => Promise; createInMemoryRateLimiter: (config: RateLimitConfig) => RateLimiterMemory; checkRateLimit: (limiter: RateLimiterAbstract, req: any, config: RateLimitConfig) => Promise; resetRateLimitKey: (limiter: RateLimiterAbstract, key: string) => Promise; getRateLimitStats: (limiter: RateLimiterAbstract) => RateLimitStats; getDistributedRateLimiter: (config: RateLimitConfig) => Promise; getInMemoryRateLimiter: (config: RateLimitConfig) => RateLimiterMemory; DistributedRateLimiter: typeof DistributedRateLimiter; InMemoryRateLimiter: typeof InMemoryRateLimiter; RateLimiterRedis: typeof RateLimiterRedis; RateLimiterMemory: typeof RateLimiterMemory; }; export default _default; //# sourceMappingURL=rateLimiter.d.ts.map