export interface BucketState { tokens: number; lastRefill: number; } export interface RateLimiterStore { get(key: string): Promise; set(key: string, state: BucketState): Promise; /** Atomically consume tokens. When implemented, replaces get-then-set to prevent TOCTOU race conditions under concurrency. Returns null when the atomic operation could not be completed (caller should retry or fall back). */ atomicConsume?(key: string, tokens: number, capacity: number, refillRate: number): Promise; } export interface ConsumeResult { allowed: boolean; remaining: number; retryAfter?: number; } /** Token bucket rate limiter. Capacity = max tokens, refillRate = tokens added per second. */ export declare class RateLimiter { private store; private options; constructor(store: RateLimiterStore, options: { capacity: number; refillRate: number; }); /** Consumes `tokens` for `key`. Returns allowed/denied with remaining count and optional retry delay. */ consume(key: string, tokens?: number): Promise; } //# sourceMappingURL=rate-limiter.d.ts.map