import { ForOfAwaitable } from './common';
export declare function map<A, B>(f: (x: A) => B): (xs: ForOfAwaitable<A>) => AsyncIterableIterator<B>;
export declare function tap<X>(f: (x: X) => any): (xs: ForOfAwaitable<X>) => AsyncIterableIterator<X>;
export declare const inspect: typeof tap;
export declare function forEach<X>(f: (x: X) => any): (xs: ForOfAwaitable<X>) => Promise<void>;
export declare const subscribe: typeof forEach;
export declare function reduce<X, R>(f: (acc: R, x: X) => R, init: R): (xs: ForOfAwaitable<X>) => Promise<R>;
export declare function scan<X, R>(f: (acc: R, x: X) => R, init: R): (xs: ForOfAwaitable<X>) => AsyncIterableIterator<R>;
export declare const reducutions: typeof scan;
export declare function some<X>(p: (x: X) => boolean): (xs: ForOfAwaitable<X>) => Promise<boolean>;
export declare function every<X>(p: (x: X) => boolean): (xs: ForOfAwaitable<X>) => Promise<boolean>;
export declare function filter<X>(p: (x: X) => boolean): (xs: ForOfAwaitable<X>) => AsyncIterableIterator<X>;
export declare function partition<X>(p: (x: X) => boolean): (xs: ForOfAwaitable<X>) => [AsyncIterableIterator<X>, AsyncIterableIterator<X>];
export declare function skip<X>(n: number): (xs: ForOfAwaitable<X>) => AsyncIterableIterator<X>;
export declare function take<X>(n: number): (xs: ForOfAwaitable<X>) => AsyncIterableIterator<X>;
export declare function partitionAt<X>(n: number): (xs: ForOfAwaitable<X>) => [AsyncIterableIterator<X>, AsyncIterableIterator<X>];
export declare const splitAt: typeof partitionAt;
export declare function skipWhile<X>(f: (x: X) => boolean): (xs: ForOfAwaitable<X>) => AsyncIterableIterator<X>;
export declare function takeWhile<X>(f: (x: X) => boolean): (xs: ForOfAwaitable<X>) => AsyncIterableIterator<X>;
export declare function partitionWhile<X>(f: (x: X) => boolean): (xs: ForOfAwaitable<X>) => [AsyncIterableIterator<X>, AsyncIterableIterator<X>];
export declare function find<X>(p: (x: X) => boolean): (xs: ForOfAwaitable<X>) => Promise<X>;
export declare function findIndex<X>(p: (x: X) => boolean): (xs: ForOfAwaitable<X>) => Promise<number>;
export declare function pluck<X>(key: string | number): (xs: ForOfAwaitable<Object>) => AsyncIterableIterator<X>;
export declare function select<X>(keys: Array<string | number>): (xs: ForOfAwaitable<Object>) => AsyncIterableIterator<X>;
export declare function unzip2<X, Y>(): (xs: ForOfAwaitable<[X, Y]>) => [AsyncIterableIterator<X>, AsyncIterableIterator<Y>];
export declare function unzip3<X, Y, Z>(): (xs: ForOfAwaitable<[X, Y, Z]>) => [AsyncIterableIterator<X>, AsyncIterableIterator<Y>, AsyncIterableIterator<Z>];
export declare function unzip(n?: number): (xs: ForOfAwaitable<{}[]>) => AsyncIterableIterator<{}>[];
export declare function groupBy<X, K>(f: (x: X) => K): (xs: ForOfAwaitable<X>) => Promise<Map<K, X[]>>;
export declare function groupByKey<X>(key: string | number): (xs: ForOfAwaitable<X>) => Promise<Map<string | number, X[]>>;
export declare function mapKeys<KA, KB, V>(f: (k: KA) => KB): (xs: ForOfAwaitable<[KA, V]>) => AsyncIterableIterator<[KB, V]>;
export declare function mapValues<VA, VB, K>(f: (v: VA) => VB): (xs: ForOfAwaitable<[K, VA]>) => AsyncIterableIterator<[K, VB]>;
export declare function pairwise<X>(): (xs: ForOfAwaitable<X>) => AsyncIterableIterator<[X, X]>;
export declare function length(): (xs: ForOfAwaitable<{}>) => Promise<number>;
export declare function min(): (xs: ForOfAwaitable<number>) => Promise<number>;
export declare function max(): (xs: ForOfAwaitable<number>) => Promise<number>;
export declare function minMax(): (xs: ForOfAwaitable<number>) => Promise<[number, number]>;
export declare function minBy<X>(cf: (a: X, b: X) => number): (xs: ForOfAwaitable<X>) => Promise<X>;
export declare function maxBy<X>(cf: (a: X, b: X) => number): (xs: ForOfAwaitable<X>) => Promise<X>;
export declare function minMaxBy<X>(cf: (a: X, b: X) => number): (xs: ForOfAwaitable<X>) => Promise<[X, X]>;
export declare function minByScan<X>(cf: (a: X, b: X) => number): (xs: ForOfAwaitable<X>) => AsyncIterableIterator<X>;
export declare function maxByScan<X>(cf: (a: X, b: X) => number): (xs: ForOfAwaitable<X>) => AsyncIterableIterator<X>;
export declare function sum(zero?: number): (xs: ForOfAwaitable<number>) => Promise<number>;
export declare function replaceWhen<X, Y>(pf: (x: X) => boolean, ys: ForOfAwaitable<Y>): (xs: ForOfAwaitable<X>) => AsyncIterableIterator<X | Y>;
export declare function grouped<X>(n: number, step?: number): (xs: ForOfAwaitable<X>) => AsyncIterableIterator<X[]>;
export declare function startWith<X>(...as: X[]): (xs: ForOfAwaitable<X>) => AsyncIterableIterator<X>;
export declare function endWith<X>(...zs: X[]): (xs: ForOfAwaitable<X>) => AsyncIterableIterator<X>;
export declare function sort<X>(cf: (a: X, b: X) => number): (xs: ForOfAwaitable<X>) => AsyncIterableIterator<X>;
export declare function sortScan<X>(cf: (a: X, b: X) => number): (xs: ForOfAwaitable<X>) => AsyncIterableIterator<X[]>;
export declare function flatMap<A, B>(f: (x: A) => B): (xss: ForOfAwaitable<ForOfAwaitable<A>>) => AsyncIterableIterator<B>;
export declare function distinctUntilChanged<X>(comp?: (a: X, b: X) => boolean): (xs: ForOfAwaitable<X>) => AsyncIterableIterator<X>;
export declare function unique<X>(comp?: (a: X, b: X) => boolean): (xs: ForOfAwaitable<X>) => AsyncIterableIterator<X>;
export declare function uniqueSorted<X>(comp?: (a: X, b: X) => boolean): (xs: ForOfAwaitable<X>) => AsyncIterableIterator<X>;
export declare function range(start?: number, end?: number, step?: number): AsyncIterableIterator<number>;
export declare function enumerate<X>(xs: ForOfAwaitable<X>): AsyncIterableIterator<[number, X]>;
export declare function concat<X>(...xss: ForOfAwaitable<X>[]): AsyncIterableIterator<X>;
export declare const chain: typeof concat;
export declare function zip2<X, Y>(xs: ForOfAwaitable<X>, ys: ForOfAwaitable<Y>): AsyncIterableIterator<[X, Y]>;
export declare function zip3<X, Y, Z>(xs: ForOfAwaitable<X>, ys: ForOfAwaitable<Y>, zs: ForOfAwaitable<Z>): AsyncIterableIterator<[X, Y, Z]>;
export declare function zip(...xss: ForOfAwaitable<{}>[]): AsyncIterableIterator<{}[]>;
export declare function zipOuter(...xss: ForOfAwaitable<{}>[]): AsyncIterableIterator<{}[]>;
export declare function product2<A, B>(as: ForOfAwaitable<A>, bs: ForOfAwaitable<B>): AsyncIterableIterator<[A, B]>;
export declare function product3<A, B, C>(as: ForOfAwaitable<A>, bs: ForOfAwaitable<B>, cs: ForOfAwaitable<C>): AsyncIterableIterator<[A, B, C]>;
export declare function product(xs: ForOfAwaitable<{}>, ...xss: ForOfAwaitable<{}>[]): AsyncIterableIterator<{}[]>;
export declare function combinations2<X>(xs: ForOfAwaitable<X>): AsyncIterableIterator<[X, X]>;
export declare function combinations3<X>(xs: ForOfAwaitable<X>): AsyncIterableIterator<[X, X, X]>;
export declare function combinations(xs: ForOfAwaitable<{}>, r?: number): AsyncIterableIterator<{}[]>;
export declare function combinationsWithReplacement2<X>(xs: ForOfAwaitable<X>): AsyncIterableIterator<[X, X]>;
export declare function combinationsWithReplacement3<X>(xs: ForOfAwaitable<X>): AsyncIterableIterator<[X, X, X]>;
export declare function combinationsWithReplacement(xs: ForOfAwaitable<{}>, r?: number): AsyncIterableIterator<{}[]>;
export declare function permutations2<X>(xs: ForOfAwaitable<X>): AsyncIterableIterator<[X, X]>;
export declare function permutations3<X>(xs: ForOfAwaitable<X>): AsyncIterableIterator<[X, X, X]>;
export declare function permutations(xs: ForOfAwaitable<{}>, r?: number): AsyncIterableIterator<{}[]>;
export declare function constantly<X>(value: X): AsyncIterableIterator<X>;
export declare function cycle<X>(xs: ForOfAwaitable<X>): AsyncIterableIterator<X>;
export declare function repeat<X>(xs: ForOfAwaitable<X>, n: number): AsyncIterableIterator<X>;
export declare function interleave2<X, Y>(xs: ForOfAwaitable<X>, ys: ForOfAwaitable<Y>): AsyncIterableIterator<X | Y>;
export declare function interleave3<X, Y, Z>(xs: ForOfAwaitable<X>, ys: ForOfAwaitable<Y>, zs: ForOfAwaitable<Z>): AsyncIterableIterator<X | Y | Z>;
export declare function interleave(...xss: ForOfAwaitable<{}>[]): AsyncIterableIterator<{}>;
export declare function pipe<T1>(x: T1): Promise<T1>;
export declare function pipe<T1, T2>(x: T1, f1: (x: T1) => T2): Promise<T2>;
export declare function pipe<T1, T2, T3>(x: T1, f1: (x: T1) => T2, f2: (x: T2) => T3): Promise<T3>;
export declare function pipe<T1, T2, T3, T4>(x: T1, f1: (x: T1) => T2, f2: (x: T2) => T3, f3: (x: T3) => T4): Promise<T4>;
export declare function pipe<T1, T2, T3, T4, T5>(x: T1, f1: (x: T1) => T2, f2: (x: T2) => T3, f3: (x: T3) => T4, f4: (x: T4) => T5): Promise<T5>;
export declare function pipe<T1, T2, T3, T4, T5, T6>(x: T1, f1: (x: T1) => T2, f2: (x: T2) => T3, f3: (x: T3) => T4, f4: (x: T4) => T5, f5: (x: T5) => T6): Promise<T6>;
export declare function pipe<T1, T2, T3, T4, T5, T6, T7>(x: T1, f1: (x: T1) => T2, f2: (x: T2) => T3, f3: (x: T3) => T4, f4: (x: T4) => T5, f5: (x: T5) => T6, f6: (x: T6) => T7): Promise<T7>;
export declare function pipe<T1, T2, T3, T4, T5, T6, T7, T8>(x: T1, f1: (x: T1) => T2, f2: (x: T2) => T3, f3: (x: T3) => T4, f4: (x: T4) => T5, f5: (x: T5) => T6, f6: (x: T6) => T7, f7: (x: T7) => T8): Promise<T8>;
export declare function pipe<T1, T2, T3, T4, T5, T6, T7, T8, T9>(x: T1, f1: (x: T1) => T2, f2: (x: T2) => T3, f3: (x: T3) => T4, f4: (x: T4) => T5, f5: (x: T5) => T6, f6: (x: T6) => T7, f7: (x: T7) => T8, f8: (x: T8) => T9): Promise<T9>;
export declare function pipe<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>(x: T1, f1: (x: T1) => T2, f2: (x: T2) => T3, f3: (x: T3) => T4, f4: (x: T4) => T5, f5: (x: T5) => T6, f6: (x: T6) => T7, f7: (x: T7) => T8, f8: (x: T8) => T9, f9: (x: T9) => T10): Promise<T10>;
export declare function pipe<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11>(x: T1, f1: (x: T1) => T2, f2: (x: T2) => T3, f3: (x: T3) => T4, f4: (x: T4) => T5, f5: (x: T5) => T6, f6: (x: T6) => T7, f7: (x: T7) => T8, f8: (x: T8) => T9, f9: (x: T9) => T10, f10: (x: T10) => T11): Promise<T11>;
export declare function pipe<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12>(x: T1, f1: (x: T1) => T2, f2: (x: T2) => T3, f3: (x: T3) => T4, f4: (x: T4) => T5, f5: (x: T5) => T6, f6: (x: T6) => T7, f7: (x: T7) => T8, f8: (x: T8) => T9, f9: (x: T9) => T10, f10: (x: T10) => T11, f11: (x: T11) => T12): Promise<T12>;
