import { Effect } from "@effect/core/io/Effect/definition";
import { LazyArg } from "@tsplus/stdlib/data/Function";
import { Schedule } from "@effect/core/io/Schedule/definition";
import { Maybe } from "@tsplus/stdlib/data/Maybe/definition";
/**
 * Returns a new effect that repeats this effect according to the specified
 * schedule or until the first failure, at which point, the failure value and
 * schedule output are passed to the specified handler.
 *
 * Scheduled recurrences are in addition to the first execution, so that
 * `io.repeat(Schedule.once)` yields an effect that executes `io`, and then if
 * that succeeds, executes `io` an additional time.
 * @tsplus fluent ets/Effect repeatOrElse
 * @tsplus location "@effect/core/io/Effect/operations/repeatOrElse"
 */
export declare function repeatOrElse_<S, R, E, A, R1, B, R2, E2>(self: Effect<R, E, A>, schedule: LazyArg<Schedule<S, R1, A, B>>, orElse: (e: E, option: Maybe<B>) => Effect<R2, E2, B>, __tsplusTrace?: string): Effect<R | R1 | R2, E2, B>;
/**
 * Returns a new effect that repeats this effect according to the specified
 * schedule or until the first failure, at which point, the failure value and
 * schedule output are passed to the specified handler.
 *
 * Scheduled recurrences are in addition to the first execution, so that
 * `io.repeat(Schedule.once)` yields an effect that executes `io`, and then if
 * that succeeds, executes `io` an additional time.
 * @tsplus static ets/Effect/Aspects repeatOrElse
 * @tsplus location "@effect/core/io/Effect/operations/repeatOrElse"
 */
export declare function repeatOrElse<S, R1, A, B, E, R2, E2>(schedule: LazyArg<Schedule<S, R1, A, B>>, orElse: (e: E, option: Maybe<B>) => Effect<R2, E2, B>, __tsplusTrace?: string): <R>(self: Effect<R, E, A>) => Effect<R | R1 | R2, E2, B>;
//# sourceMappingURL=repeatOrElse.d.ts.map