export declare function iterable(createIterator: () => Iterator): Iterable; export interface ObjectAsMap { readonly [key: string]: T; } export declare function map(input: Iterable, func: (v: I, i: number) => T): Iterable; export declare function flatten(input: Iterable>): Iterable; export declare function flatMap(input: Iterable, func: (v: I, i: number) => Iterable): Iterable; export declare function values(input: ObjectAsMap): Iterable; export declare function entries(input: ObjectAsMap): Iterable<[string, T]>; export declare function nameValue(name: string, value: T): [string, T]; export declare function getName(nameValue: [string, T]): string; export declare function getValue(nameValue: [string, T]): T; export declare function generate(func: (i: number) => T, count?: number): Iterable; export declare function repeat(v: T, count?: number): Iterable; export declare function groupBy(input: Iterable<[string, T]>, reduce: (a: T, b: T) => T): ObjectAsMap; export declare function reduce(input: Iterable, func: (a: T, b: T) => T, init: T): T; export declare function reduce(input: Iterable, func: (a: T, b: T) => T): T | undefined; export declare function sum(input: Iterable): number; export declare function min(input: Iterable): number; export declare function max(input: Iterable): number; export declare function zip(...inputs: Iterable[]): Iterable; export declare function toObject(input: Iterable<[string, T]>): ObjectAsMap;