/** @hidden */ interface CurriedFunction1 { (): CurriedFunction1; (t1: T1): R; } /** @hidden */ interface CurriedFunction2 { (): CurriedFunction2; (t1: T1): CurriedFunction1; (t1: T1, t2: T2): R; } /** @hidden */ interface CurriedFunction3 { (): CurriedFunction3; (t1: T1): CurriedFunction2; (t1: T1, t2: T2): CurriedFunction1; (t1: T1, t2: T2, t3: T3): R; } /** @hidden */ 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; } /** * Creates a function that accepts arguments of `func` and either invokes func returning its result, if at least `arity` number of arguments have been provided, or returns a function that accepts the remaining `func` arguments, and so on. The `arity` of func may be specified if `func.length` is not sufficient. * * Differences from lodash: * - there is no "placeholder" functionality * - it will return plain functions; they will not inherit the prototype of `func` * * Contribution to minified bundle size, when it is the only function imported: * - Lodash: 8,896 bytes * - Micro-dash: 149 bytes */ export declare function curry(func: (t1: T1) => R): CurriedFunction1; export declare function curry(func: (t1: T1, ...more: any[]) => R, arity: 1): CurriedFunction1; export declare function curry(func: (t1: T1, t2: T2) => R): CurriedFunction2; export declare function curry(func: (t1: T1, t2: T2, ...more: any[]) => R, arity: 2): CurriedFunction2; export declare function curry(func: (t1: T1, t2: T2, t3: T3) => R): CurriedFunction3; export declare function curry(func: (t1: T1, t2: T2, t3: T3, ...more: any[]) => R, arity: 3): CurriedFunction3; export declare function curry(func: (t1: T1, t2: T2, t3: T3, t4: T4) => R): CurriedFunction4; export declare function curry(func: (t1: T1, t2: T2, t3: T3, t4: T4, ...more: any[]) => R, arity: 4): CurriedFunction4; export {};