import { Request } from "express";
import { RateLimiterConfig, RateLimitResult, RateLimitInfo } from "../interfaces/rate-limiter.interface";
export declare class RateLimiterService {
    private config;
    private cacheProvider;
    private isInitialized;
    constructor(config: RateLimiterConfig);
    /**
     * Initialize the cache provider
     */
    initialize(): Promise<void>;
    /**
     * Check if a request is allowed based on rate limiting rules
     */
    checkLimit(req: Request): Promise<RateLimitResult>;
    /**
     * Reset rate limit for a specific key
     */
    resetLimit(key: string): Promise<void>;
    /**
     * Get current rate limit info for a key
     */
    getLimitInfo(key: string): Promise<RateLimitInfo | null>;
    /**
     * Ensure cache provider is initialized
     */
    private ensureInitialized;
    /**
     * Close the cache provider connection
     */
    close(): Promise<void>;
    /**
     * Get the current configuration
     */
    getConfig(): Required<RateLimiterConfig>;
}
