import type { CredentialContext } from "../credentials/index.js"; export interface ProviderQuotaIdentityInput { appId: string; providerId: string; ctx: CredentialContext; credentialSources: readonly Record[]; connectionId?: string | null; accountId?: string | null; } export interface ProviderQuotaIdentity { quotaKey: string; providerId: string; scopeKey: string; credentialFingerprint: string; } export interface ProviderQuotaRequest { identity: ProviderQuotaIdentity; method: string; target: string; requestKey?: string; } export interface ProviderQuotaObservedResult { status?: number; headers?: Record; } export interface ProviderQuotaExhaustedDetail { providerId: string; scopeKey: string; quotaKey: string; method: string; target: string; retryAfterMs: number; retryAt: string; reason: "cooldown" | "retry_after" | "max_attempts"; } export interface ExecuteWithProviderQuotaOptions { request: ProviderQuotaRequest; execute: () => Promise; inspect: (result: T) => ProviderQuotaObservedResult; buildQuotaExhaustedResult: (detail: ProviderQuotaExhaustedDetail) => T; maxAttempts?: number; maxWaitMs?: number; } export declare function createProviderQuotaIdentity(input: ProviderQuotaIdentityInput): ProviderQuotaIdentity; export declare function createProviderRequestDedupeKey(input: { method: string; url: string; body?: BodyInit; headers?: Record; }): string | undefined; export declare function executeWithProviderQuota(options: ExecuteWithProviderQuotaOptions): Promise; export declare function resetProviderQuotaStateForTests(): void; //# sourceMappingURL=quota-governor.d.ts.map