type TrapArgs = [ args: A, invoke: (...args: A) => R, meta: { methodName: string | symbol; } ]; type TrapDict = { [K in keyof T]?: T[K] extends (...args: infer U) => infer V ? (...args: TrapArgs) => V : never; }; export declare function trapMethods(obj: T, traps: TrapDict): T; export type SyncTrap = (...args: TrapArgs) => TReturn; export type AsyncTrap = (...args: TrapArgs>) => Promise; export {}; //# sourceMappingURL=trap.d.ts.map