export declare type ToKeyFunction = (value: T, idx: number) => string; export interface TypedDictionary { [key: string]: T; } export declare type PartitionKey = [string, K]; export declare type ToPartitionKeyFunction = (value: T) => PartitionKey; export interface MutablePartition { readonly id: string; readonly key: K; readonly values: V[]; } export interface Partition { readonly id: string; readonly key: K; readonly values: ReadonlyArray; } export declare type PartitionMap = Readonly<{ [id: string]: MutablePartition; }>; export interface IValueWithIndex { readonly index: number; readonly value: V; } export declare type ScanTuple = [V, boolean]; export declare type ScanHandler = (record: T, index: number) => ScanTuple; export declare class ArrayStream { private values; constructor(values: ReadonlyArray); scan(start: number, delta: number, handler: ScanHandler): ArrayStream; debug(handler: (values: ReadonlyArray) => void): ArrayStream; filter(predicate: (record: T, index: number) => boolean): ArrayStream; head(limit: number): ArrayStream; sort(compareFn: (a: T, b: T) => number): ArrayStream; shuffle(): ArrayStream; unique(toKey?: ToKeyFunction): ArrayStream; reverse(): ArrayStream; group(toKey?: ToKeyFunction): ArrayStream>; partition(toPartitionKey: ToPartitionKeyFunction): PartitionMap; merge(predicate: (v0: T, v1: T) => boolean): ArrayStream; map(mapper: (record: T, index: number) => V): ArrayStream; flatMap(mapper: (currentValue: T, index: number) => ReadonlyArray): ArrayStream; withIndex(): ArrayStream>; first(): T | undefined; last(): T | undefined; collect(): ReadonlyArray; transferTo(callback: (values: ReadonlyArray) => void): void; toMap(toKey?: ToKeyFunction): TypedDictionary; toMap2(toKey: (value: T, index: number) => string, toValue: (value: T, index: number) => V): { [key: string]: V; }; } export declare function arrayStream(values: ReadonlyArray): ArrayStream; export declare namespace ArrayStreams { function create(values: ReadonlyArray): ArrayStream; function ofMapValues(values: { [key: string]: T; } | null | undefined): ArrayStream; }