import { LazyArg } from "@tsplus/stdlib/data/Function";
import { Effect } from "@effect/core/io/Effect/definition";
import { Chunk } from "@tsplus/stdlib/collections/Chunk/definition";
import { ListBuffer } from "@tsplus/stdlib/collections/mutable/ListBuffer";
/**
 * Loops with the specified effectual function, collecting the results into a
 * list. The moral equivalent of:
 *
 * ```typescript
 * let s  = initial
 * let as = [] as readonly A[]
 *
 * while (cont(s)) {
 *   as = [body(s), ...as]
 *   s  = inc(s)
 * }
 *
 * A.reverse(as)
 * ```
 * @tsplus static ets/Effect/Ops loop
 * @tsplus location "@effect/core/io/Effect/operations/loop"
 */
export declare function loop<Z>(initial: LazyArg<Z>, cont: (z: Z) => boolean, inc: (z: Z) => Z): <R, E, A>(body: (z: Z) => import("../definition").Effect<R, E, A>, __tsplusTrace?: string) => import("../definition").Effect<R, E, import("@tsplus/stdlib/collections/Chunk").Chunk<A>>;
//# sourceMappingURL=loop.d.ts.map