/** Is an unknown value an iterable? */ export declare const isIterable: (value: unknown) => value is Iterable; /** An iterable containing items or nested iterables of items. */ export type DeepIterable = T | Iterable>; /** Flatten one or more iterables. */ export declare function flattenItems(items: DeepIterable): Iterable; /** * Does an iterable have one or more items. * - Checks `items.size` or `items.length` first, or consumes the iterable and counts its iterations. */ export declare function hasItems(items: Iterable): boolean; /** Count the number of items in an iterable. */ export declare function countItems(items: Iterable): number; /** * Yield a range of numbers from `start` to `end` * - Yields in descending order if `end` is lower than `start` */ export declare function getRange(start: number, end: number): Iterable; /** * Apply a limit to an iterable set of items. * - Checks `items.size` or `items.length` first to see if the limit is necessary. */ export declare function limitItems(items: Iterable, limit: number): Iterable; /** Pick items from an iterable set of items. */ export declare function pickItems(items: Iterable, ...pick: T[]): Iterable; /** Omit items from an iterable set of items. */ export declare function omitItems(items: Iterable, ...omit: T[]): Iterable; /** Reduce an iterable set of items using a reducer function. */ export declare function reduceItems(items: Iterable, reducer: (previous: T, item: T) => T, initial: T): T; export declare function reduceItems(items: Iterable, reducer: (previous: T | undefined, item: T) => T, initial?: T): T | undefined; export declare function reduceItems(items: Iterable, reducer: (previous: O, item: I) => O, initial: O): O; export declare function reduceItems(items: Iterable, reducer: (previous: O | undefined, item: I) => O, initial?: O): O | undefined; /** Yield chunks of a given size. */ export declare function getChunks(items: Iterable, size: number): Iterable; /** Merge two or more iterables into a single iterable set. */ export declare function mergeItems(...inputs: [Iterable, Iterable, ...Iterable[]]): Iterable; /** Intersperse items with a separator */ export declare function interleaveItems(items: Iterable, separator: T): Iterable; export declare function interleaveItems(items: Iterable, separator: B): Iterable;