import { Predicate } from "@tsplus/stdlib/data/Predicate";
import { STM } from "@effect/core/stm/STM/definition/base";
/**
* Repeats this `STM` effect until its result satisfies the specified
* predicate. **WARNING**: `repeatUntil` 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 `retryUntil` instead if you don't need to maintain transaction
* state for repeats.
* - Ensure repeating the STM effect will eventually satisfy the predicate.
* - Consider using the Blocking thread pool for execution of the
* transaction.
* @tsplus static effect/core/stm/STM.Aspects repeatUntil
* @tsplus pipeable effect/core/stm/STM repeatUntil
* @tsplus location "@effect/core/stm/STM/operations/repeatUntil"
*/
export declare function repeatUntil(f: Predicate): (self: import("../definition").STM) => import("../definition").STM;
//# sourceMappingURL=repeatUntil.d.ts.map