declare const mimicFn: { /** Make a function mimic another one. It will copy over the properties `name`, `length`, `displayName`, and any custom properties you may have set. @param to - Mimicking function. @param from - Function to mimic. @returns The modified `to` function. @example ``` import mimicFn = require('mimic-fn'); function foo() {} foo.unicorn = '🦄'; function wrapper() { return foo(); } console.log(wrapper.name); //=> 'wrapper' mimicFn(wrapper, foo); console.log(wrapper.name); //=> 'foo' console.log(wrapper.unicorn); //=> '🦄' ``` */ < ArgumentsType extends unknown[], ReturnType, FunctionType extends (...arguments: ArgumentsType) => ReturnType >( to: (...arguments: ArgumentsType) => ReturnType, from: FunctionType ): FunctionType; // TODO: Remove this for the next major release, refactor the whole definition to: // declare function mimicFn< // ArgumentsType extends unknown[], // ReturnType, // FunctionType extends (...arguments: ArgumentsType) => ReturnType // >( // to: (...arguments: ArgumentsType) => ReturnType, // from: FunctionType // ): FunctionType; // export = mimicFn; default: typeof mimicFn; }; export = mimicFn;