export declare type PrimitiveArray = ReadonlyArray; export declare type ToArrayLike = ReadonlyArray | { [key: string]: T; } | { [key: number]: T; } | undefined | null; interface IArrayLike { [key: number]: T; readonly length: number; } interface GroupedDict { [key: string]: ReadonlyArray; } export interface IndexedValue { readonly index: number; readonly value: V; } export declare namespace Arrays { function toIndexed(values: ReadonlyArray): ReadonlyArray>; function groupBy(values: ReadonlyArray, toKey: (value: V) => string): GroupedDict; function toArray(value: ToArrayLike): ReadonlyArray; function onlyDefined(values: ReadonlyArray): ReadonlyArray; function first(values: ReadonlyArray): T | undefined; function last(values: ReadonlyArray): T | undefined; function sample(values: T[], count: number): T[]; function toDict(val: {} | any[]): { [key: string]: any; }; function createBatches(input: ReadonlyArray, batchSize: number): T[][]; function asyncForEach(items: T[], callback: AsyncCallback): Promise; function shuffle(...input: T[]): T[]; function head(input: ReadonlyArray, limit: number): T[]; function hasAny(list: ReadonlyArray, items: ReadonlyArray): boolean; function equal(a: PrimitiveArray, b: PrimitiveArray): boolean; function prevSibling(arr: IArrayLike, index: number): T | undefined; function nextSibling(arr: IArrayLike, index: number): T | undefined; } export declare type AsyncCallback = (current: T) => Promise; export declare type SparseArray = ReadonlyArray; export declare namespace SparseArrays { function presentOnly(values: SparseArray): ReadonlyArray; } export declare function asArray(arr: ReadonlyArray | undefined | null): ReadonlyArray; export {};