import type { IsomorphicIterable } from "@lou.codes/types";
/**
 * Flattens one level of the given iterable or asynchronous iterable.
 *
 * @category Asynchronous Generators
 * @example
 * ```typescript
 * flat([1, 2, [3, 4]]); // [1, 2, 3, 4]
 * ```
 * @param iterable Iterable to flatten.
 * @returns Iterable with flatten items.
 */
export declare const flat: <Iterable extends IsomorphicIterable>(
	iterable: Iterable,
) => Iterable extends IsomorphicIterable<infer Item> ?
	Readonly<
		Item extends IsomorphicIterable<infer SubItem> ?
			AsyncIterableIterator<SubItem>
		:	AsyncIterableIterator<Item>
	>
:	never;
