import type { CurriedFunction1, CurriedFunction2, CurriedFunction3, CurriedFunction4, CurriedFunction5 } from 'lodash'; type AnyFunction = (...args: any[]) => any; interface Curry { (fn: (t1: T1) => R, arity?: number): CurriedFunction1; (fn: (t1: T1, t2: T2) => R, arity?: number): CurriedFunction2; (fn: (t1: T1, t2: T2, t3: T3) => R, arity?: number): CurriedFunction3; (fn: (t1: T1, t2: T2, t3: T3, t4: T4) => R, arity?: number): CurriedFunction4; (fn: (t1: T1, t2: T2, t3: T3, t4: T4, t5: T5) => R, arity?: number): CurriedFunction5; (fn: AnyFunction, arity?: number): AnyFunction; } /** * Curries `fn` by closing over the arguments supplied so far. * * Used instead of lodash `curry` for functions that are partially applied on every * request, such as the query traversals (`traverseQueryPopulate(visitor, ctx)`). On every * partial call lodash builds a new wrapper and derives its `toString` by stringifying the * whole source of the curried function and running regexes over it, which showed up as a * significant share of request CPU. * * Behaves like lodash `curry` otherwise: `fn` is called as soon as at least `arity` * arguments have been supplied (any extra ones are passed along), and `arity` defaults to * `fn.length`. Placeholders are not supported. */ export declare const curry: Curry; export {}; //# sourceMappingURL=curry.d.ts.map