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>;