import { Wrappable, IteratorResult, NonIterableIterator } from '../../types/iterable'; export interface ForkeratorIterator { next(): IteratorResult; return(): IteratorResult; [Symbol.iterator](): NonIterableIterator; } interface ForkeratorBase { readonly index: number; advance(n?: number): Forkerator; return(): Forkerator; fork(): ForkeratorIterator; asIterator(): ForkeratorIterator; [Symbol.iterator](): ForkeratorIterator; } interface DoneForkerator extends ForkeratorBase { readonly current: { done: true; value: undefined; }; readonly done: true; readonly value: undefined; } interface ValueForkerator extends ForkeratorBase { readonly current: { done: false; value: T; }; readonly done: false; readonly value: T; } export type Forkerator = DoneForkerator | ValueForkerator; declare function forkerate(source: Wrappable): Forkerator; export { forkerate };