import { CurriedFunction2, CurriedFunction3, CurriedFunction4, CurriedFunction5, CurriedFunction6, CurriedTypeGuard2, CurriedTypeGuard3, CurriedTypeGuard4, CurriedTypeGuard5, CurriedTypeGuard6 } from '../typings/types'; interface CurryN { (n: 1, fn: (a: T1) => a is TResult): (a: T1) => a is T1; (n: 2, fn: (a: T1, b: T2) => b is TResult): CurriedTypeGuard2; (n: 3, fn: (a: T1, b: T2, c: T3) => c is TResult): CurriedTypeGuard3; (n: 4, fn: (a: T1, b: T2, c: T3, d: T4) => d is TResult): CurriedTypeGuard4; (n: 5, fn: (a: T1, b: T2, c: T3, d: T4, e: T5) => e is TResult): CurriedTypeGuard5; (n: 6, fn: (a: T1, b: T2, c: T3, d: T4, e: T5, f: T6) => f is TResult): CurriedTypeGuard6; (n: 1, fn: (a: T1) => TResult): (a: T1) => TResult; (n: 2, fn: (a: T1, b: T2) => TResult): CurriedFunction2; (n: 3, fn: (a: T1, b: T2, c: T3) => TResult): CurriedFunction3; (n: 4, fn: (a: T1, b: T2, c: T3, d: T4) => TResult): CurriedFunction4; (n: 5, fn: (a: T1, b: T2, c: T3, d: T4, e: T5) => TResult): CurriedFunction5; (n: 6, fn: (a: T1, b: T2, c: T3, d: T4, e: T5, f: T6) => TResult): CurriedFunction6; (n: number, fn: (...a: any[]) => any): (...a: any[]) => any; } /** * Returns a curried equivalent of the provided function, with the specified * arity. If `g` is `curryN(3, f)`, the * following are equivalent: * * - `g(1)(2)(3)` * - `g(1)(2, 3)` * - `g(1, 2)(3)` * - `g(1, 2, 3)` * * @param {Number} arity The arity for the returned function. * @param {Function} fn The function to curry. * @return {Function} A new, curried function. * @example * * var sumArgs = (...args) => sum(args); * * var curriedAddFourNumbers = curryN(4, sumArgs); * var f = curriedAddFourNumbers(1, 2); * var g = f(3); * g(4); //=> 10 */ declare const _default: CurryN; export default _default;