interface CurriedFunction1 { (): CurriedFunction1; (t1: T1): R; } interface CurriedFunction2 { (): CurriedFunction2; (t1: T1): CurriedFunction1; (t1: T1, t2: T2): R; } interface CurriedFunction3 { (): CurriedFunction3; (t1: T1): CurriedFunction2; (t1: T1, t2: T2): CurriedFunction1; (t1: T1, t2: T2, t3: T3): R; } 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; } 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; } 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; } 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; } 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; } /** * Creates a function that accepts one or more arguments of func that when called either invokes func returning * its result, if all func arguments have been provided, or returns a function that accepts one or more of the * remaining func arguments, and so on. The arity of func may be specified if func.length is not sufficient. * @param func The function to curry. * @param arity The arity of func. * @return Returns the new curried function. */ export declare function curry(func: (t1: T1) => R, arity?: number): CurriedFunction1; export declare function curry(func: (t1: T1, t2: T2) => R, arity?: number): CurriedFunction2; export declare function curry(func: (t1: T1, t2: T2, t3: T3) => R, arity?: number): CurriedFunction3; export declare function curry(func: (t1: T1, t2: T2, t3: T3, t4: T4) => R, arity?: number): CurriedFunction4; export declare function curry(func: (t1: T1, t2: T2, t3: T3, t4: T4, t5: T5) => R, arity?: number): CurriedFunction5; export declare function curry(func: (t1: T1, t2: T2, t3: T3, t4: T4, t5: T5, t6: T6) => R, arity?: number): CurriedFunction6; export declare function curry(func: (t1: T1, t2: T2, t3: T3, t4: T4, t5: T5, t6: T6, t7: T7) => R, arity?: number): CurriedFunction7; export declare function curry(func: (t1: T1, t2: T2, t3: T3, t4: T4, t5: T5, t6: T6, t7: T7, t8: T8) => R, arity?: number): CurriedFunction8; export {};