import type { LanguageModelV4Middleware, LanguageModelV4Usage } from "@ai-sdk/provider"; /** Minimal logger surface (a subset of `BasicLogger`). */ interface RetryLogger { log?(message: string, meta?: Record): void; } export interface RetryEmptyResponseOptions { /** Total attempts including the first (so `3` means up to 2 retries). */ maxAttempts?: number; /** Delay before each empty-response retry, in milliseconds. */ retryDelayMs?: number; /** * Delay before the first network-interruption retry, in milliseconds; * doubles for each subsequent one (2s → 4s with the defaults, matching * the legacy extension's backoff). */ networkRetryDelayMs?: number; logger?: RetryLogger; } /** Default total attempts (first try + 2 retries). */ export declare const DEFAULT_EMPTY_RESPONSE_MAX_ATTEMPTS = 3; /** Default delay before a retry. */ export declare const DEFAULT_EMPTY_RESPONSE_RETRY_DELAY_MS = 250; /** Default delay before the first network-interruption retry. */ export declare const DEFAULT_NETWORK_RETRY_DELAY_MS = 2000; /** * Whether an error (anywhere in its `cause` chain) identifies a transient * transport interruption — the connection died or timed out underneath a * request the provider never rejected. An abort anywhere in the chain * vetoes the match: cancelled requests surface the same socket vocabulary, * and a user cancel must never be retried. Everything else — HTTP business * errors, context-window errors, provider-reported payloads — does not * match. */ export declare function isTransientNetworkError(error: unknown): boolean; /** Sum two standardized v4 usage records field by field. */ export declare function addUsage(a: LanguageModelV4Usage, b: LanguageModelV4Usage): LanguageModelV4Usage; /** * Create a middleware that retries empty model responses. Apply it as the * outermost middleware (first in the `wrapLanguageModel` array) so each retry * re-runs the full request. */ export declare function createRetryEmptyResponseMiddleware(options?: RetryEmptyResponseOptions): LanguageModelV4Middleware; export {}; //# sourceMappingURL=retry-empty-response.d.ts.map