import { Mappable } from './mappable.js'; import { HashMap, HashSet, Option } from './index.js'; import { Filterable } from './util.js'; import { ArrayIterable } from './array-iterable.js'; export declare abstract class ArrayBackedCollection> extends ArrayIterable { protected abstract readonly items: T[]; protected checkWithinBounds(lo: number, hi: number): void; get reverse(): C; get toArray(): T[]; get(index: number): T; get toSet(): HashSet; indexOf(item: T): number; get distinct(): C; distinctBy(key: (item: T) => string | number): C; appended(item: T): C; appendedAll(other: Iterable): C; prepended(item: T): C; prependedAll(other: Iterable): C; concat(other: Iterable): C; slice(from: number, until: number): C; sort(param: (a: T, b: T) => number): C; sortBy(fieldToNumber: (a: T) => number): C; get length(): number; } export declare class Collection extends ArrayBackedCollection> implements Mappable, Filterable> { protected readonly items: T[]; constructor(items: T[]); static empty: Collection; protected fromArray(array: T[]): Collection; static of(...items: T[]): Collection; static from(elements: Iterable): Collection; static fill(len: number): (elem: (idx: number) => A) => Collection; map(f: (item: T) => B): Collection; flatMap(f: (item: T) => Collection): Collection; flatMapOption(f: (item: T) => Option): Collection; mapPromise(f: (v: T) => Promise): Promise>; mapPromiseAll(f: (v: T) => Promise): Promise>; flatMapPromise(f: (item: T) => Promise>): Promise>; flatMapPromiseAll(f: (v: T) => Promise>): Promise>; flatten(): Collection; get toBuffer(): ArrayBuffer; toMap(mapper: (item: T) => [K, V]): HashMap; zip(that: Collection): Collection<[T, B]>; zipAll(that: Collection, thisElem: T, thatElem: B): Collection<[T, B]>; } export declare const Nil: Collection; export declare class ArrayBuffer extends ArrayBackedCollection> implements Mappable, Filterable> { protected readonly items: T[]; static get empty(): ArrayBuffer; constructor(items?: T[]); static of(...elements: T[]): ArrayBuffer; static from(elements: Iterable): ArrayBuffer; static fill(len: number): (elem: (idx: number) => A) => ArrayBuffer; protected fromArray(array: T[]): ArrayBuffer; private normalized; update(index: number, element: T): void; set(index: number, element: T): void; clear(): void; append(element: T): this; appendAll(elements: Iterable): this; prepend(element: T): this; prependAll(elements: Iterable): this; insert(idx: number, element: T): void; insertAll(idx: number, elements: Iterable): void; remove(index: number, count?: number): void; subtractOne(element: T): this; subtractAll(elements: Iterable): this; sort(compareFn?: (a: T, b: T) => number): this; filterInPlace(p: (element: T) => boolean): this; dropInPlace(n: number): this; dropRightInPlace(n: number): this; takeInPlace(n: number): this; takeRightInPlace(n: number): this; sliceInPlace(start: number, end: number): this; get toCollection(): Collection; flatMap(f: (item: T) => ArrayBuffer): ArrayBuffer; flatMapOption(f: (item: T) => Option): ArrayBuffer; flatMapPromise(f: (item: T) => Promise>): Promise>; map(f: (item: T) => B): ArrayBuffer; mapPromise(f: (v: T) => Promise): Promise>; mapPromiseAll(f: (v: T) => Promise): Promise>; flatMapPromiseAll(f: (v: T) => Promise>): Promise>; flatten(): ArrayBuffer; toMap(mapper: (item: T) => [K, V]): HashMap; }