/** * Client-Side Rate Limiter * * Implements client-side rate limiting and anti-spam mechanisms * Uses browser storage to track request history */ export interface RateLimitConfig { maxRequests: number; windowMs: number; blockDurationMs?: number; storageKey?: string; } export interface RateLimitStatus { allowed: boolean; remaining: number; resetAt: number; blockedUntil?: number; } export declare class RateLimiterService { private config; private storageKey; private static readonly DEFAULT_STORAGE_KEY; constructor(config: RateLimitConfig); /** * Check if a request is allowed */ checkLimit(key?: string): RateLimitStatus; /** * Record a request */ recordRequest(key?: string): RateLimitStatus; /** * Reset rate limit for a key */ reset(key?: string): void; /** * Reset all rate limits */ resetAll(): void; /** * Get rate limit status without recording */ getStatus(key?: string): RateLimitStatus; /** * Check if currently blocked */ isBlocked(key?: string): boolean; /** * Get time until reset (in milliseconds) */ getTimeUntilReset(key?: string): number; private getStorageKey; private getData; private saveData; } /** * Default rate limiters for common use cases */ export declare const RateLimitPresets: { strict: { maxRequests: number; windowMs: number; }; moderate: { maxRequests: number; windowMs: number; }; lenient: { maxRequests: number; windowMs: number; }; payment: { maxRequests: number; windowMs: number; blockDurationMs: number; }; registration: { maxRequests: number; windowMs: number; blockDurationMs: number; }; }; /** * Rate limiter decorator for methods */ export declare function rateLimit(limiter: RateLimiterService, key?: string): (target: any, propertyKey: string, descriptor: PropertyDescriptor) => PropertyDescriptor; //# sourceMappingURL=rate-limiter.service.d.ts.map