export declare type Mapper = (a: A) => B;
export declare type Comparator = (a: A, b: A) => number;
export declare function ascending(a: T, b: T): 1 | -1 | 0;
export declare function descending(a: T, b: T): number;
export declare function comparators(...comparators: Comparator[]): Comparator;
export interface Key extends Mapper {
name: K;
}
export declare function key(name: K): Key;
export declare function value(name: K): Mapper;
export declare type Reducer = (accumulator: B, value: A) => B;
export declare function isIterable(instance: any): instance is Iterable;
export declare function isAsyncIterable(instance: any): instance is AsyncIterable;
export declare function isPromiseLike(instance: any): instance is PromiseLike;
export declare function toIterable(...t: T[]): Iterable;
export declare function iterable(values: ArrayLike): Iterable;
export declare function asyncIterable(values: Array | T> | Iterable | T>): AsyncIterable;
export declare function isArrayLike(value: any): value is ArrayLike;
export declare type IterableLike = Iterable | ArrayLike;
export declare function toAsyncIterable(promise: PromiseLike): AsyncIterable;
export declare function by(key: K, comparator?: Comparator): Comparator;
export declare function by(mapper: Mapper, comparator?: Comparator): Comparator;
export interface AsyncIterableWithReturn extends AsyncIterator {
[Symbol.asyncIterator](): AsyncIterableWithReturn;
}
export declare class AsyncIteratorHandler implements AsyncIterableWithReturn {
private handlers;
private state;
value(value: T): void;
error(value: Error): void;
close(value?: R): void;
[Symbol.asyncIterator](): AsyncIterableIterator;
next(): Promise>;
private newState;
private newHandler;
private consume;
}
export declare type Yielded = {
yielded: T;
};
export declare type Returned = {
returned: R;
};
export declare type ReturnedResult = Yielded | Returned;
export declare function isYielded(value: any): value is Yielded;
export declare function isReturned(value: any): value is Returned;
export declare function asyncReturned(iterator: AsyncIterator): AsyncIterableIterator>;
export declare function syncReturned(iterator: Iterator): IterableIterator>;