import { Logger } from '../../utils/logger';
export interface RateLimitConfig {
    windowMs: number;
    maxRequests: number;
    keyGenerator?: (identifier: string) => string;
    skipSuccessfulRequests?: boolean;
    skipFailedRequests?: boolean;
    resetOnSuccessfulRequest?: boolean;
}
export interface RateLimitInfo {
    totalRequests: number;
    remainingRequests: number;
    resetTime: number;
    retryAfter?: number;
}
export interface RateLimitResult {
    allowed: boolean;
    info: RateLimitInfo;
}
export declare class RateLimitService {
    private readonly logger;
    private readonly store;
    private readonly cleanupInterval;
    constructor(logger: Logger);
    checkRateLimit(identifier: string, config: RateLimitConfig): RateLimitResult;
    recordRequest(identifier: string, config: RateLimitConfig, success?: boolean): void;
    getRateLimitInfo(identifier: string, config: RateLimitConfig): RateLimitInfo | null;
    resetRateLimit(identifier: string, config: RateLimitConfig): void;
    getStats(): {
        totalKeys: number;
        activeRecords: number;
        memoryUsage: number;
    };
    private cleanup;
    destroy(): void;
}
export declare const rateLimitConfigs: {
    readonly strict: {
        readonly windowMs: number;
        readonly maxRequests: 5;
    };
    readonly standard: {
        readonly windowMs: number;
        readonly maxRequests: 60;
    };
    readonly generous: {
        readonly windowMs: number;
        readonly maxRequests: 300;
    };
    readonly hourly: {
        readonly windowMs: number;
        readonly maxRequests: 1000;
    };
    readonly daily: {
        readonly windowMs: number;
        readonly maxRequests: 10000;
    };
};
//# sourceMappingURL=RateLimitService.d.ts.map