export declare namespace Iterable { function is(thing: unknown): thing is Iterable; function empty(): readonly never[]; function single(element: T): Iterable; function wrap(iterableOrElement: Iterable | T): Iterable; function from(iterable: Iterable | undefined | null): Iterable; function reverse(array: ReadonlyArray): Iterable; function isEmpty(iterable: Iterable | undefined | null): boolean; function first(iterable: Iterable): T | undefined; function some(iterable: Iterable, predicate: (t: T, i: number) => unknown): boolean; function every(iterable: Iterable, predicate: (t: T, i: number) => unknown): boolean; function find(iterable: Iterable, predicate: (t: T) => t is R): R | undefined; function find(iterable: Iterable, predicate: (t: T) => boolean): T | undefined; function filter(iterable: Iterable, predicate: (t: T) => t is R): Iterable; function filter(iterable: Iterable, predicate: (t: T) => boolean): Iterable; function map(iterable: Iterable, fn: (t: T, index: number) => R): Iterable; function flatMap(iterable: Iterable, fn: (t: T, index: number) => Iterable): Iterable; function concat(...iterables: (Iterable | T)[]): Iterable; function reduce(iterable: Iterable, reducer: (previousValue: R, currentValue: T) => R, initialValue: R): R; function length(iterable: Iterable): number; /** * Returns an iterable slice of the array, with the same semantics as `array.slice()`. */ function slice(arr: ReadonlyArray, from: number, to?: number): Iterable; /** * Consumes `atMost` elements from iterable and returns the consumed elements, * and an iterable for the rest of the elements. */ function consume(iterable: Iterable, atMost?: number): [ T[], Iterable ]; function asyncToArray(iterable: AsyncIterable): Promise; function asyncToArrayFlat(iterable: AsyncIterable): Promise; }