/** * Async Utilities Module * * Production-ready async patterns for rate limiting, throttling, * concurrency control, and caching with TTL. * * Principal Investigator: Bo Shang * Framework: agi-cli */ export interface RateLimiterConfig { maxRequests: number; windowMs: number; } export interface ThrottleConfig { intervalMs: number; leading?: boolean; trailing?: boolean; } export interface CacheEntry { value: T; expiresAt: number; } export interface CacheConfig { ttlMs: number; maxSize?: number; } export interface ConcurrencyConfig { maxConcurrent: number; timeout?: number; } export declare class RateLimiter { private tokens; private lastRefill; private readonly maxTokens; private readonly refillRate; constructor(config: RateLimiterConfig); private refill; acquire(): Promise; tryAcquire(): boolean; get availableTokens(): number; } export declare function throttle unknown>(fn: T, config: ThrottleConfig): (...args: Parameters) => ReturnType | undefined; export declare function debounce unknown>(fn: T, delayMs: number): (...args: Parameters) => void; export declare class TTLCache { private cache; private readonly ttlMs; private readonly maxSize; constructor(config: CacheConfig); get(key: K): V | undefined; set(key: K, value: V, ttlMs?: number): void; has(key: K): boolean; delete(key: K): boolean; clear(): void; get size(): number; private prune; } export declare function memoize unknown>(fn: T, config: CacheConfig & { keyFn?: (...args: Parameters) => string; }): T; export declare class ConcurrencyPool { private running; private queue; private readonly maxConcurrent; private readonly timeout; constructor(config: ConcurrencyConfig); run(fn: () => Promise): Promise; private acquire; private release; get pending(): number; get active(): number; } export declare function parallelMap(items: T[], fn: (item: T, index: number) => Promise, concurrency?: number): Promise; export declare function sleep(ms: number): Promise; export declare function withTimeout(promise: Promise, timeoutMs: number, errorMessage?: string): Promise; export declare function retry(fn: () => Promise, config?: { maxRetries?: number; baseDelayMs?: number; maxDelayMs?: number; backoffMultiplier?: number; shouldRetry?: (error: unknown) => boolean; }): Promise; declare const _default: { RateLimiter: typeof RateLimiter; TTLCache: typeof TTLCache; ConcurrencyPool: typeof ConcurrencyPool; throttle: typeof throttle; debounce: typeof debounce; memoize: typeof memoize; parallelMap: typeof parallelMap; sleep: typeof sleep; withTimeout: typeof withTimeout; retry: typeof retry; }; export default _default; //# sourceMappingURL=asyncUtils.d.ts.map