import { Collection, HashMap, Option } from './index.js'; export declare abstract class ArrayIterable> implements Iterable { [Symbol.iterator](): Iterator; abstract get toArray(): Array; protected abstract fromArray(array: T[]): C; foreach(job: (item: T) => U): void; contains(item: T): boolean; forall(p: (item: T) => boolean): boolean; exists(p: (item: T) => boolean): boolean; find(p: (item: T) => boolean): Option; count(p: (item: T) => boolean): number; get isEmpty(): boolean; get nonEmpty(): boolean; get size(): number; reduce(op: (i1: T, i2: T) => T): T; reduceOption(op: (i1: T, i2: T) => T): Option; get headOption(): Option; get head(): T; get lastOption(): Option; get last(): T; reduceLeft(op: (i1: T, i2: T) => T): T; reduceLeftOption(op: (i1: T, i2: T) => T): Option; foldRight(initial: B): (op: (next: T, acc: B) => B) => B; reduceRight(op: (i1: T, i2: T) => T): T; reduceRightOption(op: (i1: T, i2: T) => T): Option; foldLeft(initial: B): (op: (acc: B, next: T) => B) => B; fold(initial: B): (op: (acc: B, next: T) => B) => B; groupBy(field: (item: T) => K): HashMap>; minBy(toNumber: (item: T) => number): T; minByOption(toNumber: (item: T) => number): Option; maxBy(toNumber: (item: T) => number): T; maxByOption(toNumber: (item: T) => number): Option; partition(p: (item: T) => boolean): [C, C]; take(n: number): C; takeRight(n: number): C; takeWhile(p: (item: T) => boolean): C; drop(n: number): C; dropRight(n: number): C; dropWhile(p: (item: T) => boolean): C; sliding(length: number, step?: number): Collection; grouped(length: number): Collection; mkString(separator?: string): string; sum(elementToNum: (element: T) => number): number; filter(p: (item: T) => boolean): C; filterNot(p: (item: T) => boolean): C; splitAt(n: number): [C, C]; span(p: (item: T) => boolean): [C, C]; get init(): C; get tail(): C; groupMap(key: (item: T) => K): (value: (_: T) => B) => HashMap>; groupMapReduce(key: (_: T) => K): GroupMapReduce2; scan(z: T): (op: (acc: T, next: T) => T) => C; scanLeft(z: T): (op: (acc: T, next: T) => T) => C; scanRight(z: T): (op: (acc: T, next: T) => T) => C; get zipWithIndex(): Collection<[T, number]>; get tails(): Collection; get inits(): Collection; } export declare type GroupMapReduce3 = (reduce: (v1: B, v2: B) => B) => HashMap; export declare type GroupMapReduce2 = (f: (_: T) => B) => GroupMapReduce3;