import type { Logger, MeshFetch, OnFetchHook } from '@graphql-mesh/types';
import { type ExecutionRequest, type MaybePromise } from '@graphql-tools/utils';
export declare const requestIdByRequest: WeakMap<Request<unknown, CfProperties<unknown>>, string>;
export declare const loggerForExecutionRequest: WeakMap<ExecutionRequest<any, any, any, Record<string, any>, any>, Logger>;
export type FetchInstrumentation = {
    fetch?: (payload: {
        executionRequest?: ExecutionRequest;
    }, wrapped: () => MaybePromise<void>) => MaybePromise<void>;
};
export declare function wrapFetchWithHooks<TContext>(onFetchHooks: OnFetchHook<TContext>[], instrumentation?: () => FetchInstrumentation | undefined, defaultLogger?: Logger): MeshFetch;
