import { Predicate } from "@tsplus/stdlib/data/Predicate";
import { STM } from "@effect/core/stm/STM/definition/base";
/**
* Repeats this `STM` effect while its result satisfies the specified
* predicate. **WARNING**: `repeatWhile` uses a busy loop to repeat the
* effect and will consume a thread until it completes (it cannot yield). This
* is because STM describes a single atomic transaction which must either
* complete, retry or fail a transaction before yielding back to the ZIO
* Runtime.
* - Use `retryWhile` instead if you don't need to maintain transaction
* state for repeats.
* - Ensure repeating the STM effect will eventually not satisfy the
* predicate.
* - Consider using the Blocking thread pool for execution of the
* transaction.
* @tsplus static effect/core/stm/STM.Aspects repeatWhile
* @tsplus pipeable effect/core/stm/STM repeatWhile
* @tsplus location "@effect/core/stm/STM/operations/repeatWhile"
*/
export declare function repeatWhile(f: Predicate): (self: import("../definition").STM) => import("../definition").STM;
//# sourceMappingURL=repeatWhile.d.ts.map