import type { RateLimiter, RateLimiterRequestOptions } from '../RateLimiter'; import type { TimeBasedRateLimiterConfig } from './TimeBasedRateLimiter'; export interface PartitionedTimeBasedRateLimiterConfig extends TimeBasedRateLimiterConfig { getPartitionKey: (req: Req) => string | null; } export declare class PartitionedTimeBasedRateLimiter implements RateLimiter { private readonly _partitionedQueue; private readonly _usedFromBucket; private readonly _bucketSize; private readonly _timeFrame; private readonly _callback; private readonly _partitionKeyCallback; private readonly _counterTimers; private _paused; private _destroyed; private readonly _logger; constructor({ logger, bucketSize, timeFrame, doRequest, getPartitionKey }: PartitionedTimeBasedRateLimiterConfig); request(req: Req, options?: RateLimiterRequestOptions): Promise; clear(): void; pause(): void; resume(): void; destroy(): void; private _getPartitionedQueue; private _runRequest; private _runNextRequest; }