// types borrowed from https://stackoverflow.com/a/63905763 type Curried =

>(...args: P) => P extends A ? R : A extends [...SameLength

, ...infer S] ? S extends unknown[] ? Curried : never : never; type SameLength = Extract<{ [K in keyof T]: unknown }, unknown[]> declare const curri: (fn: (...args: A) => R) => Curried export default curri