/** * Sliding-window rate limiter. * * start.gg documents "no more than 80 requests per 60 seconds"; the default * budget stays below that. `acquire()` resolves when the caller may send one * request. Callers queue fairly (FIFO) via an internal promise chain. */ export interface RateLimiterOptions { maxRequests: number; windowMs: number; now?: () => number; sleep?: (ms: number) => Promise; } export declare class RateLimiter { private readonly maxRequests; private readonly windowMs; private readonly now; private readonly sleep; private timestamps; private queue; constructor(opts: RateLimiterOptions); /** Resolves when a request slot is available; records the slot as used. */ acquire(): Promise; private waitForSlot; }