import type { Agent } from "../Agent";
import type { InterceptorResult } from "./InterceptorResult";
import type { WrapPackageInfo } from "./WrapPackageInfo";
type InspectArgsInterceptor = (args: unknown[], agent: Agent, subject: unknown) => InterceptorResult | void;
type ModifyArgsInterceptor = (args: unknown[], agent: Agent) => unknown[];
type ModifyReturnValueInterceptor = (args: unknown[], returnValue: unknown, agent: Agent) => unknown;
export type InterceptorObject = {
    inspectArgs?: InspectArgsInterceptor;
    modifyArgs?: ModifyArgsInterceptor;
    modifyReturnValue?: ModifyReturnValueInterceptor;
};
/**
 * Wraps a function with the provided interceptors.
 * If the function is not part of an object, like default exports, pass undefined as methodName and the function as subject.
 */
export declare function wrapExport(subject: unknown, methodName: string | undefined, pkgInfo: WrapPackageInfo, interceptors: InterceptorObject): Function | undefined;
export {};
