export interface CurriedFunction1 { (): CurriedFunction1; (t1: T1): R; } export interface CurriedFunction2 { (): CurriedFunction2; (t1: T1): CurriedFunction1; (t1: T1, t2: T2): R; } export interface CurriedFunction3 { (): CurriedFunction3; (t1: T1): CurriedFunction2; (t1: T1, t2: T2): CurriedFunction1; (t1: T1, t2: T2, t3: T3): R; } export interface CurriedFunction4 { (): CurriedFunction4; (t1: T1): CurriedFunction3; (t1: T1, t2: T2): CurriedFunction2; (t1: T1, t2: T2, t3: T3): CurriedFunction1; (t1: T1, t2: T2, t3: T3, t4: T4): R; } export interface CurriedFunction5 { (): CurriedFunction5; (t1: T1): CurriedFunction4; (t1: T1, t2: T2): CurriedFunction3; (t1: T1, t2: T2, t3: T3): CurriedFunction2; (t1: T1, t2: T2, t3: T3, t4: T4): CurriedFunction1; (t1: T1, t2: T2, t3: T3, t4: T4, t5: T5): R; } export interface CurriedFunction6 { (): CurriedFunction6; (t1: T1): CurriedFunction5; (t1: T1, t2: T2): CurriedFunction4; (t1: T1, t2: T2, t3: T3): CurriedFunction3; (t1: T1, t2: T2, t3: T3, t4: T4): CurriedFunction2; (t1: T1, t2: T2, t3: T3, t4: T4, t5: T5): CurriedFunction1; (t1: T1, t2: T2, t3: T3, t4: T4, t5: T5, t6: T6): R; } export interface CurriedFunction7 { (): CurriedFunction7; (t1: T1): CurriedFunction6; (t1: T1, t2: T2): CurriedFunction5; (t1: T1, t2: T2, t3: T3): CurriedFunction4; (t1: T1, t2: T2, t3: T3, t4: T4): CurriedFunction3; (t1: T1, t2: T2, t3: T3, t4: T4, t5: T5): CurriedFunction2; (t1: T1, t2: T2, t3: T3, t4: T4, t5: T5, t6: T6): CurriedFunction1; (t1: T1, t2: T2, t3: T3, t4: T4, t5: T5, t6: T6, t7: T7): R; } export interface CurriedFunction8 { (): CurriedFunction8; (t1: T1): CurriedFunction7; (t1: T1, t2: T2): CurriedFunction6; (t1: T1, t2: T2, t3: T3): CurriedFunction5; (t1: T1, t2: T2, t3: T3, t4: T4): CurriedFunction4; (t1: T1, t2: T2, t3: T3, t4: T4, t5: T5): CurriedFunction3; (t1: T1, t2: T2, t3: T3, t4: T4, t5: T5, t6: T6): CurriedFunction2; (t1: T1, t2: T2, t3: T3, t4: T4, t5: T5, t6: T6, t7: T7): CurriedFunction1; (t1: T1, t2: T2, t3: T3, t4: T4, t5: T5, t6: T6, t7: T7, t8: T8): R; } export interface CurriedFunction9 { (): CurriedFunction9; (t1: T1): CurriedFunction8; (t1: T1, t2: T2): CurriedFunction7; (t1: T1, t2: T2, t3: T3): CurriedFunction6; (t1: T1, t2: T2, t3: T3, t4: T4): CurriedFunction5; (t1: T1, t2: T2, t3: T3, t4: T4, t5: T5): CurriedFunction4; (t1: T1, t2: T2, t3: T3, t4: T4, t5: T5, t6: T6): CurriedFunction3; (t1: T1, t2: T2, t3: T3, t4: T4, t5: T5, t6: T6, t7: T7): CurriedFunction2; (t1: T1, t2: T2, t3: T3, t4: T4, t5: T5, t6: T6, t7: T7, t8: T8): CurriedFunction1; (t1: T1, t2: T2, t3: T3, t4: T4, t5: T5, t6: T6, t7: T7, t8: T8, t9: T9): R; } export interface CurriedFunction10 { (): CurriedFunction10; (t1: T1): CurriedFunction9; (t1: T1, t2: T2): CurriedFunction8; (t1: T1, t2: T2, t3: T3): CurriedFunction7; (t1: T1, t2: T2, t3: T3, t4: T4): CurriedFunction6; (t1: T1, t2: T2, t3: T3, t4: T4, t5: T5): CurriedFunction5; (t1: T1, t2: T2, t3: T3, t4: T4, t5: T5, t6: T6): CurriedFunction4; (t1: T1, t2: T2, t3: T3, t4: T4, t5: T5, t6: T6, t7: T7): CurriedFunction3; (t1: T1, t2: T2, t3: T3, t4: T4, t5: T5, t6: T6, t7: T7, t8: T8): CurriedFunction2; (t1: T1, t2: T2, t3: T3, t4: T4, t5: T5, t6: T6, t7: T7, t8: T8, t9: T9): CurriedFunction1; (t1: T1, t2: T2, t3: T3, t4: T4, t5: T5, t6: T6, t7: T7, t8: T8, t9: T9, t10: T10): R; } export interface Functor { (t: T): T[] | Object; }