type __ = typeof curryRightPlaceholder; interface RightCurriedFunction1 { (): RightCurriedFunction1; (t1: T1): R; } interface RightCurriedFunction2 { (): RightCurriedFunction2; (t2: T2): RightCurriedFunction1; (t1: T1, t2: __): RightCurriedFunction1; (t1: T1, t2: T2): R; } interface RightCurriedFunction3 { (): RightCurriedFunction3; (t3: T3): RightCurriedFunction2; (t2: T2, t3: __): RightCurriedFunction2; (t2: T2, t3: T3): RightCurriedFunction1; (t1: T1, t2: __, t3: __): RightCurriedFunction2; (t1: T1, t2: T2, t3: __): RightCurriedFunction1; (t1: T1, t2: __, t3: T3): RightCurriedFunction1; (t1: T1, t2: T2, t3: T3): R; } interface RightCurriedFunction4 { (): RightCurriedFunction4; (t4: T4): RightCurriedFunction3; (t3: T3, t4: __): RightCurriedFunction3; (t3: T3, t4: T4): RightCurriedFunction2; (t2: T2, t3: __, t4: __): RightCurriedFunction3; (t2: T2, t3: T3, t4: __): RightCurriedFunction2; (t2: T2, t3: __, t4: T4): RightCurriedFunction2; (t2: T2, t3: T3, t4: T4): RightCurriedFunction1; (t1: T1, t2: __, t3: __, t4: __): RightCurriedFunction3; (t1: T1, t2: T2, t3: __, t4: __): RightCurriedFunction2; (t1: T1, t2: __, t3: T3, t4: __): RightCurriedFunction2; (t1: T1, t2: __, t3: __, t4: T4): RightCurriedFunction2; (t1: T1, t2: T2, t3: T3, t4: __): RightCurriedFunction1; (t1: T1, t2: T2, t3: __, t4: T4): RightCurriedFunction1; (t1: T1, t2: __, t3: T3, t4: T4): RightCurriedFunction1; (t1: T1, t2: T2, t3: T3, t4: T4): R; } interface RightCurriedFunction5 { (): RightCurriedFunction5; (t5: T5): RightCurriedFunction4; (t4: T4, t5: __): RightCurriedFunction4; (t4: T4, t5: T5): RightCurriedFunction3; (t3: T3, t4: __, t5: __): RightCurriedFunction4; (t3: T3, t4: T4, t5: __): RightCurriedFunction3; (t3: T3, t4: __, t5: T5): RightCurriedFunction3; (t3: T3, t4: T4, t5: T5): RightCurriedFunction2; (t2: T2, t3: __, t4: __, t5: __): RightCurriedFunction4; (t2: T2, t3: T3, t4: __, t5: __): RightCurriedFunction3; (t2: T2, t3: __, t4: T4, t5: __): RightCurriedFunction3; (t2: T2, t3: __, t4: __, t5: T5): RightCurriedFunction3; (t2: T2, t3: T3, t4: T4, t5: __): RightCurriedFunction2; (t2: T2, t3: T3, t4: __, t5: T5): RightCurriedFunction2; (t2: T2, t3: __, t4: T4, t5: T5): RightCurriedFunction2; (t2: T2, t3: T3, t4: T4, t5: T5): RightCurriedFunction1; (t1: T1, t2: __, t3: __, t4: __, t5: __): RightCurriedFunction4; (t1: T1, t2: T2, t3: __, t4: __, t5: __): RightCurriedFunction3; (t1: T1, t2: __, t3: T3, t4: __, t5: __): RightCurriedFunction3; (t1: T1, t2: __, t3: __, t4: T4, t5: __): RightCurriedFunction3; (t1: T1, t2: __, t3: __, t4: __, t5: T5): RightCurriedFunction3; (t1: T1, t2: T2, t3: T3, t4: __, t5: __): RightCurriedFunction2; (t1: T1, t2: T2, t3: __, t4: T4, t5: __): RightCurriedFunction2; (t1: T1, t2: T2, t3: __, t4: __, t5: T5): RightCurriedFunction2; (t1: T1, t2: __, t3: T3, t4: T4, t5: __): RightCurriedFunction2; (t1: T1, t2: __, t3: T3, t4: __, t5: T5): RightCurriedFunction2; (t1: T1, t2: __, t3: __, t4: T4, t5: T5): RightCurriedFunction2; (t1: T1, t2: T2, t3: T3, t4: T4, t5: __): RightCurriedFunction1; (t1: T1, t2: T2, t3: T3, t4: __, t5: T5): RightCurriedFunction1; (t1: T1, t2: T2, t3: __, t4: T4, t5: T5): RightCurriedFunction1; (t1: T1, t2: __, t3: T3, t4: T4, t5: T5): RightCurriedFunction1; (t1: T1, t2: T2, t3: T3, t4: T4, t5: T5): R; } declare function curryRight(func: (t1: T1) => R, arity?: number): RightCurriedFunction1; declare function curryRight(func: (t1: T1, t2: T2) => R, arity?: number): RightCurriedFunction2; declare function curryRight(func: (t1: T1, t2: T2, t3: T3) => R, arity?: number): RightCurriedFunction3; declare function curryRight(func: (t1: T1, t2: T2, t3: T3, t4: T4) => R, arity?: number): RightCurriedFunction4; declare function curryRight(func: (t1: T1, t2: T2, t3: T3, t4: T4, t5: T5) => R, arity?: number): RightCurriedFunction5; declare function curryRight(func: (...args: any[]) => any, arity?: number): (...args: any[]) => any; declare namespace curryRight { var placeholder: typeof curryRightPlaceholder; } declare const curryRightPlaceholder: unique symbol; export { curryRight };