declare module 'ramda' { function always(val: T): (...args: any[]) => T; function any(fn: (item: T) => boolean, list: T[]): boolean; function any(fn: (item: T) => boolean): (list: T[]) => boolean; function assoc(prop: string, val: any, obj: T): T; function assoc(prop: string, val: any): (obj: T) => T; function clone(value: T): T; function concat(list1: T[], list2: T[]): T[]; function concat(list1: T[]): (list2: T[]) => T[]; function contains(a: T, list: T[]): boolean; function filter(fn: (item: T) => boolean, list: T[]): T[]; function filter(fn: (item: T) => boolean): (list: T[]) => T[]; function find(fn: (item: T) => boolean, list: T[]): T; function find(fn: (item: T) => boolean): (list: T[]) => T; function forEach(fn: (item: T) => void, list: T[]): T[]; function forEach(fn: (item: T) => void): (list: T[]) => T[]; function groupBy(fn: (item: T) => string, list: T[]): {[s: string]: T[]}; function groupBy(fn: (item: T) => string): (list: T[]) => {[s: string]: T[]}; function has(prop: string, obj: {[s: string]: any}): boolean; function has(prop: string): (obj: {[s: string]: any}) => boolean; function identity(x: T): T; function is(ctor: Function, val: any): boolean; function is(ctor: Function): (val: any) => boolean; function join(separator: string, xs: string[]): string; function join(separator: string): (xs: string[]) => string; function keys(obj: Object): string[]; function last(list: T[]): T; function match(rx: RegExp, str: string): RegExpMatchArray; function match(rx: RegExp): (str: string) => RegExpMatchArray; function map(fn: (item: T) => U, list: T[]): U[]; function map(fn: (item: T) => U): (list: T[]) => U[]; function mapObj(fn: (item: T) => U, obj: {[s: string]: T}): {[s: string]: U}; function mapObj(fn: (item: T) => U): (obj: {[s: string]: T}) => {[s: string]: U}; function nth(index: number, list: T[]): T; function nth(index: number): (list: T[]) => T; function partial(fn: (a: A) => Z, a: A): () => Z; function partial(fn: (a: A, b: B) => Z, a: A): (b: B) => Z; function partial(fn: (a: A, b: B) => Z, a: A, b: B): () => Z; function partial(fn: (a: A, b: B, c: C) => Z, a: A): (b: B, c: C) => Z; function partial(fn: (a: A, b: B, c: C) => Z, a: A, b: B): (c: C) => Z; function partial(fn: (a: A, b: B, c: C) => Z, a: A, b: B, c: C): () => Z; function prop(name: string, obj: {[s: string]: T}): T; function prop(name: string): (obj: {[s: string]: T}) => T; function props(ps: string[], obj: {[s: string]: T}): T[]; function props(ps: string[]): (obj: {[s: string]: T}) => T[]; function propEq(name: string, val: T, obj: {[s: string]: T}): boolean; function propEq(name: string, val: T): (obj: {[s: string]: T}) => boolean; function propEq(index: number, val: T, list: T[]): boolean; function propEq(index: number, val: T): (list: T[]) => boolean; function reduce(fn: (acc: T, value: U) => T, acc: T, list: U[]): T; function reduce(fn: (acc: T, value: U) => T, acc: T): (list: U[]) => T; function reduce(fn: (acc: T, value: U) => T): (acc: T, list: U[]) => T; function reject(fn: (item: T) => boolean, list: T[]): T[]; function reject(fn: (item: T) => boolean): (list: T[]) => T[]; function reverse(list: T[]): T[]; function sortBy(fn: (item: T) => string, list: T[]): T[]; function sortBy(fn: (item: T) => string): (list: T[]) => T[]; function split(sep: string | RegExp, str: string): string[]; function split(sep: string | RegExp): (str: string) => string[]; function take(n: number, list: T[]): T[]; function take(n: number): (list: T[]) => T[]; function times(fn: (i: number) => T, n: number): T[]; function times(fn: (i: number) => T): (n: number) => T[]; function trim(str: string): string; function values(obj: {[s: string]: T}): T[]; function zipObj(keys: string[], values: T[]): {[s: string]: T}; function zipObj(keys: string[]): (values: T[]) => {[s: string]: T}; function F(): boolean; function T(): boolean; }