type _Iterable = Iterable; export { _Iterable as Iterable }; export type Loopable = Iterable; export type Wrappable = Loopable | null | undefined; type _IteratorResult = IteratorResult; export { _IteratorResult as IteratorResult }; interface Iterator { next(value?: any): IteratorResult; return(value?: any): IteratorResult; throw(e?: any): IteratorResult; } export interface NonIterableIterator extends Iterator { [Symbol.iterator]: never; } export interface SingletonIterableIterator extends Iterator { [Symbol.iterator](): NonIterableIterator; } export interface IterableIterator extends Iterator { [Symbol.iterator](): SingletonIterableIterator; } export type PartsIterable = IterableIterator>;