import { Schedule } from "@effect/core/io/Schedule/definition";
import { Tuple } from "@tsplus/stdlib/data/Tuple/definition";
import { Effect } from "@effect/core/io/Effect/definition";
import type { Interval } from "@effect/core/io/Schedule/Interval";
import type { MergeTuple } from "@tsplus/stdlib/data/Tuple";
/**
 * Returns a new schedule that combines this schedule with the specified
 * schedule, continuing as long as both schedules want to continue and merging
 * the next intervals according to the specified merge function.
 * @tsplus fluent ets/Schedule intersectWith
 * @tsplus fluent ets/Schedule/WithState intersectWith
 * @tsplus location "@effect/core/io/Schedule/operations/intersectWith"
 */
export declare function intersectWith_<State, State1, Env, In, Out, Env1, In1, Out2>(self: Schedule<State, Env, In, Out>, that: Schedule<State1, Env1, In1, Out2>, f: (x: Interval, y: Interval) => Interval): Schedule<Tuple<[State, State1]>, Env | Env1, In & In1, MergeTuple<Out, Out2>>;
/**
 * Returns a new schedule that combines this schedule with the specified
 * schedule, continuing as long as both schedules want to continue and merging
 * the next intervals according to the specified merge function.
 * @tsplus static ets/Schedule/Aspects intersectWith
 * @tsplus pipeable ets/Schedule intersectWith
 * @tsplus location "@effect/core/io/Schedule/operations/intersectWith"
 */
export declare const intersectWith: <State1, Env1, In1, Out2>(that: import("../definition").Schedule<State1, Env1, In1, Out2>, f: (x: Interval, y: Interval) => Interval) => <State, Env_1, In, Out>(self: import("../definition").Schedule<State, Env_1, In, Out>) => import("../definition").Schedule<import("@tsplus/stdlib/data/Tuple").Tuple<[State, State1]>, Env_1 | Env1, In & In1, MergeTuple<Out, Out2>>;
//# sourceMappingURL=intersectWith.d.ts.map