export interface RateLimiterStoreAdapter {
    resetAll(): void;
    increment(key: string): number;
}
export interface KeyMapper {
    (req: any): string;
}
export interface RateLimiterOptions {
    requestsLimit?: number;
    timeWindow?: number;
    keyMapper: KeyMapper;
    store?: RateLimiterStoreAdapter;
}
export declare class RateLimiter {
    static readonly DEFAULT_REQUESTS_LIMIT: number;
    static readonly DEFAULT_TIME_WINDOW: number;
    static readonly DEFAULT_OPTIONS: {
        requestsLimit: number;
        timeWindow: number;
    };
    private options;
    private store;
    private isRunning;
    private timeoutId;
    constructor(options: RateLimiterOptions);
    private cyclicReset();
    start(): void;
    stop(): void;
    skip(req: any): boolean;
    isValid(req: any): boolean;
    reset(): void;
}
export default RateLimiter;
