type Function1 = (a: A) => R
type Function2 = (a: A, b: B) => R
type Function3 = (a: A, b: B, c: C) => R
type Predicate1 = Function1
type Predicate2 = Function2
type Predicate3 = Function3
export function add(a: number): (b: number) => number
export function add(a: number, b: number): number
export function all(p: Predicate1, as: A[]): boolean
export function all(p: Predicate1): (as: A[]) => boolean
export function always(a: A): () => A
export function and(a: boolean): (b: boolean) => boolean
export function and(a: boolean, b: boolean): boolean
export function any(p: Predicate1): (as: A[]) => boolean
export function any(p: Predicate1, as: A[]): boolean
export function append(a: string): (as: string) => string
export function append(a: string, as: string): string
export function append(a: A): (as: A[]) => A[]
export function append(a: A, as: A[]): A[]
export function apply(f: Function1): (a: A) => R
export function apply(f: Function1, a: A): R
export function apply2(f: Function2): (a: A) => (b: B) => R
export function apply2(f: Function2, a: A, b: B): R
export function apply3(f: Function3): (a: A) => (b: B) => (c: C) => R
export function apply3(f: Function3, a: A, b: B, c: C): R
export function applyMethod(k: K): (a: any) => (o: T) => T
export function applyMethod(k: K, a: any, o: T): T
export function applyMethod2(k: K): (a: any) => (b: any) => (o: T) => T
export function applyMethod2(k: K, a: any, b: any, o: T): T
export function applyMethod3(k: K): (a: any) => (b: any) => (c: any) => (o: T) => T
export function applyMethod3(k: K, a: any, b: any, c: any, o: T): T
export function applyRight(a: A): (f: Function1) => R
export function applyRight(a: A, f: Function1): R
export function array(n: number): A[]
export function between(a: number): (b: number) => (n: number) => boolean
export function between(a: number, b: number, n: number): boolean
export function branch(p: Predicate1): (f: (a: A) => B) => (g: (a: A) => B) => (a: A) => B
export function branch(p: Predicate1, f: (a: A) => B, g: (a: A) => B, a: A): B
export function cartesian(as: string): (bs: string) => [string]
export function cartesian(as: string, bs: string): [string]
export function cartesian(as: A[]): (bs: B[]) => [[A, B]]
export function cartesian(as: A[], bs: B[]): [[A, B]]
export function chunk(as: string): [string]
export function chunk(as: A[]): [[A]]
export function chunkBy(p: Predicate2): (as: string) => string
export function chunkBy(p: Predicate2, as: string): string
export function chunkBy(p: Predicate2): (as: A[]) => A[]
export function chunkBy(p: Predicate2, as: A[]): A[]
export function dec(a: number): number
export function difference(as: string): (bs: string) => string
export function difference(as: string, bs: string): string
export function difference(as: A[]): (bs: A[]) => [A]
export function difference(as: A[], bs: A[]): [A]
export function differenceBy(p: Predicate2): (as: string) => (bs: string) => string
export function differenceBy(p: Predicate2, as: string, bs: string): string
export function differenceBy(p: Predicate2): (as: A[]) => (bs: A[]) => [A]
export function differenceBy(p: Predicate2, as: A[], bs: A[]): [A]
export function div(a: number): (b: number) => number
export function div(a: number, b: number): number
export function drop(n: number): (as: string) => string
export function drop(n: number, as: string): string
export function drop(n: number): (as: A[]) => A[]
export function drop(n: number, as: A[]): A[]
export function dropWhile(p: Predicate1): (as: string) => string
export function dropWhile(p: Predicate1, as: string): string
export function dropWhile(p: Predicate1): (as: A[]) => A[]
export function dropWhile(p: Predicate1, as: A[]): A[]
export function elem(a: string): (as: string) => boolean
export function elem(a: string, as: string): boolean
export function elem(a: A): (as: A[]) => boolean
export function elem(a: A, as: A[]): boolean
export function elemIndex(a: string): (as: string) => number
export function elemIndex(a: string, as: string): number
export function elemIndex(a: A): (as: A[]) => number
export function elemIndex(a: A, as: A[]): number
export function elemIndices(a: string): (as: string) => number[]
export function elemIndices(a: string, as: string): number[]
export function elemIndices(a: A): (as: A[]) => number[]
export function elemIndices(a: A, as: A[]): number[]
export function empty(a: A[]): boolean
export function empty(a: string): boolean
export function endsWith(as: string): (bs: string) => boolean
export function endsWith(as: string, bs: string): boolean
export function endsWith(as: A[]): (bs: A[]) => boolean
export function endsWith(as: A[], bs: A[]): boolean
export function eq(a: A): (b: A) => boolean
export function eq(a: A, b: A): boolean
export function eqBy(f: Function1): (a: A) => (b: A) => boolean
export function eqBy(f: Function1, a: A, b: A): boolean
export function even(a: number): boolean
export function filter(p: Predicate1): (as: string) => string
export function filter(p: Predicate1, as: string): string
export function filter(p: Predicate1): (as: A[]) => A[]
export function filter(p: Predicate1, as: A[]): A[]
export function find(p: Predicate1): (as: string) => string
export function find(p: Predicate1, as: string): string
export function find(p: Predicate1): (as: A[]) => A
export function find(p: Predicate1, as: A[]): A
export function findIndex(p: Predicate1): (as: string) => number
export function findIndex(p: Predicate1, as: string): number
export function findIndex(p: Predicate1): (as: A[]) => number
export function findIndex(p: Predicate1, as: A[]): number
export function findIndices(p: Predicate1): (as: string) => number[]
export function findIndices(p: Predicate1, as: string): number[]
export function findIndices(p: Predicate1): (as: A[]) => number[]
export function findIndices(p: Predicate1, as: A[]): number[]
export function flip(f: Function2): Function2
export function fold(f: Function2): (init: B) => (as: string) => B[]
export function fold(f: Function2, init: B, as: string): B[]
export function fold(f: Function2): (init: B) => (as: A[]) => B[]
export function fold(f: Function2, init: B, as: A[]): B[]
export function foldRight(f: Function2): (init: B) => (as: string) => B[]
export function foldRight(f: Function2, init: B, as: string): B[]
export function foldRight(f: Function2): (init: B) => (as: A[]) => B[]
export function foldRight(f: Function2, init: B, as: A[]): B[]
export function get(k: K): (o: T) => any
export function get(k: K, o: T): any
export function gt(a: number): (b: number) => boolean
export function gt(a: number, b: number): boolean
export function gte(a: number): (b: number) => boolean
export function gte(a: number, b: number): boolean
export function groupBy(key: K, as: A[]): { [k: string]: [A] }
export function groupBy(f: Function1, as: A[]): { [k: string]: [A] }
export function has(k: K): (o: T) => boolean
export function has(k: K, o: T): boolean
export function head(a: A[]): A
export function head(a: string): string
export function id(a: A): A
export function inc(a: number): number
export function init(a: string): string
export function init(a: A[]): A
export function inits(as: string): [string]
export function inits(as: A[]): [[A]]
export function intersect(as: string): (bs: string) => string
export function intersect(as: string, bs: string): string
export function intersect(as: A[]): (bs: A[]) => [A]
export function intersect(as: A[], bs: A[]): [A]
export function intersectBy(p: Predicate2): (as: string) => (bs: string) => string
export function intersectBy(p: Predicate2, as: string, bs: string): string
export function intersectBy(p: Predicate2): (as: A[]) => (bs: A[]) => [A]
export function intersectBy(p: Predicate2, as: A[], bs: A[]): [A]
export function intersperse(a: string): (as: string) => string
export function intersperse(a: string, as: string): string
export function intersperse(a: A): (as: A[]) => A[]
export function intersperse(a: A, as: A[]): A[]
export function isInfixOf(as: string): (bs: string) => boolean
export function isInfixOf(as: string, bs: string): boolean
export function isInfixOf(as: A[]): (bs: A[]) => boolean
export function isInfixOf(as: A[], bs: A[]): boolean
export function isPrefixOf(as: string): (bs: string) => boolean
export function isPrefixOf(as: string, bs: string): boolean
export function isPrefixOf(as: A[]): (bs: A[]) => boolean
export function isPrefixOf(as: A[], bs: A[]): boolean
export function isSuffixOf(as: string): (bs: string) => boolean
export function isSuffixOf(as: string, bs: string): boolean
export function isSuffixOf(as: A[]): (bs: A[]) => boolean
export function isSuffixOf(as: A[], bs: A[]): boolean
export function keys(o: { [k: string]: any }): string[]
export function last(a: string): string
export function last(a: A[]): A
export function length(a: string): number
export function length(a: any[]): number
export function lt(a: number): (b: number) => boolean
export function lt(a: number, b: number): boolean
export function lte(a: number): (b: number) => boolean
export function lte(a: number, b: number): boolean
export function map(f: Function1): (as: string) => B[]
export function map(f: Function1, as: string): B[]
export function map(f: Function1): (as: A[]) => B[]
export function map(f: Function1, as: A[]): B[]
export function max(a: number): (b: number) => number
export function max(a: number, b: number): number
export function maximum(as: string): string
export function maximum(as: number[]): number
export function maximumBy(c: Function2): (as: string) => string
export function maximumBy(c: Function2, as: string): string
export function maximumBy(c: Function2): (as: A[]) => A[]
export function maximumBy(c: Function2, as: A[]): A[]
export function min(a: number): (b: number) => number
export function min(a: number, b: number): number
export function minimum(as: string): string
export function minimum(as: number[]): number
export function minimumBy(c: Function2): (as: string) => string
export function minimumBy(c: Function2, as: string): string
export function minimumBy(c: Function2): (as: A[]) => A[]
export function minimumBy(c: Function2, as: A[]): A[]
export function mod(a: number): (b: number) => number
export function mod(a: number, b: number): number
export function mul(a: number): (b: number) => number
export function mul(a: number, b: number): number
export function negate(a: number): number
export function neq(a: A): (b: A) => boolean
export function neq(a: A, b: A): boolean
export function not(a: boolean): boolean
export function nub(as: string): string[]
export function nub(as: A[]): A[]
export function nubBy(p: Predicate1): (as: string) => string[]
export function nubBy(p: Predicate1, as: string): string[]
export function nubBy(p: Predicate1): (as: A[]) => A[]
export function nubBy(p: Predicate1, as: A[]): A[]
export function odd(a: number): boolean
export function omit(k: K[]): (o: T) => Partial
export function omit(k: K[], o: T): Partial
export function or(a: boolean): (b: boolean) => boolean
export function or(a: boolean, b: boolean): boolean
export function pair(a: A): (b: B) => [A, B]
export function pair(a: A, b: B): [A, B]
export function pairs(o: { [k: string]: A }): [string, A][]
export function partition(p: Predicate1): (as: string) => [string]
export function partition(p: Predicate1, as: string): [string]
export function partition(p: Predicate1): (as: A[]) => [[A]]
export function partition(p: Predicate1, as: A[]): [[A]]
export function permutations(as: string): [string]
export function permutations(as: A[]): [[A]]
export function pick(ks: K[], o: T): T
export function pick(ks: K[]): (o: T) => T
export function pipe(f0: Function1): (a: A) => B
export function pipe(f0: Function1, f1: Function1): (a: A) => C
export function pipe(f0: Function1, f1: Function1, f2: Function1): (a: A) => D
export function pipe(f0: Function1, f1: Function1, f2: Function1, f3: Function1): (a: A) => E
export function pipe(f0: Function1, f1: Function1, f2: Function1, f3: Function1, f4: Function1): (a: A) => F
export function pipe(f0: Function1, f1: Function1, f2: Function1, f3: Function1, f4: Function1, f5: Function1): (a: A) => G
export function pipe(f0: Function1, f1: Function1, f2: Function1, f3: Function1, f4: Function1, f5: Function1, f6: Function1): (a: A) => H
export function pipe(f0: Function1, f1: Function1, f2: Function1, f3: Function1, f4: Function1, f5: Function1, f6: Function1, f7: Function1): (a: A) => I
export function pipe(f0: Function1, f1: Function1, f2: Function1, f3: Function1, f4: Function1, f5: Function1, f6: Function1, f7: Function1, f8: Function1): (a: A) => J
export function prepend(a: string): (as: string) => string
export function prepend(a: string, as: string): string
export function prepend(a: A): (as: A[]) => A[]
export function prepend(a: A, as: A[]): A[]
export function product(as: number[]): number
export function randomFloat(): number
export function randomInt(): number
export function range(a: number): (b: number) => number[]
export function range(a: number, b: number): number[]
export function remove(a: string): (as: string) => string
export function remove(a: string, as: string): string
export function remove(a: A): (as: A[]) => A[]
export function remove(a: A, as: A[]): A[]
export function removeBy(p: Predicate2): (a: A) => (as: string) => string
export function removeBy(p: Predicate2, a: A, as: string): string
export function removeBy(p: Predicate2): (a: A) => (as: A[]) => A[]
export function removeBy(p: Predicate2, a: A, as: A[]): A[]
export function replace(a: string): (b: string) => (as: string) => string
export function replace(a: string, b: string, as: string): string
export function replace(a: RegExp): (b: string) => (as: string) => string
export function replace(a: RegExp, b: string, as: string): string
export function replicate(n: number): (a: string) => string
export function replicate(n: number, a: string): string
export function replicate(n: number): (a: A) => A[]
export function replicate(n: number, a: A): A[]
export function reverse(a: string): string
export function reverse(a: A): A[]
export function sample(n: number): (as: string) => string
export function sample(n: number, as: string): string
export function sample(n: number): (as: A[]) => A[]
export function sample(n: number, as: A[]): A[]
export function scan(f: Function2): (init: B) => (as: string) => B[]
export function scan(f: Function2, init: B, as: string): B[]
export function scan(f: Function2): (init: B) => (as: A[]) => B[]
export function scan(f: Function2, init: B, as: A[]): B[]
export function scanRight(f: Function2): (init: B) => (as: string) => B[]
export function scanRight(f: Function2, init: B, as: string): B[]
export function scanRight(f: Function2): (init: B) => (as: A[]) => B[]
export function scanRight(f: Function2, init: B, as: A[]): B[]
export function set(k: K): (a: any) => (o: T) => T
export function set(k: K, a: any, o: T): T
export function shuffle(as: string): string
export function shuffle(as: A[]): A[]
export function sort(as: string): string
export function sort(as: A[]): A[]
export function sortBy(c: Function2): (as: string) => string
export function sortBy(c: Function2, as: string): string
export function sortBy(c: Function2): (as: A[]) => A[]
export function sortBy(c: Function2, as: A[]): A[]
export function span(p: Predicate1): (as: string) => string
export function span(p: Predicate1, as: string): string
export function span(p: Predicate1): (as: A[]) => A[]
export function span(p: Predicate1, as: A[]): A[]
export function splitAt(n: number): (as: string) => string
export function splitAt(n: number, as: string): string
export function splitAt(n: number): (as: A[]) => A[]
export function splitAt(n: number, as: A[]): A[]
export function startsWith(as: string): (bs: string) => boolean
export function startsWith(as: string, bs: string): boolean
export function startsWith(as: A[]): (bs: A[]) => boolean
export function startsWith(as: A[], bs: A[]): boolean
export function sub(a: number): (b: number) => number
export function sub(a: number, b: number): number
export function subsequences(as: string): [string]
export function subsequences(as: A[]): [[A]]
export function sum(as: number[]): number
export function surround(a: string): (b: string) => (as: string) => string
export function surround(a: string, b: string, as: string): string
export function surround(a: A): (b: A) => (as: A[]) => A[]
export function surround(a: A, b: A, as: A[]): A[]
export function tail(a: string): string
export function tail(a: A[]): A
export function tails(as: string): [string]
export function tails(as: A[]): [[A]]
export function take(n: number): (as: string) => string
export function take(n: number, as: string): string
export function take(n: number): (as: A[]) => A[]
export function take(n: number, as: A[]): A[]
export function takeWhile(p: Predicate1): (as: string) => string
export function takeWhile(p: Predicate1, as: string): string
export function takeWhile(p: Predicate1): (as: A[]) => A[]
export function takeWhile(p: Predicate1, as: A[]): A[]
export function tap(f: Function1): (a: A) => A
export function tap(f: Function1, a: A): A
export function toLower(s: string): string
export function toUpper(s: string): string
export function union(as: string): (bs: string) => string
export function union(as: string, bs: string): string
export function union(as: A[]): (bs: A[]) => [A]
export function union(as: A[], bs: A[]): [A]
export function unionBy(p: Predicate2): (as: string) => (bs: string) => string
export function unionBy(p: Predicate2, as: string, bs: string): string
export function unionBy(p: Predicate2): (as: A[]) => (bs: A[]) => [A]
export function unionBy(p: Predicate2, as: A[], bs: A[]): [A]
export function update(k: K): (f: Function1) => (o: T) => T
export function update(k: K, f: Function1, o: T): T
export function values(o: { [k: string]: A }): A[]
export function whereAll(ps: Predicate1[]): (a: A) => boolean
export function whereAll(ps: Predicate1[], a: A): boolean
export function whereAny(ps: Predicate1[]): (a: A) => boolean
export function whereAny(ps: Predicate1[], a: A): boolean
export function zip(a: string): (b: string) => string
export function zip(a: string, b: string): string
export function zip(a: A[]): (b: B[]) => [A, B][]
export function zip(a: A[], b: B[]): [A, B][]
export function zipWith(f: Function2): (a: string) => (b: string) => R[]
export function zipWith(f: Function2, a: string, b: string): R[]
export function zipWith(f: Function2): (a: A[]) => (b: B[]) => R[]
export function zipWith(f: Function2, a: A[], b: B[]): R[]