import { CurriedFunction2, CurriedFunction3, CurriedFunction4, CurriedFunction5, CurriedFunction6, CurriedTypeGuard2, CurriedTypeGuard3, CurriedTypeGuard4, CurriedTypeGuard5, CurriedTypeGuard6 } from '../typings/types'; interface Curry { (fn: (a: T1) => a is TResult): (a: T1) => a is T1; (fn: (a: T1, b: T2) => b is TResult): CurriedTypeGuard2; (fn: (a: T1, b: T2, c: T3) => c is TResult): CurriedTypeGuard3; (fn: (a: T1, b: T2, c: T3, d: T4) => d is TResult): CurriedTypeGuard4; (fn: (a: T1, b: T2, c: T3, d: T4, e: T5) => e is TResult): CurriedTypeGuard5; (fn: (a: T1, b: T2, c: T3, d: T4, e: T5, f: T6) => f is TResult): CurriedTypeGuard6; (fn: () => TResult): () => TResult; (fn: (a: T1) => TResult): (a: T1) => TResult; (fn: (a: T1, b: T2) => TResult): CurriedFunction2; (fn: (a: T1, b: T2, c: T3) => TResult): CurriedFunction3; (fn: (a: T1, b: T2, c: T3, d: T4) => TResult): CurriedFunction4; (fn: (a: T1, b: T2, c: T3, d: T4, e: T5) => TResult): CurriedFunction5; (fn: (a: T1, b: T2, c: T3, d: T4, e: T5, f: T6) => TResult): CurriedFunction6; (fn: (...a: any[]) => any): (...a: any[]) => any; } /** * Returns a curried equivalent of the provided function. The arguments of curried function * needn't be provided one at a time. If `f` is a ternary function and `g` is `curry(f)`, the * following are equivalent: * * - `g(1)(2)(3)` * - `g(1)(2, 3)` * - `g(1, 2)(3)` * - `g(1, 2, 3)` * * @param {Function} fn The function to curry. * @return {Function} A new, curried function. * @example * * var addFourNumbers = (a, b, c, d) => a + b + c + d; * * var curriedAddFourNumbers = curry(addFourNumbers); * var f = curriedAddFourNumbers(1, 2); * var g = f(3); * g(4); //=> 10 */ declare const _default: Curry; export default _default;