import type { WorkAsyncStorage, WorkStore } from '../../client/components/work-async-storage.external';
import type { RequestAsyncStorage, RequestStore } from '../../client/components/request-async-storage.external';
import { type CacheStore } from '../../server/app-render/cache-async-storage.external';
import type { PrerenderAsyncStorage } from '../app-render/prerender-async-storage.external';
type Fetcher = typeof fetch;
type PatchedFetcher = Fetcher & {
    readonly __nextPatched: true;
    readonly __nextGetStaticStore: () => WorkAsyncStorage;
    readonly _nextOriginalFetch: Fetcher;
};
export declare const NEXT_PATCH_SYMBOL: unique symbol;
export declare function validateRevalidate(revalidateVal: unknown, route: string): undefined | number | false;
export declare function validateTags(tags: any[], description: string): string[];
export declare function addImplicitTags(workStore: WorkStore, requestStore: RequestStore | undefined, cacheStore: CacheStore | undefined): string[];
interface PatchableModule {
    workAsyncStorage: WorkAsyncStorage;
    requestAsyncStorage: RequestAsyncStorage;
    prerenderAsyncStorage: PrerenderAsyncStorage;
}
export declare function createPatchedFetcher(originFetch: Fetcher, { workAsyncStorage, requestAsyncStorage, prerenderAsyncStorage, }: PatchableModule): PatchedFetcher;
export declare function patchFetch(options: PatchableModule): void;
export {};
