import { Wrappable, IteratorResult, NonIterableIterator } from '../../types/iterable'; export interface PeekeratorIterator { next(): IteratorResult; return(): IteratorResult; [Symbol.iterator](): NonIterableIterator; } interface PeekeratorBase { readonly index: number; advance(): Peekerator; return(): Peekerator; asIterator(): PeekeratorIterator; } interface DonePeekerator extends PeekeratorBase { readonly current: { done: true; value: undefined; }; readonly done: true; readonly value: undefined; } interface ValuePeekerator extends PeekeratorBase { readonly current: { done: false; value: T; }; readonly done: false; readonly value: T; } export type Peekerator = DonePeekerator | ValuePeekerator; declare function peekerate(source: Wrappable): Peekerator; export { peekerate };