import { d as MCPCacheOptions } from './types-CmbeEBKR.mjs';
import { MCPError } from './errors/index.mjs';

type RetryOptions = {
    /**
     * Maximum number of retry attempts for failed requests (default: 0)
     */
    retries?: number;
    /**
     * Backoff factor for exponential backoff between retries (default: 2)
     */
    retryBackoffFactor?: number;
    /**
     * Initial retry delay in milliseconds (default: 300)
     */
    retryInitialDelay?: number;
    /**
     * Maximum retry delay in milliseconds (default: 10000)
     */
    retryMaxDelay?: number;
    /**
     * HTTP status codes that should trigger a retry (default: [408, 429, 500, 502, 503, 504])
     */
    retryStatusCodes?: number[];
    /**
     * Custom function to determine if a request should be retried
     */
    shouldRetry?: (error: MCPError, attemptCount: number) => boolean;
};
type FetchOptions = RequestInit & {
    /**
     * Request timeout in milliseconds (default: 10000)
     */
    timeout?: number;
    /**
     * Options for retry behavior
     */
    retry?: boolean | RetryOptions;
    /**
     * Next.js cache configuration
     */
    cache?: MCPCacheOptions;
    /**
     * Next.js revalidate option
     */
    revalidate?: number | false;
    /**
     * Next.js cache tags
     */
    tags?: string[];
};

export type { FetchOptions as F };
