export type AsyncLoopable = AsyncIterable> | Iterable>; export type AsyncWrappable = null | undefined | AsyncLoopable; type _AsyncIterable = AsyncIterable; export { _AsyncIterable as AsyncIterable }; export type AsyncIteratorResult = Promise>; export interface AsyncIterator { next(value?: any): AsyncIteratorResult; return(value?: any): AsyncIteratorResult; throw(e?: any): AsyncIteratorResult; } export interface NonIterableAsyncIterator extends AsyncIterator { [Symbol.asyncIterator]: never; } export type AsyncNonIterableIterator = NonIterableAsyncIterator; export interface SingletonAsyncIterableIterator extends AsyncIterator { [Symbol.asyncIterator](): NonIterableAsyncIterator; } export type AsyncSingletonIterableIterator = SingletonAsyncIterableIterator; export interface AsyncIterableIterator extends AsyncIterator { [Symbol.asyncIterator](): SingletonAsyncIterableIterator; } export type AsyncPartsIterable = AsyncIterableIterator>; export type MaybePromise = Promise | T;