/**
 * Rate Limiter
 * Provides request throttling and rate limiting functionality
 */
import type { RateLimitOptions, RateLimitStore } from './types';
/**
 * In-memory rate limit store
 */
export declare class MemoryRateLimitStore implements RateLimitStore {
    private store;
    private cleanupInterval;
    constructor();
    get(key: string): Promise<number | null>;
    set(key: string, value: number, ttl: number): Promise<void>;
    increment(key: string, ttl: number): Promise<number>;
    reset(key: string): Promise<void>;
    private cleanup;
    destroy(): void;
}
/**
 * Redis-based rate limit store
 */
export declare class RedisRateLimitStore implements RateLimitStore {
    private redisClient;
    constructor(redisClient: any);
    get(key: string): Promise<number | null>;
    set(key: string, value: number, ttl: number): Promise<void>;
    increment(key: string, ttl: number): Promise<number>;
    reset(key: string): Promise<void>;
}
/**
 * Rate limiter implementation
 */
export declare class RateLimiter {
    private store;
    private options;
    constructor(options: RateLimitOptions, store?: RateLimitStore);
    /**
     * Check if request should be rate limited
     */
    checkLimit(request: any): Promise<{
        allowed: boolean;
        limit: number;
        remaining: number;
        resetTime: number;
        retryAfter?: number;
    }>;
    /**
     * Reset rate limit for a specific key
     */
    resetLimit(request: any): Promise<void>;
    /**
     * Default key generator using IP address
     */
    private defaultKeyGenerator;
    /**
     * Create middleware for Express-like frameworks
     */
    middleware(): (req: any, res: any, next: any) => Promise<void>;
}
/**
 * Sliding window rate limiter for more precise control
 */
export declare class SlidingWindowRateLimiter {
    private store;
    private options;
    constructor(options: RateLimitOptions, store?: RateLimitStore);
    checkLimit(request: any): Promise<{
        allowed: boolean;
        limit: number;
        remaining: number;
        resetTime: number;
        retryAfter?: number;
    }>;
    private defaultKeyGenerator;
    middleware(): (req: any, res: any, next: any) => Promise<void>;
}
//# sourceMappingURL=rate-limiter.d.ts.map