import { type Nullable } from './types.js'; export type Mapping = (src: S) => T; export type Predicate = (src: S) => V; export type Flat = T extends Iterable ? A : T; /** * Picks the last element of an iterable * @returns undefined for null/empty iterable */ export declare function last(iterable: Nullable>): T | undefined; /** * Picks the first element of an iterable * @returns undefined for null/empty iterable */ export declare function first(iterable: Nullable>): T | undefined; /** * Checks if an iterable is empty */ export declare function isEmpty(iterable: Iterable): boolean; /** * Evaluate the size of an iterable * @returns elements count of iterable, 0 if null */ export declare function size(iterable: Nullable>): number; /** * Finds element by index, including negative index * @see Array.at * @returns undefined if invalid index or null iterable */ export declare function at(iterable: Nullable>, index: number): T | undefined; /** * Find the element following an item * @returns undefined if item is last or not found */ export declare function next(iterable: Nullable>, item: T): T | undefined; /** * Find the element before an item * @returns undefined if item is first or not found */ export declare function prev(iterable: Nullable>, item: T): T | undefined; /** * Creates iterable of unique elements * @param by - an element identifier (hash) function */ export declare function unique(iterable: Nullable>, by?: Predicate): Iterable; /** * Map iterable elements * @see Array.map */ export declare function map(iterable: Nullable>, mapFn: Mapping): Iterable; /** * @see Array.flatMap * @returns a mapped, flattened iterables */ export declare function flatMap(iterable: Nullable>, mapFn: Mapping>): Iterable>; /** * @see Array.filter */ export declare function filter(iterable: Nullable>, predicate: Predicate): Iterable; /** * @see Array.concat * @returns a concatenated iterable */ export declare function concat(...iterables: Nullable>[]): Iterable; /** * @see Array.forEach */ export declare function forEach(iterable: Nullable>, fn: Mapping): void; /** * @see Array.find * @returns the first element the satisfies the predicate */ export declare function find(iterable: Nullable>, predicate: Predicate): T | undefined; /** * @see Array.includes * @returns item is an element of iterable */ export declare function includes(iterable: Nullable>, item: T): boolean; /** * @see Array.some * @returns there is an element satisfies the predicate */ export declare function some(iterable: Nullable>, predicate: Predicate): boolean; /** * @see Array.every * @returns true is all elements satisfy the predicate */ export declare function every(iterable: Iterable, predicate: Predicate): boolean; /** * @see Array.flat * @param deep - if true, repeat the flattening until all elements are not iterable * @returns a flattened iterable, * where elements that are iterable are spread into the result */ export declare function flat(iterable: Nullable>>, deep?: boolean): Iterable>; /** * Calculate a histogram of iterable elements * @returns an histogram map (element=\>count) */ export declare function histogram(iterable: Iterable): Map; /** * @returns true if x is iterable */ export declare function isIterable(x: any): x is Iterable; /** * @see Array.sort * @param by - comparator, returns a negative value if a should precede b */ export declare function sort(iterable: Nullable>, by?: (a: T, b: T) => number): Iterable; /** * @see Array.reduce * @returns reduced object */ export declare function reduce(iterable: Nullable>, reducer: (acc: A, item: T) => A, initial: A): A; /** * @see Array.join */ export declare function join(iterable: Nullable>, separator: string): string; /** * Skips the first elements of an iterable */ export declare function skip(iterable: Nullable>, count: number): Iterable; /** * Groups elements by the value of a property * @returns A map of the value to an array of elements */ export declare function groupBy(elements: Iterable, property: K): Map; //# sourceMappingURL=iterables.d.ts.map