import { type ReactNode } from "react";
import { FetchCache, type FetchCacheOptions } from "./fetch-cache";
/**
 * @internal Exported for test-level injection — not part of the public API.
 */
export declare const FetchCacheContext: import("react").Context<FetchCache | null>;
/**
 * Provides a `FetchCache` instance to descendant `useFetch` hooks.
 *
 * Mount this component **above** any remount boundary (e.g. above a
 * `key`-driven session switch) so that cached data survives when child
 * components unmount and remount. Without this provider, `useFetch`
 * works exactly as before — no cache, no behavior change.
 *
 * @example
 * ```tsx
 * // In your app shell (above the session key boundary):
 * <FetchCacheProvider>
 *   <SessionPageInner key={activeSessionId} id={activeSessionId} />
 * </FetchCacheProvider>
 * ```
 *
 * @example
 * ```tsx
 * // With custom limits:
 * <FetchCacheProvider maxEntries={50} ttl={120_000}>
 *   <App />
 * </FetchCacheProvider>
 * ```
 */
export declare function FetchCacheProvider({ children, maxEntries, ttl, }: FetchCacheOptions & {
    children: ReactNode;
}): import("react/jsx-runtime").JSX.Element;
/**
 * Access the nearest `FetchCache` from context.
 *
 * Returns `null` when no `FetchCacheProvider` is mounted — callers
 * must handle the null case gracefully (skip caching).
 *
 * @internal Consumed by `useFetch`; not intended for direct use by
 * SDK consumers.
 */
export declare function useFetchCache(): FetchCache | null;
//# sourceMappingURL=FetchCacheProvider.d.ts.map