import { LazyIterator } from './iterator.cjs';

/**
 * A lazy iterator that cycles through the source iterator.
 */
declare class LazyCycleIterator<T, TNext = undefined> extends LazyIterator<T, never, TNext> {
    source: LazyIterator<T, any, TNext>;
    protected cache: T[];
    protected currentPos: number;
    constructor(source: LazyIterator<T, any, TNext>);
    next(...args: [] | [TNext]): IteratorYieldResult<T>;
}
declare module "./iterator" {
    interface LazyIterator<T, TReturn, TNext> {
        /**
         * Creates a lazy iterator that cycles through this lazy iterator.
         */
        cycle(): LazyCycleIterator<T, TNext>;
    }
}

export { LazyCycleIterator };
