import { Schedule } from "@effect/core/io/Schedule/definition";
import { Effect } from "@effect/core/io/Effect/definition";
import { Either } from "@tsplus/stdlib/data/Either/definition";
import { Tuple } from "@tsplus/stdlib/data/Tuple/definition";
import { Decision } from "@effect/core/io/Schedule/Decision";
import type { Interval } from "@effect/core/io/Schedule/Interval";
/**
 * Returns a new schedule that effectfully reconsiders every decision made by
 * this schedule, possibly modifying the next interval and the output type in
 * the process.
 * @tsplus fluent ets/Schedule reconsiderEffect
 * @tsplus fluent ets/Schedule/WithState reconsiderEffect
 * @tsplus location "@effect/core/io/Schedule/operations/reconsiderEffect"
 */
export declare function reconsiderEffect_<State, Env, In, Out, Env1, Out2>(self: Schedule<State, Env, In, Out>, f: (state: State, out: Out, decision: Decision) => Effect<Env1, never, Either<Out2, Tuple<[Out2, Interval]>>>): Schedule<State, Env | Env1, In, Out2>;
/**
 * Returns a new schedule that effectfully reconsiders every decision made by
 * this schedule, possibly modifying the next interval and the output type in
 * the process.
 * @tsplus static ets/Schedule/Aspects reconsiderEffect
 * @tsplus pipeable ets/Schedule reconsiderEffect
 * @tsplus location "@effect/core/io/Schedule/operations/reconsiderEffect"
 */
export declare const reconsiderEffect: <State, Out, Env1, Out2>(f: (state: State, out: Out, decision: Decision) => import("../../Effect").Effect<Env1, never, import("@tsplus/stdlib/data/Either").Either<Out2, import("@tsplus/stdlib/data/Tuple").Tuple<[Out2, Interval]>>>) => <Env_1, In>(self: import("../definition").Schedule<State, Env_1, In, Out>) => import("../definition").Schedule<State, Env_1 | Env1, In, Out2>;
//# sourceMappingURL=reconsiderEffect.d.ts.map