import type { IsomorphicIterable } from "@vangware/types"; /** * Prepends one iterable or asynchronous iterable to another. * * @category Generators * @example * ```typescript * const prependNumbers = prepend([0, 1, 2, 3, 4]); * prependNumbers(["foo", "bar"]); // [0, 1, 2, 3, 4, "foo", "bar"] * ``` * @param initialIterable Iterable to be appended. * @returns Curried generator function with `initialIterable` set in context. */ export declare const prepend: ( initialIterable: InitialIterable, ) => ( tailIterable: TailIterable, ) => 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;