export interface RateLimitSnapshot { requestsRemaining?: number; requestsLimit?: number; requestsResetAt?: number; inputTokensRemaining?: number; inputTokensLimit?: number; inputTokensResetAt?: number; outputTokensRemaining?: number; outputTokensResetAt?: number; } export declare function estimateInputTokens(body: unknown): number; export declare class RateLimitBucket { private requestsRemaining; private requestsResetAt; private requestsLimit; private inputTokensRemaining; private inputTokensResetAt; private inputTokensLimit; private outputTokensRemainingVal; private frozenUntil; resetForTests(): void; get outputTokensRemaining(): number; update(snap: RateLimitSnapshot): void; freeze(retryAfterMs: number): void; private maybeResetWindows; acquirePermit(estimatedInputTokens: number, signal?: AbortSignal): Promise; } export declare const globalRateLimitBucket: RateLimitBucket;