import { LazyArg } from "@tsplus/stdlib/data/Function";
import { STM } from "@effect/core/stm/STM/definition/base";
/**
 * Iterates with the specified effectual function. The moral equivalent of:
 *
 * ```typescript
 * let s = initial
 *
 * while (cont(s)) {
 *   s = body(s)
 * }
 *
 * return s
 * ```
 * @tsplus static ets/STM/Ops iterate
 * @tsplus location "@effect/core/stm/STM/operations/iterate"
 */
export declare function iterate<Z>(initial: LazyArg<Z>, cont: (z: Z) => boolean): <R, E>(body: (z: Z) => import("../definition").STM<R, E, Z>) => import("../definition").STM<R, E, Z>;
//# sourceMappingURL=iterate.d.ts.map