/** * Rate limiter module for API calls * * Uses factory + lazy initialization singleton pattern: * - RateLimiter class: Delay-based rate limiting with configurable requests/second * - getRateLimiter(api, config): Returns singleton per API type * - resetRateLimiters(): Clears singletons for test isolation */ /** * API types supported by the rate limiter */ export type ApiType = "pubmed" | "crossref" | "isbn" | "arxiv"; /** * Configuration for rate limiter */ export interface RateLimiterConfig { pubmedApiKey?: string; } /** * Rate limiter interface */ export interface RateLimiter { readonly requestsPerSecond: number; readonly intervalMs: number; readonly lastRequestTime: number; acquire(): Promise; } /** * Create a new rate limiter instance */ export declare function createRateLimiter(options: { requestsPerSecond: number; }): RateLimiter; /** * Get singleton rate limiter for the specified API type * * Note: Configuration is only used on first call. Subsequent calls * return the existing singleton regardless of config changes. */ export declare function getRateLimiter(api: ApiType, config: RateLimiterConfig): RateLimiter; /** * Reset all rate limiter singletons (for test isolation) */ export declare function resetRateLimiters(): void; //# sourceMappingURL=rate-limiter.d.ts.map