export interface OneMore { (): OneMore; (t: T): R; } export interface TwoMore { (): TwoMore; (t1: T1): OneMore; (t1: T1, t2: T2): R; } export interface ThreeMore { (): ThreeMore; (t1: T1): TwoMore; (t1: T1, t2: T2): OneMore; (t1: T1, t2: T2, t3: T3): R; } /** * Takes a function with 1 argument and returns a curried version of it * * @export * @template A * @template B * @param {(a: A) => B} f * @returns {OneMore} */ export declare function curry1(f: (a: A) => B): OneMore; /** * Takes a function with 2 arguments and returns a curried version of it * * @export * @template A * @template B * @template C * @param {(a: A, b: B) => C} f * @returns {TwoMore} */ export declare function curry2(f: (a: A, b: B) => C): TwoMore; /** * Takes a function with 3 arguments and returns a curried version * * @export * @template A * @template B * @template C * @template D * @param {(a: A, b: B, c: C) => D} f * @returns {ThreeMore} */ export declare function curry3(f: (a: A, b: B, c: C) => D): ThreeMore;