declare class Placeholder { __PLACEHOLDER__: string; constructor(); } /** * A special placeholder value used to specify "gaps" within curried functions, * allowing partial application of any combination of arguments, regardless of their positions. * * @group FP */ export declare const __: Placeholder; type T__ = typeof __; /** * Perform left-to-right function composition. * * @example * ``` * pipe( * [1, 2, 3, 4], * arr => arr.map(v => v * 2), * arr => arr.map(v => v + 2) * ) * // [4, 6, 8, 10] *``` * @group FP */ export declare function pipe(value: A, op1: (input: A) => B): B; export declare function pipe(value: A, op1: (input: A) => B, op2: (input: B) => C): C; export declare function pipe(value: A, op1: (input: A) => B, op2: (input: B) => C, op3: (input: C) => D): D; export declare function pipe(value: A, op1: (input: A) => B, op2: (input: B) => C, op3: (input: C) => D, op4: (input: D) => E): E; export declare function pipe(value: A, op1: (input: A) => B, op2: (input: B) => C, op3: (input: C) => D, op4: (input: D) => E, op5: (input: E) => F): F; export declare function pipe(value: A, op1: (input: A) => B, op2: (input: B) => C, op3: (input: C) => D, op4: (input: D) => E, op5: (input: E) => F, op6: (input: F) => G): G; export declare function pipe(value: A, op1: (input: A) => B, op2: (input: B) => C, op3: (input: C) => D, op4: (input: D) => E, op5: (input: E) => F, op6: (input: F) => G, op7: (input: G) => H): H; export declare function pipe(value: unknown, ...operations: Array<(value: unknown) => unknown>): unknown; /** * Perform right-to-left function composition. * * @example * ``` * const func = compose( * arr => arr.map(v => v + 2) * (arr: number[]) => arr.map(v => v * 2), * ) * // [4, 6, 8, 10] * // * ``` * @group FP */ export declare function compose(op1: (input: T1) => T2): (input: T1) => T2; export declare function compose(op2: (input: T2) => T3, op1: (input: T1) => T2): (input: T1) => T3; export declare function compose(op3: (input: T3) => T4, op2: (input: T2) => T3, op1: (input: T1) => T2): (input: T1) => T4; export declare function compose(op4: (input: T4) => T5, op3: (input: T3) => T4, op2: (input: T2) => T3, op1: (input: T1) => T2): (input: T1) => T5; export declare function compose(op5: (input: T5) => T6, op4: (input: T4) => T5, op3: (input: T3) => T4, op2: (input: T2) => T3, op1: (input: T1) => T2): (input: T1) => T6; export declare function compose(op6: (input: T6) => T7, op5: (input: T5) => T6, op4: (input: T4) => T5, op3: (input: T3) => T4, op2: (input: T2) => T3, op1: (input: T1) => T2): (input: T1) => T7; export declare function compose(op7: (input: T7) => T8, op6: (input: T6) => T7, op5: (input: T5) => T6, op4: (input: T4) => T5, op3: (input: T3) => T4, op2: (input: T2) => T3, op1: (input: T1) => T2): (input: T1) => T8; export declare function compose(...operations: Array<(value: unknown) => unknown>): (value: unknown) => unknown; type Curry1 = { (): Curry1; (t1: T1): R; }; type Curry2 = { (): Curry2; (t1: T1): Curry1; (t1: T1, t2: T2): R; (t1: T__, t2: T2): Curry1; (t1: T1, t2: T__): Curry1; }; type Curry3 = { (): Curry3; (t1: T1): Curry2; (t1: T1, t2: T2): Curry1; (t1: T__, t2: T2): Curry2; (t1: T1, t2: T__): Curry2; (t1: T1, t2: T2, t3: T3): R; (t1: T__, t2: T2, t3: T3): Curry1; (t1: T1, t2: T__, t3: T3): Curry1; (t1: T1, t2: T2, t3: T__): Curry1; (t1: T__, t2: T__, t3: T3): Curry2; (t1: T__, t2: T2, t3: T__): Curry2; (t1: T1, t2: T__, t3: T__): Curry2; }; type Curry4 = { (): Curry4; (t1: T1): Curry3; (t1: T1, t2: T2): Curry2; (t1: T__, t2: T2): Curry3; (t1: T1, t2: T__): Curry3; (t1: T1, t2: T2, t3: T3): Curry1; (t1: T__, t2: T2, t3: T3): Curry2; (t1: T1, t2: T__, t3: T3): Curry2; (t1: T1, t2: T2, t3: T__): Curry2; (t1: T__, t2: T__, t3: T3): Curry3; (t1: T__, t2: T2, t3: T__): Curry3; (t1: T1, t2: T__, t3: T__): Curry3; (t1: T1, t2: T2, t3: T3, t4: T4): R; (t1: T__, t2: T2, t3: T3, t4: T4): Curry1; (t1: T1, t2: T__, t3: T3, t4: T4): Curry1; (t1: T1, t2: T2, t3: T__, t4: T4): Curry1; (t1: T1, t2: T2, t3: T3, t4: T__): Curry1; (t1: T__, t2: T__, t3: T3, t4: T4): Curry2; (t1: T__, t2: T2, t3: T__, t4: T4): Curry2; (t1: T__, t2: T2, t3: T3, t4: T__): Curry2; (t1: T1, t2: T__, t3: T__, t4: T4): Curry2; (t1: T1, t2: T__, t3: T3, t4: T__): Curry2; (t1: T1, t2: T2, t3: T__, t4: T__): Curry2; (t1: T__, t2: T__, t3: T__, t4: T4): Curry3; (t1: T__, t2: T__, t3: T3, t4: T__): Curry3; (t1: T__, t2: T2, t3: T__, t4: T__): Curry3; (t1: T1, t2: T__, t3: T__, t4: T__): Curry3; }; type Curry5 = { (): Curry5; (t1: T1): Curry4; (t1: T1, t2: T2): Curry3; (t1: T__, t2: T2): Curry4; (t1: T1, t2: T__): Curry4; (t1: T1, t2: T2, t3: T3): Curry2; (t1: T__, t2: T2, t3: T3): Curry3; (t1: T1, t2: T__, t3: T3): Curry3; (t1: T1, t2: T2, t3: T__): Curry3; (t1: T__, t2: T__, t3: T3): Curry4; (t1: T__, t2: T2, t3: T__): Curry4; (t1: T1, t2: T__, t3: T__): Curry4; (t1: T1, t2: T2, t3: T3, t4: T4): Curry1; (t1: T__, t2: T2, t3: T3, t4: T4): Curry2; (t1: T1, t2: T__, t3: T3, t4: T4): Curry2; (t1: T1, t2: T2, t3: T__, t4: T4): Curry2; (t1: T1, t2: T2, t3: T3, t4: T__): Curry2; (t1: T__, t2: T__, t3: T3, t4: T4): Curry3; (t1: T__, t2: T2, t3: T__, t4: T4): Curry3; (t1: T__, t2: T2, t3: T3, t4: T__): Curry3; (t1: T1, t2: T__, t3: T__, t4: T4): Curry3; (t1: T1, t2: T__, t3: T3, t4: T__): Curry3; (t1: T1, t2: T2, t3: T__, t4: T__): Curry3; (t1: T__, t2: T__, t3: T__, t4: T4): Curry4; (t1: T__, t2: T__, t3: T3, t4: T__): Curry4; (t1: T__, t2: T2, t3: T__, t4: T__): Curry4; (t1: T1, t2: T__, t3: T__, t4: T__): Curry4; (t1: T1, t2: T2, t3: T3, t4: T4, t5: T5): R; (t1: T__, t2: T2, t3: T3, t4: T4, t5: T5): Curry1; (t1: T1, t2: T__, t3: T3, t4: T4, t5: T5): Curry1; (t1: T1, t2: T2, t3: T__, t4: T4, t5: T5): Curry1; (t1: T1, t2: T2, t3: T3, t4: T__, t5: T5): Curry1; (t1: T1, t2: T2, t3: T3, t4: T4, t5: T__): Curry1; (t1: T__, t2: T__, t3: T3, t4: T4, t5: T5): Curry2; (t1: T__, t2: T2, t3: T__, t4: T4, t5: T5): Curry2; (t1: T__, t2: T2, t3: T3, t4: T__, t5: T5): Curry2; (t1: T__, t2: T2, t3: T3, t4: T4, t5: T__): Curry2; (t1: T1, t2: T__, t3: T__, t4: T4, t5: T5): Curry2; (t1: T1, t2: T__, t3: T3, t4: T__, t5: T5): Curry2; (t1: T1, t2: T__, t3: T3, t4: T4, t5: T__): Curry2; (t1: T1, t2: T2, t3: T__, t4: T__, t5: T5): Curry2; (t1: T1, t2: T2, t3: T__, t4: T4, t5: T__): Curry2; (t1: T1, t2: T2, t3: T3, t4: T__, t5: T__): Curry2; (t1: T__, t2: T__, t3: T__, t4: T4, t5: T5): Curry3; (t1: T__, t2: T__, t3: T3, t4: T__, t5: T5): Curry3; (t1: T__, t2: T__, t3: T3, t4: T4, t5: T__): Curry3; (t1: T__, t2: T2, t3: T__, t4: T__, t5: T5): Curry3; (t1: T__, t2: T2, t3: T__, t4: T4, t5: T__): Curry3; (t1: T__, t2: T2, t3: T3, t4: T__, t5: T__): Curry3; (t1: T1, t2: T__, t3: T__, t4: T__, t5: T5): Curry3; (t1: T1, t2: T__, t3: T__, t4: T4, t5: T__): Curry3; (t1: T1, t2: T__, t3: T3, t4: T__, t5: T__): Curry3; (t1: T1, t2: T2, t3: T__, t4: T__, t5: T__): Curry3; (t1: T__, t2: T__, t3: T__, t4: T__, t5: T5): Curry4; (t1: T__, t2: T__, t3: T__, t4: T4, t5: T__): Curry4; (t1: T__, t2: T__, t3: T3, t4: T__, t5: T__): Curry4; (t1: T__, t2: T2, t3: T__, t4: T__, t5: T__): Curry4; (t1: T1, t2: T__, t3: T__, t4: T__, t5: T__): Curry4; }; type Curry6 = { (): Curry6; (t1: T1): Curry5; (t1: T1, t2: T2): Curry4; (t1: T__, t2: T2): Curry5; (t1: T1, t2: T__): Curry5; (t1: T1, t2: T2, t3: T3): Curry3; (t1: T__, t2: T2, t3: T3): Curry4; (t1: T1, t2: T__, t3: T3): Curry4; (t1: T1, t2: T2, t3: T__): Curry4; (t1: T__, t2: T__, t3: T3): Curry5; (t1: T__, t2: T2, t3: T__): Curry5; (t1: T1, t2: T__, t3: T__): Curry5; (t1: T1, t2: T2, t3: T3, t4: T4): Curry2; (t1: T__, t2: T2, t3: T3, t4: T4): Curry3; (t1: T1, t2: T__, t3: T3, t4: T4): Curry3; (t1: T1, t2: T2, t3: T__, t4: T4): Curry3; (t1: T1, t2: T2, t3: T3, t4: T__): Curry3; (t1: T__, t2: T__, t3: T3, t4: T4): Curry4; (t1: T__, t2: T2, t3: T__, t4: T4): Curry4; (t1: T__, t2: T2, t3: T3, t4: T__): Curry4; (t1: T1, t2: T__, t3: T__, t4: T4): Curry4; (t1: T1, t2: T__, t3: T3, t4: T__): Curry4; (t1: T1, t2: T2, t3: T__, t4: T__): Curry4; (t1: T__, t2: T__, t3: T__, t4: T4): Curry5; (t1: T__, t2: T__, t3: T3, t4: T__): Curry5; (t1: T__, t2: T2, t3: T__, t4: T__): Curry5; (t1: T1, t2: T__, t3: T__, t4: T__): Curry5; (t1: T1, t2: T2, t3: T3, t4: T4, t5: T5): Curry1; (t1: T__, t2: T2, t3: T3, t4: T4, t5: T5): Curry2; (t1: T1, t2: T__, t3: T3, t4: T4, t5: T5): Curry2; (t1: T1, t2: T2, t3: T__, t4: T4, t5: T5): Curry2; (t1: T1, t2: T2, t3: T3, t4: T__, t5: T5): Curry2; (t1: T1, t2: T2, t3: T3, t4: T4, t5: T__): Curry2; (t1: T__, t2: T__, t3: T3, t4: T4, t5: T5): Curry3; (t1: T__, t2: T2, t3: T__, t4: T4, t5: T5): Curry3; (t1: T__, t2: T2, t3: T3, t4: T__, t5: T5): Curry3; (t1: T__, t2: T2, t3: T3, t4: T4, t5: T__): Curry3; (t1: T1, t2: T__, t3: T__, t4: T4, t5: T5): Curry3; (t1: T1, t2: T__, t3: T3, t4: T__, t5: T5): Curry3; (t1: T1, t2: T__, t3: T3, t4: T4, t5: T__): Curry3; (t1: T1, t2: T2, t3: T__, t4: T__, t5: T5): Curry3; (t1: T1, t2: T2, t3: T__, t4: T4, t5: T__): Curry3; (t1: T1, t2: T2, t3: T3, t4: T__, t5: T__): Curry3; (t1: T__, t2: T__, t3: T__, t4: T4, t5: T5): Curry4; (t1: T__, t2: T__, t3: T3, t4: T__, t5: T5): Curry4; (t1: T__, t2: T__, t3: T3, t4: T4, t5: T__): Curry4; (t1: T__, t2: T2, t3: T__, t4: T__, t5: T5): Curry4; (t1: T__, t2: T2, t3: T__, t4: T4, t5: T__): Curry4; (t1: T__, t2: T2, t3: T3, t4: T__, t5: T__): Curry4; (t1: T1, t2: T__, t3: T__, t4: T__, t5: T5): Curry4; (t1: T1, t2: T__, t3: T__, t4: T4, t5: T__): Curry4; (t1: T1, t2: T__, t3: T3, t4: T__, t5: T__): Curry4; (t1: T1, t2: T2, t3: T__, t4: T__, t5: T__): Curry4; (t1: T__, t2: T__, t3: T__, t4: T__, t5: T5): Curry5; (t1: T__, t2: T__, t3: T__, t4: T4, t5: T__): Curry5; (t1: T__, t2: T__, t3: T3, t4: T__, t5: T__): Curry5; (t1: T__, t2: T2, t3: T__, t4: T__, t5: T__): Curry5; (t1: T1, t2: T__, t3: T__, t4: T__, t5: T__): Curry5; (t1: T1, t2: T2, t3: T3, t4: T4, t5: T5, t6: T6): R; (t1: T__, t2: T2, t3: T3, t4: T4, t5: T5, t6: T6): Curry1; (t1: T1, t2: T__, t3: T3, t4: T4, t5: T5, t6: T6): Curry1; (t1: T1, t2: T2, t3: T__, t4: T4, t5: T5, t6: T6): Curry1; (t1: T1, t2: T2, t3: T3, t4: T__, t5: T5, t6: T6): Curry1; (t1: T1, t2: T2, t3: T3, t4: T4, t5: T__, t6: T6): Curry1; (t1: T1, t2: T2, t3: T3, t4: T4, t5: T5, t6: T__): Curry1; (t1: T__, t2: T__, t3: T3, t4: T4, t5: T5, t6: T6): Curry2; (t1: T__, t2: T2, t3: T__, t4: T4, t5: T5, t6: T6): Curry2; (t1: T__, t2: T2, t3: T3, t4: T__, t5: T5, t6: T6): Curry2; (t1: T__, t2: T2, t3: T3, t4: T4, t5: T__, t6: T6): Curry2; (t1: T__, t2: T2, t3: T3, t4: T4, t5: T5, t6: T__): Curry2; (t1: T1, t2: T__, t3: T__, t4: T4, t5: T5, t6: T6): Curry2; (t1: T1, t2: T__, t3: T3, t4: T__, t5: T5, t6: T6): Curry2; (t1: T1, t2: T__, t3: T3, t4: T4, t5: T__, t6: T6): Curry2; (t1: T1, t2: T__, t3: T3, t4: T4, t5: T5, t6: T__): Curry2; (t1: T1, t2: T2, t3: T__, t4: T__, t5: T5, t6: T6): Curry2; (t1: T1, t2: T2, t3: T__, t4: T4, t5: T__, t6: T6): Curry2; (t1: T1, t2: T2, t3: T__, t4: T4, t5: T5, t6: T__): Curry2; (t1: T1, t2: T2, t3: T3, t4: T__, t5: T__, t6: T6): Curry2; (t1: T1, t2: T2, t3: T3, t4: T__, t5: T5, t6: T__): Curry2; (t1: T1, t2: T2, t3: T3, t4: T4, t5: T__, t6: T__): Curry2; (t1: T__, t2: T__, t3: T__, t4: T4, t5: T5, t6: T6): Curry3; (t1: T__, t2: T__, t3: T3, t4: T__, t5: T5, t6: T6): Curry3; (t1: T__, t2: T__, t3: T3, t4: T4, t5: T__, t6: T6): Curry3; (t1: T__, t2: T__, t3: T3, t4: T4, t5: T5, t6: T__): Curry3; (t1: T__, t2: T2, t3: T__, t4: T__, t5: T5, t6: T6): Curry3; (t1: T__, t2: T2, t3: T__, t4: T4, t5: T__, t6: T6): Curry3; (t1: T__, t2: T2, t3: T__, t4: T4, t5: T5, t6: T__): Curry3; (t1: T__, t2: T2, t3: T3, t4: T__, t5: T__, t6: T6): Curry3; (t1: T__, t2: T2, t3: T3, t4: T__, t5: T5, t6: T__): Curry3; (t1: T__, t2: T2, t3: T3, t4: T4, t5: T__, t6: T__): Curry3; (t1: T1, t2: T__, t3: T__, t4: T__, t5: T5, t6: T6): Curry3; (t1: T1, t2: T__, t3: T__, t4: T4, t5: T__, t6: T6): Curry3; (t1: T1, t2: T__, t3: T__, t4: T4, t5: T5, t6: T__): Curry3; (t1: T1, t2: T__, t3: T3, t4: T__, t5: T__, t6: T6): Curry3; (t1: T1, t2: T__, t3: T3, t4: T__, t5: T5, t6: T__): Curry3; (t1: T1, t2: T__, t3: T3, t4: T4, t5: T__, t6: T__): Curry3; (t1: T1, t2: T2, t3: T__, t4: T__, t5: T__, t6: T6): Curry3; (t1: T1, t2: T2, t3: T__, t4: T__, t5: T5, t6: T__): Curry3; (t1: T1, t2: T2, t3: T__, t4: T4, t5: T__, t6: T__): Curry3; (t1: T1, t2: T2, t3: T3, t4: T__, t5: T__, t6: T__): Curry3; (t1: T__, t2: T__, t3: T__, t4: T__, t5: T5, t6: T6): Curry4; (t1: T__, t2: T__, t3: T__, t4: T4, t5: T__, t6: T6): Curry4; (t1: T__, t2: T__, t3: T__, t4: T4, t5: T5, t6: T__): Curry4; (t1: T__, t2: T__, t3: T3, t4: T__, t5: T__, t6: T6): Curry4; (t1: T__, t2: T__, t3: T3, t4: T__, t5: T5, t6: T__): Curry4; (t1: T__, t2: T__, t3: T3, t4: T4, t5: T__, t6: T__): Curry4; (t1: T__, t2: T2, t3: T__, t4: T__, t5: T__, t6: T6): Curry4; (t1: T__, t2: T2, t3: T__, t4: T__, t5: T5, t6: T__): Curry4; (t1: T__, t2: T2, t3: T__, t4: T4, t5: T__, t6: T__): Curry4; (t1: T__, t2: T2, t3: T3, t4: T__, t5: T__, t6: T__): Curry4; (t1: T1, t2: T__, t3: T__, t4: T__, t5: T__, t6: T6): Curry4; (t1: T1, t2: T__, t3: T__, t4: T__, t5: T5, t6: T__): Curry4; (t1: T1, t2: T__, t3: T__, t4: T4, t5: T__, t6: T__): Curry4; (t1: T1, t2: T__, t3: T3, t4: T__, t5: T__, t6: T__): Curry4; (t1: T1, t2: T2, t3: T__, t4: T__, t5: T__, t6: T__): Curry4; (t1: T__, t2: T__, t3: T__, t4: T__, t5: T__, t6: T6): Curry5; (t1: T__, t2: T__, t3: T__, t4: T__, t5: T5, t6: T__): Curry5; (t1: T__, t2: T__, t3: T__, t4: T4, t5: T__, t6: T__): Curry5; (t1: T__, t2: T__, t3: T3, t4: T__, t5: T__, t6: T__): Curry5; (t1: T__, t2: T2, t3: T__, t4: T__, t5: T__, t6: T__): Curry5; (t1: T1, t2: T__, t3: T__, t4: T__, t5: T__, t6: T__): Curry5; }; /** * Returns a curried equivalent of the provided function. * * Curried function can accept one or multiple parameter at the time: * * * `g(1)(2)(3)` * * `g(1)(2, 3)` * * `g(1, 2)(3)` * * `g(1, 2, 3)` * * The special placeholder value `__` may be used to specify "gaps", allowing partial application of any combination of arguments, regardless of their positions: * * * `g(1, 2, 3)` * * `g(_, 2, 3)(1)` * * `g(_, _, 3)(1)(2)` * * `g(_, _, 3)(1, 2)` * * `g(_, 2)(1)(3)` * * `g(_, 2)(1, 3)` * * `g(_, 2)(_, 3)(1)` * @example * ``` * const addNumbers = (a, b, c, d) => a + b + c + d * * const addLastNumber = curry(addNumbers)(5, 5, 5) * * addLastNumber(5) * * const addFirst = curry(addNumbers)(__, 5, 5, 5) * addFirst(5) * ``` * @group FP */ export declare function curry(fn: (t1: T1, t2: T2) => R): Curry2; export declare function curry(fn: (t1: T1, t2: T2, t3: T3) => R): Curry3; export declare function curry(fn: (t1: T1, t2: T2, t3: T3, t4: T4) => R): Curry4; export declare function curry(fn: (t1: T1, t2: T2, t3: T3, t4: T4, t5: T5) => R): Curry5; export declare function curry(fn: (t1: T1, t2: T2, t3: T3, t4: T4, t5: T5, t6: T6) => R): Curry6; export declare function curry(fn: (t1: T1) => R): Curry1; /** * Wraps callback to try/catch block * * @param callback * @returns * @example * ``` * const result = tryCatch(() => fetch('http://example.com')) * if (value instanceof Error) { * console.log(value.message) * } * * const parsedOrUndefined = tryCatch(() => JSON.parse(jsonString), undefined) * ``` */ export declare function tryCatch(callback: () => Promise): Promise; export declare function tryCatch(callback: () => T): T | Error; export declare function tryCatch(callback: () => Promise, defaultValue: T2): Promise; export declare function tryCatch(callback: () => T, defaultValue: T2): T | T2; export {};