type ParametersExceptFirst = F extends (arg0: any, ...rest: infer P) => any ? P : never; type MethodsOf = { [K in keyof T]: T[K] extends ((...arg: any[]) => any) ? T[K] : never; }; /** * An alternative to lodash chain function that is tailored to have zero dependency. * https://dev.to/munawwar/lodash-chaining-revisited-1c5d */ export declare function chain(value: V): { fn any>(func: Func, ...args: ParametersExceptFirst): ReturnType>>; fn>(func: Name, ...args: V[Name] extends ((...args: infer P) => any) ? P : never): ReturnType[Name]>>>; value: V; }; export {};