import { Effect } from "@effect/core/io/Effect/definition";
import { LazyArg } from "@tsplus/stdlib/data/Function";
import { Schedule } from "@effect/core/io/Schedule/definition";
import { Either } from "@tsplus/stdlib/data/Either/definition";
/**
 * Returns an effect that retries this effect with the specified schedule when
 * it fails, until the schedule is done, then both the value produced by the
 * schedule together with the last error are passed to the specified recovery
 * function.
 * @tsplus fluent ets/Effect retryOrElseEither
 * @tsplus location "@effect/core/io/Effect/operations/retryOrElseEither"
 */
export declare function retryOrElseEither_<R, E, A, S, R1, A1, R2, E2, A2>(self: Effect<R, E, A>, policy: LazyArg<Schedule<S, R1, E, A1>>, orElse: (e: E, out: A1) => Effect<R2, E2, A2>, __tsplusTrace?: string): Effect<R | R1 | R2, E | E2, Either<A2, A>>;
/**
 * Retries with the specified schedule, until it fails, and then both the
 * value produced by the schedule together with the last error are passed to
 * the recovery function.
 * @tsplus static ets/Effect/Aspects retryOrElseEither
 * @tsplus location "@effect/core/io/Effect/operations/retryOrElseEither"
 */
export declare function retryOrElseEither<S, R1, E, A1, R2, E2, A2>(policy: LazyArg<Schedule<S, R1, E, A1>>, orElse: (e: E, out: A1) => Effect<R2, E2, A2>, __tsplusTrace?: string): <R, A>(self: Effect<R, E, A>) => Effect<R | R1 | R2, E | E2, Either<A2, A>>;
//# sourceMappingURL=retryOrElseEither.d.ts.map