import { AsyncWrappable, AsyncIteratorResult, AsyncNonIterableIterator } from '../../types/async-iterable'; export interface AsyncPeekeratorIterator { next(): AsyncIteratorResult; return(): AsyncIteratorResult; [Symbol.asyncIterator](): AsyncNonIterableIterator; } interface AsyncPeekeratorBase { readonly index: number; advance(): Promise>; return(): Promise>; asIterator(): AsyncPeekeratorIterator; } interface AsyncDonePeekerator extends AsyncPeekeratorBase { readonly current: { done: true; value: undefined; }; readonly done: true; readonly value: undefined; } interface AsyncValuePeekerator extends AsyncPeekeratorBase { readonly current: { done: false; value: T; }; readonly done: false; readonly value: T; } export type AsyncPeekerator = AsyncDonePeekerator | AsyncValuePeekerator; declare function asyncPeekerate(source: AsyncWrappable): Promise>; export { asyncPeekerate };