import type Anthropic from '@anthropic-ai/sdk'; import type { ProviderEvent } from '../../../provider.js'; import type { AuthMode, RunTurnInput } from '../types.js'; export type UsageLimitWaitResult = 'aborted' | 'timer' | 'hot-swap'; export type TierGenerator = (ctx: RetryTierContext, runInput: RunTurnInput, isClosed: () => boolean) => AsyncGenerator; export interface RetryTierContext { readonly authMode: AuthMode; readonly surface: string | undefined; readonly autoResumeOnUsageLimit: boolean; readonly tokenRefresher: (() => Promise) | undefined; getClient(): Anthropic; rotateHeaders(runInput: Pick): Record; forceClientRefresh(): Promise<{ accountId: string; swapped: boolean; } | null>; getUsageLimitWait(): Promise | null; setUsageLimitWait(p: Promise | null): void; markCredentialSnapshotStale(): void; }