import { MemCacheClient } from '../cacheClient/MemCacheClient'; import { RedisClient } from '../cacheClient/RedisClient'; export type RateProviderType = 'memory' | 'redis'; export type RequestData = { requestCount: number; windowStartTimestamp: number; }; export type RateLimitOptions = { windowSeconds?: number; maxRequests?: number; prefix?: string; }; export declare class RateLimitProvider { private maxWindowTimeMs; private maxRequests; private client; private prefix; constructor(client?: MemCacheClient | RedisClient, options?: RateLimitOptions); getRequestData(userId: string): Promise; isWithinLimits(userId: string): Promise; isAvailable(): boolean; /** * Reset request counters for a user by deleting the stored entry. */ reset(userId: string): Promise; } export declare const getRateLimitProvider: (type?: RateProviderType, options?: RateLimitOptions) => RateLimitProvider; export default RateLimitProvider; //# sourceMappingURL=RateLimitProvider.d.ts.map