/** * RateLimiter - Implements rate limiting for API calls to prevent abuse * * Features: * - Token bucket algorithm for flexible rate limiting * - Configurable limits per time window * - Memory-efficient implementation * - Thread-safe for concurrent requests */ export interface RateLimiterConfig { maxRequests: number; windowMs: number; minDelayMs?: number; } export interface RateLimitStatus { allowed: boolean; retryAfterMs?: number; remainingTokens: number; resetTime: Date; } export declare class RateLimiter { private tokens; private lastRefill; private lastRequest; private readonly maxTokens; private readonly refillRate; private readonly minDelay; constructor(config: RateLimiterConfig); /** * Check if a request is allowed under the rate limit * @returns Status object indicating if request is allowed */ checkLimit(): RateLimitStatus; /** * Consume a token for an allowed request * Should be called after checkLimit() returns allowed: true */ consumeToken(): void; /** * Get current rate limit status without consuming a token */ getStatus(): RateLimitStatus; /** * Reset the rate limiter to full capacity * Useful for testing or manual intervention */ reset(): void; /** * Refill tokens based on time elapsed */ private refillTokens; /** * Calculate when the rate limit window will reset */ private getResetTime; /** * Get human-readable rate limit information */ toString(): string; } /** * Factory function to create common rate limiters */ export declare class RateLimiterFactory { /** * GitHub API rate limiter (60 requests per hour for unauthenticated) */ static createGitHubLimiter(): RateLimiter; /** * Conservative rate limiter for update checks * Allows 10 checks per hour with 30 second minimum delay */ static createUpdateCheckLimiter(): RateLimiter; /** * Strict rate limiter for sensitive operations * Allows 5 requests per hour with 1 minute minimum delay */ static createStrictLimiter(): RateLimiter; /** * Rate limiter for permission_prompt evaluations (Issue #625 Phase 4). * 100 requests per 60-second window — high throughput for rapid tool calls. */ static createPermissionPromptLimiter(maxRequests?: number, windowMs?: number): RateLimiter; /** * Rate limiter for CLI approval record creation (Issue #625 Phase 4). * Default 20 requests per 60-second window — prevents approval request flooding. * Configurable via parameters (MCPAQLHandler reads from env vars). */ static createCliApprovalLimiter(maxRequests?: number, windowMs?: number): RateLimiter; } //# sourceMappingURL=RateLimiter.d.ts.map