import { Result } from '../classes/Result'; export declare const ITERATOR_EXHAUSTED: unique symbol; export type SyncGenerator = () => I | Result; export type SyncStepper = (previous: I) => I | Result; export type SyncIterator = (input: I) => O | Result; export type SyncValidator = (output: O) => boolean | Result; export declare function iterateSync( genfn: SyncGenerator, iterator: SyncIterator, validator: SyncValidator ): Result; export declare function iterateSync( iterable: Iterable, iterator: SyncIterator, validator: SyncValidator ): Result; export declare function iterateSync( init: SyncGenerator, step: SyncStepper, iterator: SyncIterator, validator: SyncValidator ): Result; export declare function iterateSyncIterableWrapper( iterable: Iterable, iterator: SyncIterator, validator: SyncValidator ): Result; export declare function iterateSyncResultWrapper( init: SyncGenerator, step: SyncStepper, iterator: SyncIterator, validator?: SyncValidator ): Result; export declare function iterateSyncImpl( init: SyncGenerator, step: SyncStepper, iterator: SyncIterator, validator?: SyncValidator ): O;