import type { IsomorphicIterable } from "@vangware/types"; import type { ReadOnlyAsyncIterable } from "./types/ReadOnlyAsyncIterable.js"; import type { ReadOnlyAsyncIterableIterator } from "./types/ReadOnlyAsyncIterableIterator.js"; import type { ReadOnlyIterableIterator } from "./types/ReadOnlyIterableIterator.js"; /** * Appends one iterable or asynchronous iterable to another. * * @category Generators * @example * ```typescript * const appendNumbers = append([0, 1, 2, 3, 4]); * * appendNumbers(["foo", "bar"]); // ["foo", "bar", 0, 1, 2, 3, 4] * appendNumbers([]); // [0, 1, 2, 3, 4] * ``` * @param tailIterable Iterable or asynchronous to be appended. * @returns Curried generator function with `tailIterable` set in context. */ export declare const append: ( tailIterable: TailIterable, ) => ( initialIterable: InitialIterable, ) => TailIterable extends IsomorphicIterable ? InitialIterable extends IsomorphicIterable ? TailIterable extends { readonly [Symbol.asyncIterator]: () => AsyncIterator< TailItem, any, undefined >; } ? { readonly [Symbol.asyncIterator]: () => AsyncIterableIterator< TailItem | InitialItem >; readonly next: ( ...args: [] | [undefined] ) => Promise>; readonly return?: | (( value?: any, ) => Promise< IteratorResult >) | undefined; readonly throw?: | (( e?: any, ) => Promise< IteratorResult >) | undefined; } : InitialIterable extends { readonly [Symbol.asyncIterator]: () => AsyncIterator< InitialItem, any, undefined >; } ? { readonly [Symbol.asyncIterator]: () => AsyncIterableIterator< TailItem | InitialItem >; readonly next: ( ...args: [] | [undefined] ) => Promise>; readonly return?: | (( value?: any, ) => Promise< IteratorResult >) | undefined; readonly throw?: | (( e?: any, ) => Promise< IteratorResult >) | undefined; } : { readonly [Symbol.iterator]: () => IterableIterator< TailItem | InitialItem >; readonly next: ( ...args: [] | [undefined] ) => IteratorResult; readonly return?: | (( value?: any, ) => IteratorResult) | undefined; readonly throw?: | (( e?: any, ) => IteratorResult) | undefined; } : never : never;