/**
 * 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