import { AsyncSequence } from "./AsyncSequence"; import { Sequence } from "./Sequence"; export { Sequence, Sequence as default } from "./Sequence"; export { AsyncSequence } from "./AsyncSequence"; export { default as Comparator } from "./Comparator"; export { default as ComparatorFactory } from "./ComparatorFactory"; export { default as IndexedValue } from "./IndexedValue"; export { JoinConfig as JoinToStringConfig } from "./operators/sync/joinToString"; export { JoinConfig as AsyncJoinToStringConfig } from "./operators/async/joinToString"; /** * Create sequence of multiple arguments of an array of arguments * @param {...T} args Arguments * @returns Sequence * @example * // Sequence * sequenceOf(1, 2, 3); * // Sequence * sequenceOf([1, 2, 3]); */ export declare function sequenceOf(...args: T[]): Sequence; /** * Create async sequence of multiple arguments of an array of arguments * @param {...T} args Arguments * @returns AsyncSequence * @example * asyncSequenceOf(1, 2, 3); // AsyncSequence * asyncSequenceOf([1, 2, 3]); // AsyncSequence */ export declare function asyncSequenceOf(...args: T[]): AsyncSequence; /** * Create empty sequence * @returns Sequence */ export declare function emptySequence(): Sequence; /** * Create empty async sequence * @returns AsyncSequence */ export declare function emptyAsyncSequence(): AsyncSequence; /** * Create sequence for iterable object / generator * @param {Iterable} iterable Iterable object / generator * @returns Sequence * @example * // Sequence => 1, 2, 3 * asSequence([1, 2, 3]); * // Sequence => 1, 2, 3 * asSequence(new Set([1, 2, 3])); * // Sequence<[string, number]> => ["a", 1], ["b", 2], ["c", 3] * asSequence(new Map([["a", 1], ["b", 2], ["c", 3]])); * // Sequence => "a", "b", "c" * asSequence("abc"); * // Sequence => 0, 1, 2, 3, ... * asSequence((function* () { * let i = 0; * while (true) { * yield i++; * } * })()); */ export declare function asSequence(iterable: Iterable): Sequence; /** * Create async sequence for iterable object / generator * @param {Iterable | AsyncIterable} iterable Iterable object / generator * @returns AsyncSequence * @example * // AsyncSequence => 1, 2, 3 * asAsyncSequence([1, 2, 3]); * // AsyncSequence => 1, 2, 3 * asAsyncSequence(new Set([1, 2, 3])); * // AsyncSequence<[string, number]> => ["a", 1], ["b", 2], ["c", 3] * asAsyncSequence(new Map([["a", 1], ["b", 2], ["c", 3]])); * // AsyncSequence => "a", "b", "c" * asAsyncSequence("abc"); * // AsyncSequence => 0, 1, 2, 3, ... * asAsyncSequence((async function* () { * let i = 0; * while (true) { * yield i++; * } * })()); */ export declare function asAsyncSequence(iterable: Iterable | AsyncIterable): AsyncSequence; /** * Create sequence for iterator * @param {Iterator} iterator Iterator * @returns Sequence * @example * // Sequence * createSequence({ * next(value) { * return {done: true, value: null}; * } * }); */ export declare function createSequence(iterator: Iterator): Sequence; /** * Create async sequence for async iterator * @param {AsyncIterator} iterator AsyncIterator * @returns AsyncSequence * @example * // Sequence * createAsyncSequence({ * async next(value) { * return {done: true, value: null}; * } * }); */ export declare function createAsyncSequence(iterator: AsyncIterator): AsyncSequence; /** * Check if an object is a sequence * @param {unknown} object Object of interest * @returns Whether it is or not */ export declare function isSequence(object: unknown): object is Sequence; /** * Check if an object is an async sequence * @param {unknown} object Object of interest * @returns Whether it is or not */ export declare function isAsyncSequence(object: unknown): object is AsyncSequence; /** * Extend the basic sequence implementation * @param {{new(): any}} mixin Mixin operators */ export declare function extendSequence(mixin: { new (): any; }): void; /** * Extend the basic async sequence implementation * @param {{new(): any}} mixin Mixin operators */ export declare function extendAsyncSequence(mixin: { new (): any; }): void; /** * Generate a sequence * @param nextFunction Function to generate next value with (null/undefined to end sequence) * @example * // Sequence => 0, 1, ..., 8, 9 * let i = 0; * generateSequence(() => count < 10 ? count++ : null); */ export declare function generateSequence(nextFunction: () => T | null | undefined): Sequence; /** * Generate a sequence * @param seedFunction Function to generate initial value with (seed) * @param nextFunction Function to generate next value with (null/undefined to end sequence) * @example * // Sequence => 0, 1, ..., 8, 9 * generateSequence(() => 0, value => value < 10 ? value + 1 : null); */ export declare function generateSequence(seedFunction: () => T | null | undefined, nextFunction: (item: T) => T | null | undefined): Sequence; /** * Generate a sequence * @param seed Initial value (seed) * @param nextFunction Function to generate next value with (null/undefined to end sequence) * @example * // Sequence => 0, 1, ..., 8, 9 * generateSequence(0, value => value < 10 ? value + 1 : null); */ export declare function generateSequence(seed: T | null | undefined, nextFunction: (item: T) => T | null | undefined): Sequence; /** * Generate sequence from range * @param start Range start * @param endInclusive Range end (inclusive) * @param step Step size * @returns Sequence * @example * // Sequence => 0, 1, 2, 3, 4 * range(0, 4); * // Sequence => 0, 0.5, 1, ..., 3.5, 4 * range(0, 4, 0.5); */ export declare function range(start: number, endInclusive: number, step?: number): Sequence; /** * Creates a tuple from the given arguments, preserving tuple types for better type inference. * Useful when working with sequences that need to maintain tuple types, especially when using `toMap`. * * @param {...T} args Arguments to create a tuple from * @returns Tuple of the arguments * @example * // Preserves tuple type [string, number] instead of (string | number)[] * const result = sequenceOf(["a", 1], ["b", 2]) * .mapNotNull(([key, value]) => value > 0 ? tuple(key, value) : null) * .toMap(); * // result: Map */ export declare const tuple: (...args: T) => T;