Skip to content

Instantly share code, notes, and snippets.

@dumconstantin
Last active November 21, 2018 17:42
Show Gist options
  • Save dumconstantin/c73effc8cede95f9b1cb to your computer and use it in GitHub Desktop.
Save dumconstantin/c73effc8cede95f9b1cb to your computer and use it in GitHub Desktop.
/**
* Based on
* https://github.com/donnut/typescript-ramda
* with the help of the typescript-converter from
* git@github.com:ptmt/flow-declarations.git
*/
declare module 'ramda' {
declare type placeholder = {}
declare type ListIterator<T, TResult> = {
(value: T, index: number, list: T[]): TResult;
}
declare type ObjectIterator<T, TResult> = {
(element: T, key: string, obj: Dictionary<T>): Dictionary<TResult>;
}
declare type KeyValuePair<K, V> = {
first : K;
second : V;
}
declare type ArrayLike = {
nodeType: number;
}
declare type Arity0Fn = {
(): any;
}
declare type Arity1Fn = {
(a: any): any;
}
declare type Arity2Fn = {
(a: any, b: any): any;
}
declare type ObjFunc = {
[index:string]: Function;
}
declare type ObjFunc2 = {
[index:string]: (x: any, y: any) => boolean;
}
declare type Pred = {
(...a: any[]): boolean;
}
declare type ObjPred = {
(value: any, key: string): boolean;
}
declare type Dictionary<T> = {
[index: string]: T;
}
declare type CharList = {
push(x: string): void;
}
declare type Lens = {
<T,U>(obj: T): U;
set<T,U>(str: string, obj: T): U;
}
declare type __= placeholder;
declare function adjust<T>(fn: (a: T) => T, index: number, list: T[]): T[];
declare function adjust<T>(fn: (a: T) => T, index: number): (list: T[]) => T[];
declare function all<T>(fn: (a: T) => boolean, list: T[]): boolean;
declare function all<T>(fn: (a: T) => boolean): (list: T[]) => boolean;
declare function any<T>(fn: (a: T) => boolean, list: T[]): boolean;
declare function any<T>(fn: (a: T) => boolean): (list: T[]) => boolean;
declare function aperture<T>(n: number, list: T): T[][];
declare function aperture<T>(n: number): (list: T) => T[][];
declare function append<T>(el: T, list: T[]): T[];
declare function append<T>(el: T): (list: T[]) => T[];
declare function append<T, U>(el: U, list: T[]): (T & U)[];
declare function append<T, U>(el: U): (list: T[]) => (T & U)[];
declare function chain<T, U>(fn: (n: T) => U[], list: T[]): U[];
declare function chain<T, U>(fn: (n: T) => U[]): (list: T[]) => U[];
declare function commute<T, U>(of: (x: T) => U, list: U[]): U;
declare function commute<T, U>(of: (x: T) => U): (list: U[]) => U;
declare function commute<T, U>(of: (x: T) => T[], list: U[]): U[];
declare function commute<T, U>(of: (x: T) => T[]): (list: U[]) => U[];
declare function commuteMap<T, U>(fn: (list: T[]) => U[], of: (x: T[]) => U[][], list: T[][]): U[][];
declare function commuteMap<T, U>(fn: (list: T[]) => U[]): (of: (x: T[]) => U[][], list: T[][]) => U[][];
declare function commuteMap<T, U>(fn: (list: T[]) => U[], of: (x: T[]) => U[][]): (list: T[][]) => U[][];
declare function concat<T>(list1: T[], list2: T[]): T[];
declare function concat<T>(list1: T[]): (list2: T[]) => T[];
declare function concat<T>(list1: string, list2: string): string;
declare function concat<T>(list1: string): (list2: string) => string;
declare function contains<T>(a: T, list: T[]): boolean;
declare function contains<T>(a: T): (list: T[]) => boolean;
declare function containsWith<T>(pred: (a: T, b: T) => boolean, x: T, list: T[]): boolean;
declare function containsWith<T>(pred: (a: T, b: T) => boolean, x: T): (list: T[]) => boolean;
declare function drop<T>(n: number, list: T[]): T[];
declare function drop<T>(n: number): (list: T[]) => T[];
declare function dropWhile<T>(fn: (a: T) => boolean, list: T[]): T[];
declare function dropWhile<T>(fn: (a: T) => boolean): (list: T[]) => T[];
declare function filter<T>(fn: (value: T) => boolean): (list: T[]) => T[];
declare function filter<T>(fn: (value: T) => boolean, list: T[]): T[];
declare function filterIndexed<T>(fn: (value: T, index: number, list: T[]) => boolean): (list: T[]) => T[];
declare function filterIndexed<T>(fn: (value: T, index: number, list: T[]) => boolean, list: T[]): T[];
declare function find<T>(fn: (a: T) => boolean, list: T[]): T;
declare function find<T>(fn: (a: T) => boolean): (list: T[]) => T;
declare function findIndex<T>(fn: (a: T) => boolean, list: T[]): number;
declare function findIndex<T>(fn: (a: T) => boolean): (list: T[]) => number;
declare function findLast<T>(fn: (a: T) => boolean, list: T[]): T;
declare function findLast<T>(fn: (a: T) => boolean): (list: T[]) => T;
declare function findLastIndex<T>(fn: (a: T) => boolean, list: T[]): number;
declare function findLastIndex<T>(fn: (a: T) => boolean): (list: T[]) => number;
declare function flatten<T>(x: T[]): T[];
declare function forEach<T>(fn: (x: T) => void, list: T[]): T[];
declare function forEach<T>(fn: (x: T) => void): (list: T[]) => T[];
declare function forEachIndexed<T>(fn: (x: T, idx?: number, list?: T[]) => void, list: T[]): T[];
declare function forEachIndexed<T>(fn: (x: T, idx?: number, list?: T[]) => void): (list: T[]) => T[];
declare function fromPairs<V>(pairs: KeyValuePair<string, V>[]): {[index: string]: V};
declare function fromPairs<V>(pairs: KeyValuePair<number, V>[]): {[index: number]: V};
declare function groupBy<T>(fn: (a: T) => string, list: T[]): {[index: string]: T[]};
declare function groupBy<T>(fn: (a: T) => string): <T>(list: T[]) => {[index: string]: T[]};
declare function head<T>(list: T[]): T;
declare function indexOf<T>(target: T, list: T[]): number;
declare function indexOf<T>(target: T): (list: T[]) => number;
declare function init<T>(list: T[]): T[];
declare function insert(index: number, elt: any, list: any[]): any[];
declare function insert(index: number): (elt: any, list: any[]) => any[];
declare function insert(index: number, elt: any): (list: any[]) => any[];
declare function insertAll(index: number, elts: any[], list: any[]): any[];
declare function insertAll(index: number): (elts: any[], list: any[]) => any[];
declare function insertAll(index: number, elts: any[]): (list: any[]) => any[];
declare function into<T>(acc: any, xf: Function, list: T[]): T[];
declare function into<T>(acc: any, xf: Function): (list: T[]) => T[];
declare function into<T>(acc: any): (xf: Function, list: T[]) => T[];
declare function isSet(list: any[]): boolean;
declare function join(x: string, xs: any[]): string;
declare function join(x: string): (xs: any[]) => string;
declare function last<T>(list: T[]): T;
declare function lastIndexOf<T>(target: T, list: T[]): number;
declare function length(list: any[]): number;
declare function map<T, U>(fn: (x: T) => U, list: T[]): U[];
declare function map<T, U>(fn: (x: T) => U): (list: T[]) => U[];
declare function mapAccum<T, U, TResult>(fn: (acc: U, value: T) => [U, TResult], acc: U, list: T[]): [U, TResult[]];
declare function mapAccum<T, U, TResult>(fn: (acc: U, value: T) => [U, TResult]): (acc: U, list: T[]) => [U, TResult[]];
declare function mapAccum<T, U, TResult>(fn: (acc: U, value: T) => [U, TResult], acc: U): (list: T[]) => [U, TResult[]];
declare function mapAccumRight<T, U, TResult>(fn: (acc: U, value: T) => [U, TResult], acc: U, list: T[]): [U, TResult[]];
declare function mapAccumRight<T, U, TResult>(fn: (acc: U, value: T) => [U, TResult]): (acc: U, list: T[]) => [U, TResult[]];
declare function mapAccumRight<T, U, TResult>(fn: (acc: U, value: T) => [U, TResult], acc: U): (list: T[]) => [U, TResult[]];
declare function mapIndexed<T, U>(fn: (val: T, key: number, list: T[]) => U, list: T[]): U[];
declare function mapIndexed<T, U>(fn: (val: T, key: number, list: T[]) => U): (list: T[]) => U[];
declare function mergeAll(list: any[]): any;
declare function none<T>(fn: (a: T) => boolean, list: T[]): boolean;
declare function none<T>(fn: (a: T) => boolean): (list: T[]) => boolean;
declare function nth<T>(n: number, list: T[]): T;
declare function nth<T>(n: number): (list: T[]) => T;
declare function partition<T>(fn: (a: T) => boolean, list: T): T[];
declare function partition<T>(fn: (a: T) => boolean): (list: T) => T[];
declare function pluck<T>(p: string|number, list: any[]): T[];
declare function pluck<T>(p: string|number): (list: any[]) => T[];
declare function pluck(p: string|number, list: any[]): any[];
declare function pluck(p: string|number): (list: any[]) => any[];
declare function prepend<T>(el: T, list: T[]): T[];
declare function prepend<T>(el: T): (list: T[]) => T[];
declare function range(from: number, to: number): number[];
declare function range(from: number): (to: number) => number[];
declare function reduce<T, TResult>(fn: (acc: TResult, elem: T) => TResult, acc: TResult, list: T[]): TResult;
declare function reduce<T, TResult>(fn: (acc: TResult, elem: T) => TResult): (acc: TResult, list: T[]) => TResult;
declare function reduce<T, TResult>(fn: (acc: TResult, elem: T) => TResult, acc: TResult): (list: T[]) => TResult;
declare function reduceIndexed<T, TResult>(fn: (acc: TResult, elem: T, idx: number, list: T[]) => TResult, acc: TResult, list: T[]): TResult;
declare function reduceIndexed<T, TResult>(fn: (acc: TResult, elem: T, idx: number, list: T[]) => TResult): (acc: TResult, list: T[]) => TResult;
declare function reduceIndexed<T, TResult>(fn: (acc: TResult, elem: T, idx: number, list: T[]) => TResult, acc: TResult): (list: T[]) => TResult;
declare function reduceRight<T, TResult>(fn: (acc: TResult, elem: T) => TResult, acc: TResult, list: T[]): TResult;
declare function reduceRight<T, TResult>(fn: (acc: TResult, elem: T) => TResult): (acc: TResult, list: T[]) => TResult;
declare function reduceRight<T, TResult>(fn: (acc: TResult, elem: T) => TResult, acc: TResult): (list: T[]) => TResult;
declare function reduceRightIndexed<T, TResult>(fn: (acc: TResult, elem: T, idx: Number, list: T[]) => TResult, acc: TResult, list: T[]): TResult;
declare function reduceRightIndexed<T, TResult>(fn: (acc: TResult, elem: T, idx: Number, list: T[]) => TResult): (acc: TResult, list: T[]) => TResult;
declare function reduceRightIndexed<T, TResult>(fn: (acc: TResult, elem: T, idx: Number, list: T[]) => TResult, acc: TResult): (list: T[]) => TResult;
declare function reject<T>(fn: (value: T) => boolean, list: T[]): T[];
declare function reject<T>(fn: (value: T) => boolean): (list: T[]) => T[];
declare function rejectIndexed<T>(fn: (value: T, index: number, list: T[]) => boolean, list: T[]): T[];
declare function rejectIndexed<T>(fn: (value: T, index: number, list: T[]) => boolean): (list: T[]) => T[];
declare function remove<T>(start: number, count: number, list: T[]): T[];
declare function remove<T>(start: number): (count: number, list: T[]) => T[];
declare function remove<T>(start: number, count: number): (list: T[]) => T[];
declare function repeat<T>(a: T, n: number): T[];
declare function repeat<T>(a: T): (n: number) => T[];
declare function reverse<T>(list: T[]): T[];
declare function scan<T, TResult>(fn: (acc: TResult, elem: T) => TResult, acc: TResult, list: T[]): TResult;
declare function scan<T, TResult>(fn: (acc: TResult, elem: T) => TResult): (acc: TResult, list: T[]) => TResult;
declare function scan<T, TResult>(fn: (acc: TResult, elem: T) => TResult, acc: TResult): (list: T[]) => TResult;
declare function slice(a: number, b: number, list: string): string;
declare function slice<T>(a: number, b: number, list: T[]): T[];
declare function slice<T>(a: number, b: number): (list: string|T[]) => string|T[];
declare function slice<T>(a: number): (b: number, list: string|T[]) => string|T[];
declare function sort<T>(fn: (a: T, b: T) => number, list: T[]): T[];
declare function sort<T>(fn: (a: T, b: T) => number): (list: T[]) => T[];
declare function splitEvery<T>(a: number, list: T[]): T[][];
declare function splitEvery<T>(a: number): (list: T[]) => T[][];
declare function tail<T>(list: T[]): T[];
declare function take<T>(n: number, list: T[]): T[];
declare function take<T>(n: number): (list: T[]) => T[];
declare function takeWhile<T>(fn: (x: T) => boolean, list: T[]): T[];
declare function takeWhile<T>(fn: (x: T) => boolean): (list: T[]) => T[];
declare function times<T>(fn: (i: number) => T, n: number): T[];
declare function times<T>(fn: (i: number) => T): (n: number) => T[];
declare function transduce<T,U>(xf: (arg: T[]) => T[], fn: (acc: U[], val: U) => U[], acc: T[], list: T[]): U;
declare function transduce<T,U>(xf: (arg: T[]) => T[]): (fn: (acc: U[], val: U) => U[], acc: T[], list: T[]) => U;
declare function transduce<T,U>(xf: (arg: T[]) => T[], fn: (acc: U[], val: U) => U[]): (acc: T[], list: T[]) => U;
declare function transduce<T,U>(xf: (arg: T[]) => T[], fn: (acc: U[], val: U) => U[], acc: T[]): (list: T[]) => U;
declare function unfold<T, TResult>(fn: (seed: T) => TResult, seed: T): TResult[];
declare function unfold<T, TResult>(fn: (seed: T) => TResult): (seed: T) => TResult[];
declare function uniq<T>(list: T[]): T[];
declare function uniqBy<T,U>(fn: (a: T) => U, list: T[]): T[];
declare function uniqBy<T,U>(fn: (a: T) => U): (list: T[]) => T[];
declare function uniqWith<T,U>(pred: (x: T, y: T) => boolean, list: T[]): T[];
declare function uniqWith<T,U>(pred: (x: T, y: T) => boolean): (list: T[]) => T[];
declare function unnest<T>(x: T[]): T[];
declare function update<T>(index: number, value: T, list: T[]): T[];
declare function update<T>(index: number, value: T): (list: T[]) => T[];
declare function xprod<K,V>(as: K[], bs: V[]): KeyValuePair<K,V>[];
declare function xprod<K,V>(as: K[]): (bs: V[]) => KeyValuePair<K,V>[];
declare function zip<K,V>(list1: K[], list2: V[]): KeyValuePair<K,V>[];
declare function zip<K,V>(list1: K[]): (list2: V[]) => KeyValuePair<K,V>[];
declare function zipObj<T>(keys: string[], values: T[]): {[index:string]: T};
declare function zipObj<T>(keys: string[]): (values: T[]) => {[index:string]: T};
declare function zipWith<T, U, TResult>(fn: (x: T, y: U) => TResult, list1: T[], list2: U[]): TResult[];
declare function zipWith<T, U, TResult>(fn: (x: T, y: U) => TResult, list1: T[]): (list2: U[]) => TResult[];
declare function zipWith<T, U, TResult>(fn: (x: T, y: U) => TResult): (list1: T[], list2: U[]) => TResult[];
declare function assoc(prop: string, val: any, obj: any): any;
declare function assoc(prop: string): (val: any, obj: any) => any;
declare function assoc(prop: string, val: any): (obj: any) => any;
declare function assocPath(path: string[], val: any, obj: any): any;
declare function assocPath(path: string[]): (val: any, obj: any) => any;
declare function assocPath(path: string[], val: any): (obj: any) => any;
declare function clone(value: any): any;
declare function clone(value: any[]): any[];
declare function createMapEntry<T>(key: string, val: T): {[index: string]: T};
declare function createMapEntry<T>(key: placeholder, val: T): (key: string) => {[index: string]: T};
declare function createMapEntry<T>(key: string): (val: T) => {[index: string]: T};
declare function dissoc(prop: string, obj: any): any;
declare function dissoc(prop: string): (obj: any) => any;
declare function dissoc(prop: string, obj: any): any;
declare function dissoc(prop: placeholder, obj: any): (prop: string) => any;
declare function dissoc(prop: string): (obj: any) => any;
declare function dissocPath(path: string[], obj: any): any;
declare function dissocPath(path: string[]): (obj: any) => any;
declare function eqProps(prop: string, obj1: any, obj2: any): boolean;
declare function eqProps(prop: string): (obj1: any, obj2: any) => boolean;
declare function eqProps(prop: string, obj1: any): (obj2: any) => boolean;
declare function evolve(transformations: {[index: string]: (value: any) => any}, obj: any): any;
declare function functions(obj: any): string[];
declare function functionsIn(obj: any): string[];
declare function has(s: string, obj: any): boolean;
declare function has(s: string): (obj: any) => boolean;
declare function has(s: placeholder, obj: any): (a: string) => boolean;
declare function hasIn(s: string, obj: any): boolean;
declare function hasIn(s: string): (obj: any) => boolean;
declare function hasIn(s: placeholder, obj: any): (a: string) => boolean;
declare function invert(obj: any): {[index:string]: string[]};
declare function invertObj(obj: any): {[index:string]: string};
declare function invertObj(obj: {[index: number]: string}): {[index:string]: string};
declare function keys(x: any): string[];
declare function keysIn(obj: any): string[];
declare function lens<T,U,V>(getter: (s: T) => U, setter: (a: U, s: T) => V): Lens;
declare function lensIndex(n: number): Lens;
declare function lensProp(str: string): {
<T, U>(obj: T): U;
set<T,U,V>(val: T, obj: U): V;
};
declare function mapObj<T, TResult>(fn: (value: T) => TResult, obj: any): {[index: string]: TResult};
declare function mapObj<T, TResult>(fn: (value: T) => TResult): (obj: any) => {[index: string]: TResult};
declare function mapObjIndexed<T, TResult>(fn: (value: T, key: string, obj?: any) => TResult, obj: any): {[index:string]: TResult};
declare function mapObjIndexed<T, TResult>(fn: (value: T, key: string, obj?: any) => TResult): (obj: any) => {[index:string]: TResult};
declare function merge(a: any, b: any): any;
declare function merge(a: any): (b: any) => any;
declare function omit<T>(names: string[], obj: T): T;
declare function omit<T>(names: string[]): (obj: T) => T;
declare function over<T>(lens: Lens, fn: Arity1Fn, value: T|T[]): T|T[];
declare function over<T>(lens: Lens, fn: Arity1Fn): (value: T|T[]) => T|T[];
declare function over<T>(lens: Lens): (fn: Arity1Fn, value: T|T[]) => T|T[];
declare function path<T>(path: string[], obj: any): T;
declare function path<T>(path: placeholder, obj: any): (path: string[]) => T;
declare function path<T>(path: string[]): (obj: any) => T;
declare function pick<T>(names: string[], obj: T): T;
declare function pick<T>(names: string[]): (obj: T) => T;
declare function pickAll<T, U>(names: string[], obj: T): U;
declare function pickAll<T, U>(names: string[]): (obj: T) => U;
declare function pickBy<T,U>(pred: ObjPred, obj: T): U;
declare function pickBy<T,U>(pred: ObjPred): (obj: T) => U;
declare function project<T,U>(props: string[], objs: T[]): U[];
declare function prop<T>(p: string, obj: any): T;
declare function prop<T>(p: string): (obj: any) => T;
declare function propOr<T,U,V>(val: T, p: string, obj: U): V;
declare function propOr<T,U,V>(val: T, p: string): (obj: U) => V;
declare function propOr<T,U,V>(val: T): (p: string, obj: U) => V;
declare function props<T>(ps: string[], obj: Dictionary<T>): T[];
declare function props<T>(ps: string[]): (obj: Dictionary<T>) => T[];
declare function set<T,U>(lens: Lens, a: U, obj: T): T;
declare function set<T,U>(lens: Lens, a: U): (obj: T) => T;
declare function set<T,U>(lens: Lens): (a: U, obj: T) => T;
declare function toPairs(obj: any): any[][];
declare function toPairsIn(obj: any): any[][];
declare function values<T>(obj: {[index: string]: T}): T[];
declare function values(obj: any): any[];
declare function valuesIn(obj: any): any[];
declare function view<T,U>(lens: Lens, obj: T): U;
declare function where<T,U>(spec: T, testObj: U): boolean;
declare function where<T,U>(spec: T): (testObj: U) => boolean;
declare function where<ObjFunc2,U>(spec: ObjFunc2, testObj: U): boolean;
declare function where<ObjFunc2,U>(spec: ObjFunc2): (testObj: U) => boolean;
declare function whereEq<T,U>(spec: T, obj: U): boolean;
declare function whereEq<T,U>(spec: T): (obj: U) => boolean;
declare function addIndex<T, U>(fn: (f: (item: T) => U, list: T[]) => U[]): (fn: (item: T, idx: number, list?: T[]) => U) => (list: T[]) => U[];
declare function addIndex<T, U>(fn: (f: (item: T) => U, list: T[]) => U[]): (fn: (item: T, idx: number, list?: T[]) => U, list: T[]) => U[];
declare function always<T>(val: T): () => T;
declare function ap<T,U>(fns: ((a: T) => U)[], vs: T[]): U[];
declare function ap<T,U>(fns: ((a: T) => U)[]): (vs: T[]) => U[];
declare function apply<T, U, TResult>(fn: (arg0: T, ...args: T[]) => TResult, args: U[]): TResult;
declare function apply<T, U, TResult>(fn: (arg0: T, ...args: T[]) => TResult): (args: U[]) => TResult;
declare function binary(fn: (...args: any[]) => any): Function;
declare function bind<T>(thisObj: T, fn: (...args: any[]) => any): (...args: any[]) => any;
declare function call(fn: (...args: any[])=> (...args: any[]) => any, ...args: any[]): any;
declare function comparator<T>(pred: (a: T, b: T) => boolean): (x: T, y: T) => number;
declare function compose<V0, T1>(fn0: (x0: V0) => T1): (x0: V0) => T1;
declare function compose<V0, V1, T1>(fn0: (x0: V0, x1: V1) => T1): (x0: V0, x1: V1) => T1;
declare function compose<V0, V1, V2, T1>(fn0: (x0: V0, x1: V1, x2: V2) => T1): (x0: V0, x1: V1, x2: V2) => T1;
declare function compose<V0, T1, T2>(fn1: (x: T1) => T2, fn0: (x0: V0) => T1): (x0: V0) => T2;
declare function compose<V0, V1, T1, T2>(fn1: (x: T1) => T2, fn0: (x0: V0, x1: V1) => T1): (x0: V0, x1: V1) => T2;
declare function compose<V0, V1, V2, T1, T2>(fn1: (x: T1) => T2, fn0: (x0: V0, x1: V1, x2: V2) => T1): (x0: V0, x1: V1, x2: V2) => T2;
declare function compose<V0, T1, T2, T3>(fn2: (x: T2) => T3, fn1: (x: T1) => T2, fn0: (x: V0) => T1): (x: V0) => T3;
declare function compose<V0, V1, T1, T2, T3>(fn2: (x: T2) => T3, fn1: (x: T1) => T2, fn0: (x0: V0, x1: V1) => T1): (x0: V0, x1: V1) => T3;
declare function compose<V0, V1, V2, T1, T2, T3>(fn2: (x: T2) => T3, fn1: (x: T1) => T2, fn0: (x0: V0, x1: V1, x2: V2) => T1): (x0: V0, x1: V1, x2: V2) => T3;
declare function compose<V0, T1, T2, T3, T4>(fn3: (x: T3) => T4, fn2: (x: T2) => T3, fn1: (x: T1) => T2, fn0: (x: V0) => T1): (x: V0) => T4;
declare function compose<V0, V1, T1, T2, T3, T4>(fn3: (x: T3) => T4, fn2: (x: T2) => T3, fn1: (x: T1) => T2, fn0: (x0: V0, x1: V1) => T1): (x0: V0, x1: V1) => T4;
declare function compose<V0, V1, V2, T1, T2, T3, T4>(fn3: (x: T3) => T4, fn2: (x: T2) => T3, fn1: (x: T1) => T2, fn0: (x0: V0, x1: V1, x2: V2) => T1): (x0: V0, x1: V1, x2: V2) => T4;
declare function compose<V0, T1, T2, T3, T4, T5>(fn4: (x: T4) => T5, fn3: (x: T3) => T4, fn2: (x: T2) => T3, fn1: (x: T1) => T2, fn0: (x: V0) => T1): (x: V0) => T5;
declare function compose<V0, V1, T1, T2, T3, T4, T5>(fn4: (x: T4) => T5, fn3: (x: T3) => T4, fn2: (x: T2) => T3, fn1: (x: T1) => T2, fn0: (x0: V0, x1: V1) => T1): (x0: V0, x1: V1) => T5;
declare function compose<V0, V1, V2, T1, T2, T3, T4, T5>(fn4: (x: T4) => T5, fn3: (x: T3) => T4, fn2: (x: T2) => T3, fn1: (x: T1) => T2, fn0: (x0: V0, x1: V1, x2: V2) => T1): (x0: V0, x1: V1, x2: V2) => T5;
declare function compose<V0, T1, T2, T3, T4, T5, T6>(fn5: (x: T5) => T6, fn4: (x: T4) => T5, fn3: (x: T3) => T4, fn2: (x: T2) => T3, fn1: (x: T1) => T2, fn0: (x: V0) => T1): (x: V0) => T6;
declare function compose<V0, V1, T1, T2, T3, T4, T5, T6>(fn5: (x: T5) => T6, fn4: (x: T4) => T5, fn3: (x: T3) => T4, fn2: (x: T2) => T3, fn1: (x: T1) => T2, fn0: (x0: V0, x1: V1) => T1): (x0: V0, x1: V1) => T6;
declare function compose<V0, V1, V2, T1, T2, T3, T4, T5, T6>(fn5: (x: T5) => T6, fn4: (x: T4) => T5, fn3: (x: T3) => T4, fn2: (x: T2) => T3, fn1: (x: T1) => T2, fn0: (x0: V0, x1: V1, x2: V2) => T1): (x0: V0, x1: V1, x2: V2) => T6;
declare function construct(fn: Function): Function;
declare function constructN(n: number, fn: Function): Function;
declare function converge(after: Function, fns: Function[]): Function;
declare function curry<T1, T2, TResult>(fn: (a: T1, b: T2) => TResult): (a: T1) => (b: T2) => TResult;
declare function curry<T1, T2, T3, TResult>(fn: (a: T1, b: T2, c: T3) => TResult): (a: T1) => (b: T2) => (c: T3) => TResult;
declare function curry<T1, T2, T3, T4, TResult>(fn: (a: T1, b: T2, c: T3, d: T4) => TResult): (a: T1) => (b: T2) => (c: T3) => (d: T4) => TResult;
declare function curry<T1, T2, T3, T4, T5, TResult>(fn: (a: T1, b: T2, c: T3, d: T4, e: T5) => TResult): (a: T1) => (b: T2) => (c: T3) => (d: T4) => (e: T5) => TResult;
declare function curry<T1, T2, T3, T4, T5, T6, TResult>(fn: (a: T1, b: T2, c: T3, d: T4, e: T5, f: T6) => TResult): (a: T1) => (b: T2) => (c: T3) => (d: T4) => (e: T5) => (f: T6) => TResult;
declare function curry(fn: Function): Function;
declare function curryN(length: number, fn: (...args: any[]) => any): Function;
declare function empty(x: any): any[];
declare function F(): boolean;
declare function flip<T,U,TResult>(fn: (arg0: T, arg1: U) => TResult): (arg1: U, arg0?: T) => TResult;
declare function flip<T,U,TResult>(fn: (arg0: T, arg1: U, ...args: any[]) => TResult): (arg1: U, arg0?: T, ...args: any[]) => TResult;
declare function identity(a: any): any;
declare function invoker(name: string, obj: any, len?: number): Function;
declare function lift(fn: Function, ...args: any[]): any;
declare function liftN(n: number, fn: Function, ...args: any[]): any;
declare function memoize(fn: Function): Function;
declare function nAry(n: number, fn: (...arg: any[]) => any): Function;
declare function of<T>(x: T): T[];
declare function of<T>(x: T[]): T[][];
declare function once(fn: Function): Function;
declare function partial(fn: Function, ...args: any[]): Function;
declare function partialRight(fn: Function, ...args: any[]): Function;
declare function pipe<V0, T1>(fn0: (x0: V0) => T1): (x0: V0) => T1;
declare function pipe<V0, V1, T1>(fn0: (x0: V0, x1: V1) => T1): (x0: V0, x1: V1) => T1;
declare function pipe<V0, V1, V2, T1>(fn0: (x0: V0, x1: V1, x2: V2) => T1): (x0: V0, x1: V1, x2: V2) => T1;
declare function pipe<V0, T1, T2>(fn0: (x0: V0) => T1, fn1: (x: T1) => T2): (x0: V0) => T2;
declare function pipe<V0, V1, T1, T2>(fn0: (x0: V0, x1: V1) => T1, fn1: (x: T1) => T2): (x0: V0, x1: V1) => T2;
declare function pipe<V0, V1, V2, T1, T2>(fn0: (x0: V0, x1: V1, x2: V2) => T1, fn1: (x: T1) => T2): (x0: V0, x1: V1, x2: V2) => T2;
declare function pipe<V0, T1, T2, T3>(fn0: (x: V0) => T1, fn1: (x: T1) => T2, fn2: (x: T2) => T3): (x: V0) => T3;
declare function pipe<V0, V1, T1, T2, T3>(fn0: (x0: V0, x1: V1) => T1, fn1: (x: T1) => T2, fn2: (x: T2) => T3): (x0: V0, x1: V1) => T3;
declare function pipe<V0, V1, V2, T1, T2, T3>(fn0: (x0: V0, x1: V1, x2: V2) => T1, fn1: (x: T1) => T2, fn2: (x: T2) => T3): (x0: V0, x1: V1, x2: V2) => T3;
declare function pipe<V0, T1, T2, T3, T4>(fn0: (x: V0) => T1, fn1: (x: T1) => T2, fn2: (x: T2) => T3, fn3: (x: T3) => T4): (x: V0) => T4;
declare function pipe<V0, V1, T1, T2, T3, T4>(fn0: (x0: V0, x1: V1) => T1, fn1: (x: T1) => T2, fn2: (x: T2) => T3, fn3: (x: T3) => T4): (x0: V0, x1: V1) => T4;
declare function pipe<V0, V1, V2, T1, T2, T3, T4>(fn0: (x0: V0, x1: V1, x2: V2) => T1, fn1: (x: T1) => T2, fn2: (x: T2) => T3, fn3: (x: T3) => T4): (x0: V0, x1: V1, x2: V2) => T4;
declare function pipe<V0, T1, T2, T3, T4, T5>(fn0: (x: V0) => T1, fn1: (x: T1) => T2, fn2: (x: T2) => T3, fn3: (x: T3) => T4, fn4: (x: T4) => T5): (x: V0) => T5;
declare function pipe<V0, V1, T1, T2, T3, T4, T5>(fn0: (x0: V0, x1: V1) => T1, fn1: (x: T1) => T2, fn2: (x: T2) => T3, fn3: (x: T3) => T4, fn4: (x: T4) => T5): (x0: V0, x1: V1) => T5;
declare function pipe<V0, V1, V2, T1, T2, T3, T4, T5>(fn0: (x0: V0, x1: V1, x2: V2) => T1, fn1: (x: T1) => T2, fn2: (x: T2) => T3, fn3: (x: T3) => T4, fn4: (x: T4) => T5): (x0: V0, x1: V1, x2: V2) => T5;
declare function pipe<V0, T1, T2, T3, T4, T5, T6>(fn0: (x: V0) => T1, fn1: (x: T1) => T2, fn2: (x: T2) => T3, fn3: (x: T3) => T4, fn4: (x: T4) => T5, fn5: (x: T5) => T6): (x: V0) => T6;
declare function pipe<V0, V1, T1, T2, T3, T4, T5, T6>(fn0: (x0: V0, x1: V1) => T1, fn1: (x: T1) => T2, fn2: (x: T2) => T3, fn3: (x: T3) => T4, fn4: (x: T4) => T5, fn5: (x: T5) => T6): (x0: V0, x1: V1) => T6;
declare function pipe<V0, V1, V2, T1, T2, T3, T4, T5, T6>(fn0: (x0: V0, x1: V1, x2: V2) => T1, fn1: (x: T1) => T2, fn2: (x: T2) => T3, fn3: (x: T3) => T4, fn4: (x: T4) => T5, fn5: (x: T5) => T6): (x0: V0, x1: V1, x2: V2) => T6;
declare function pipe<V0, T1, T2, T3, T4, T5, T6, T7>(fn0: (x: V0) => T1, fn1: (x: T1) => T2, fn2: (x: T2) => T3, fn3: (x: T3) => T4, fn4: (x: T4) => T5, fn5: (x: T5) => T6, fn: (x: T6) => T7): (x: V0) => T7;
declare function pipe<V0, V1, T1, T2, T3, T4, T5, T6, T7>(fn0: (x0: V0, x1: V1) => T1, fn1: (x: T1) => T2, fn2: (x: T2) => T3, fn3: (x: T3) => T4, fn4: (x: T4) => T5, fn5: (x: T5) => T6, fn6: (x: T6) => T7): (x0: V0, x1: V1) => T7;
declare function pipe<V0, V1, V2, T1, T2, T3, T4, T5, T6, T7>(fn0: (x0: V0, x1: V1, x2: V2) => T1, fn1: (x: T1) => T2, fn2: (x: T2) => T3, fn3: (x: T3) => T4, fn4: (x: T4) => T5, fn5: (x: T5) => T6, fn6: (x: T6) => T7): (x0: V0, x1: V1, x2: V2) => T7;
declare function pipe<V0, T1, T2, T3, T4, T5, T6, T7, T8>(fn0: (x: V0) => T1, fn1: (x: T1) => T2, fn2: (x: T2) => T3, fn3: (x: T3) => T4, fn4: (x: T4) => T5, fn5: (x: T5) => T6, fn6: (x: T6) => T7, fn: (x: T7) => T8): (x: V0) => T8;
declare function pipe<V0, V1, T1, T2, T3, T4, T5, T6, T7, T8>(fn0: (x0: V0, x1: V1) => T1, fn1: (x: T1) => T2, fn2: (x: T2) => T3, fn3: (x: T3) => T4, fn4: (x: T4) => T5, fn5: (x: T5) => T6, fn6: (x: T5) => T6, fn7: (x: T7) => T8): (x0: V0, x1: V1) => T8;
declare function pipe<V0, V1, V2, T1, T2, T3, T4, T5, T6, T7, T8>(fn0: (x0: V0, x1: V1, x2: V2) => T1, fn1: (x: T1) => T2, fn2: (x: T2) => T3, fn3: (x: T3) => T4, fn4: (x: T4) => T5, fn5: (x: T5) => T6, fn6: (x: T5) => T6, fn7: (x: T7) => T8): (x0: V0, x1: V1, x2: V2) => T8;
declare function tap<T>(fn: (a: T) => any, value: T): T;
declare function tap<T>(fn: (a: T) => any): (value: T) => T;
declare function op(fn: (a: any, b: any) => any): Function;
declare function substring(indexA: number, indexB: number, str: string): string;
declare function substringFrom(indexA: number, str: string): string;
declare function substringTo(indexA: number, str: string): string;
declare function isArrayLike(val: any): boolean;
declare function op(fn: Function): Function;
declare function unary<T>(fn: (a: T, ...args: any[]) => any): (a: T) => any;
declare function useWith(fn: Function, transformers: Function[]): Function;
declare function repeatN<T>(value: T, n: number): T[];
declare function wrap(fn: Function, wrapper: Function): Function;
declare function of(x: any): any[];
declare function flatten(x: any[]): any[];
declare function func(funcName: string , obj: any): any;
declare function installTo(obj: any): any;
declare function is(ctor: any, val: any): boolean;
declare function is(ctor: any): (val: any) => boolean;
declare function isNil(value: any): boolean;
declare function alwaysZero(): number;
declare function alwaysFalse(): boolean;
declare function alwaysTrue(): boolean;
declare function allPass(preds: Pred[]): Pred;
declare function and<T>(fn1: T, val2: boolean|any): boolean;
declare function and<T>(fn1: T): (val2: boolean|any) => boolean;
declare function anyPass(preds: Pred[]): Pred;
declare function both(pred1: Pred, pred2: Pred): Pred;
declare function both(pred1: Pred): (pred2: Pred) => Pred;
declare function complement(pred: (...args: any[]) => boolean): (...args: any[]) => boolean;
declare function cond(fns: [Pred, Function][]): Function;
declare function defaultTo<T,U>(a: T, b: U): T|U;
declare function defaultTo<T>(a: T): <U>(b: U) => T|U;
declare function either(pred1: Pred, pred2: Pred): Pred;
declare function either(pred1: Pred): (pred2: Pred) => Pred;
declare function ifElse(fn: Pred, onTrue: Arity1Fn, onFalse: Arity1Fn): Arity1Fn;
declare function isEmpty(value: string|any[]): boolean;
declare function not(value: any): boolean;
declare function or<T, U>(a: T, b: U): T|U;
declare function or<T>(a: T): <U>(b: U) => T|U;
declare function or<T, U>(fn1: T, val2: U): T|U;
declare function or<T>(fn1: T): <U>(val2: U) => T|U;
declare function add(a: number, b: number): number;
declare function add(a: string, b: string): string;
declare function add(a: number): (b: number) => number;
declare function add(a: string): (b: string) => string;
declare function dec(n: number): number;
declare function divide(a: number, b: number): number;
declare function divide(a: number): (b: number) => number;
declare function divide(a: placeholder, b: number): (b: number) => number;
declare function gt(a: number, b: number): boolean;
declare function gt(a: number): (b: number) => boolean;
declare function gt(a: placeholder, b: number): (b: number) => boolean;
declare function gte(a: number, b: number): boolean;
declare function gte(a: number): (b: number) => boolean;
declare function gte(a: placeholder, b: number): (b: number) => boolean;
declare function inc(n: number): number;
declare function isNaN(x: any): boolean;
declare function lt(a: number, b: number): boolean;
declare function lt(a: number): (b: number) => boolean;
declare function lt(a: placeholder, b: number): (b: number) => boolean;
declare function lte(a: number, b: number): boolean;
declare function lte(a: number): (b: number) => boolean;
declare function lte(a: placeholder, b: number): (b: number) => boolean;
declare function mathMod(a: number, b: number): number;
declare function mathMod(a: number): (b: number) => number;
declare function mathMod(a: placeholder, b: number): (a: number) => number;
declare function max(a: number, b: number): number;
declare function max(a: number): (b: number) => number;
declare function maxBy<T>(keyFn: (a: T) => number, list: T[]): T;
declare function maxBy<T>(keyFn: (a: T) => number): (list: T[]) => T;
declare function min(a: number, b: number): number;
declare function min(a: number): (b: number) => number;
declare function minBy<T>(keyFn: (a: T) => number, list: T[]): T;
declare function minBy<T>(keyFn: (a: T) => number): (list: T[]) => T;
declare function modulo(a: number, b: number): number;
declare function modulo(a: placeholder, b: number): (a: number) => number;
declare function modulo(a: number): (b: number) => number;
declare function multiply(a: number, b: number): number;
declare function multiply(a: number): (b: number) => number;
declare function multiply(a: placeholder, b: number): (a: number) => number;
declare function negate(n: number): number;
declare function product(list: number[]): number;
declare function subtract(a: number, b: number): number;
declare function subtract(a: placeholder, b: number): (a: number) => number;
declare function subtract(a: number): (b: number) => number;
declare function sum(list: number[]): number;
declare function substring(indexA: number, indexB: number, str: string): string;
declare function substring(indexA: number): (indexB: number, str: string) => string;
declare function substring(indexA: number, indexB: number): (str: string) => string;
declare function substringFrom(indexA: number, str: string): string;
declare function substringFrom(indexA: number): (str: string) => string;
declare function replace(pattern: RegExp, replacement: string, str: string): string;
declare function replace(pattern: RegExp, replacement: string): (str: string) => string;
declare function replace(pattern: RegExp): (replacement: string) => (str: string) => string;
declare function replace(pattern: String, replacement: string, str: string): string;
declare function replace(pattern: String, replacement: string): (str: string) => string;
declare function replace(pattern: String): (replacement: string) => (str: string) => string;
declare function substringTo(toIndex: number, str: string): string;
declare function substringTo(toIndex: number): (str: string) => string;
declare function nthChar(index: number, str: string): string;
declare function nthCharCode(index: number, str: string): number;
declare function match(regexp: RegExp, str: string): any[];
declare function strIndexOf(c: string, str: string): number;
declare function strLastIndexOf(c: string, str: string): number;
declare function toUpper(str: string): string;
declare function trim(str: string): string;
declare function toLower(str: string): string;
declare function split(sep: string): (str: string) => string[];
declare function split(sep: RegExp): (str: string) => string[];
declare function split(sep: string, str: string): string[];
declare function split(sep: RegExp, str: string): string[];
declare function countBy(fn: (a: any) => string|number, list: any[]): any;
declare function countBy(fn: (a: any) => string|number): (list: any[]) => any;
declare function difference<T>(list1: T[], list2: T[]): T[];
declare function difference<T>(list1: T[]): (list2: T[]) => T[];
declare function differenceWith<T>(pred: (a: T, b: T) => boolean, list1: T[], list2: T[]): T[];
declare function eq<T>(a: T, b: T): boolean;
declare function eq<T>(a: T): (b: T) => boolean;
declare function equals<T>(a: T, b: T): boolean;
declare function equals<T>(a: T): (b: T) => boolean;
declare function identical<T>(a: T, b: T): boolean;
declare function identical<T>(a: T): (b: T) => boolean;
declare function intersection<T>(list1: T[], list2: T[]): T[];
declare function intersectionWith<T>(pred: (a: T, b: T) => boolean, list1: T[], list2: T[]): T[];
declare function pathEq(path: string[], val: any, obj: any): boolean;
declare function pathEq(path: string[], val: any): (obj: any) => boolean;
declare function pathEq(path: string[]): (val: any, obj: any) => boolean;
declare function pathEq(path: string[]): (val: any) => (obj: any) => boolean;
declare function propEq<T>(name: string, val: T, obj: any): boolean;
declare function propEq<T>(name: number, val: T, obj: any): boolean;
declare function propEq<T>(name: string, val: T): (...args: any[]) => boolean;
declare function propEq<T>(name: number, val: T): (...args: any[]) => boolean;
declare function propEq<T>(name: string): (val: T, ...args: any[]) => boolean;
declare function propEq<T>(name: number): (val: T, ...args: any[]) => boolean;
declare function sortBy<T>(fn: (a: any) => string, list: T[]): T[];
declare function sortBy<T>(__: placeholder, list: T[]): T[];
declare function sortBy<T>(fn: (a: any) => string): (list: T[]) => T[];
declare function union<T>(as: T[], bs: T[]): T[];
declare function unionWith<T>(pred: (a: T, b: T) => boolean, list1: T[], list2: T[]): T[];
declare function eq<T,U>(a: T, b: U): boolean;
declare function T(): boolean;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment