import * as Clock from "../Clock/index.js"; import * as Tp from "../Collections/Immutable/Tuple/index.js"; import * as E from "../Either/index.js"; import * as Random from "../Random/index.js"; import * as Decision from "./Decision/index.js"; import * as Driver from "./Driver/index.js"; import * as T from "./effect.js"; /** * A `Schedule< Env, In, Out>` defines a recurring schedule, which consumes values of type `In`, and * which returns values of type `Out`. * * Schedules are defined as a possibly infinite set of intervals spread out over time. Each * interval defines a window in which recurrence is possible. * * When schedules are used to repeat or retry effects, the starting boundary of each interval * produced by a schedule is used as the moment when the effect will be executed again. * * Schedules compose in the following primary ways: * * * Union. This performs the union of the intervals of two schedules. * * Intersection. This performs the intersection of the intervals of two schedules. * * Sequence. This concatenates the intervals of one schedule onto another. * * In addition, schedule inputs and outputs can be transformed, filtered (to terminate a * schedule early in response to some input or output), and so forth. * * A variety of other operators exist for transforming and combining schedules, and the companion * object for `Schedule` contains all common types of schedules, both for performing retrying, as * well as performing repetition. */ export declare class Schedule { readonly step: Decision.StepFunction; constructor(step: Decision.StepFunction); /** * Returns a new schedule that performs a geometric intersection on the intervals defined * by both schedules. */ readonly ["&&"]: (that: Schedule) => Schedule>; /** * The same as `&&`, but ignores the left output. */ readonly ["***"]: (that: Schedule) => Schedule, Tp.Tuple<[Out, Out1]>>; /** * The same as `&&`, but ignores the left output. */ readonly ["*>"]: (that: Schedule) => Schedule; /** * Returns a new schedule that allows choosing between feeding inputs to this schedule, or * feeding inputs to the specified schedule. */ readonly ["+++"]: (that: Schedule) => Schedule, Out | Out1>; /** * A symbolic alias for `andThen`. */ readonly ["++"]: (that: Schedule) => Schedule; /** * The same as `&&`, but ignores the right output. */ readonly ["<*"]: (that: Schedule) => Schedule; /** * An operator alias for `zip`. */ readonly ["<*>"]: (that: Schedule) => Schedule>; /** * Returns the composition of this schedule and the specified schedule, by piping the output of * this one into the input of the other. Effects described by this schedule will always be * executed before the effects described by the second schedule. */ readonly ["<<<"]: (that: Schedule) => Schedule; /** * Returns the composition of this schedule and the specified schedule, by piping the output of * this one into the input of the other. Effects described by this schedule will always be * executed before the effects described by the second schedule. */ readonly [">>>"]: (that: Schedule) => Schedule; /** * Returns a new schedule that performs a geometric union on the intervals defined * by both schedules. */ readonly ["||"]: (that: Schedule) => Schedule>; /** * Returns a new schedule that chooses between two schedules with a common output. */ readonly ["|||"]: (that: Schedule) => Schedule, Out | Out1>; /** * Operator alias for `andThenEither`. */ readonly ["<||>"]: (that: Schedule) => Schedule>; } /** * Returns a driver that can be used to step the schedule, appropriately handling sleeping. */ export declare function driver(self: Schedule): T.UIO>; /** * Returns a new schedule that loops this one continuously, resetting the state * when this schedule is done. */ export declare function repeat(self: Schedule): Schedule; /** * Returns a new schedule with the given delay added to every update. */ export declare function addDelay(f: (b: Out) => number): (self: Schedule) => Schedule; /** * Returns a new schedule with the given delay added to every update. */ export declare function addDelay_(self: Schedule, f: (b: Out) => number): Schedule; /** * Returns a new schedule with the effectfully calculated delay added to every update. */ export declare function addDelayM(f: (b: Out) => T.Effect): (self: Schedule) => Schedule; /** * Returns a new schedule with the effectfully calculated delay added to every update. */ export declare function addDelayM_(self: Schedule, f: (b: Out) => T.Effect): Schedule; /** * The same as `andThenEither`, but merges the output. */ export declare function andThen(that: Schedule): (self: Schedule) => Schedule; /** * The same as `andThenEither`, but merges the output. */ export declare function andThen_(self: Schedule, that: Schedule): Schedule; /** * Returns a new schedule that maps this schedule to a constant output. */ export declare function as(o: Out2): (self: Schedule) => Schedule; /** * Returns a new schedule that has both the inputs and outputs of this and the specified * schedule. */ export declare function bothInOut(that: Schedule): (self: Schedule) => Schedule, Tp.Tuple<[Out, Out1]>>; /** * Returns a new schedule that has both the inputs and outputs of this and the specified * schedule. */ export declare function bothInOut_(self: Schedule, that: Schedule): Schedule, Tp.Tuple<[Out, Out1]>>; /** * Returns a new schedule that has both the inputs and outputs of this and the specified * schedule. */ export declare function intersection(that: Schedule): (self: Schedule) => Schedule>; /** * Returns a new schedule that performs a geometric intersection on the intervals defined * by both schedules. */ export declare function intersection_(self: Schedule, that: Schedule): Schedule>; /** * Returns a new schedule that passes each input and output of this schedule to the spefcified * function, and then determines whether or not to continue based on the return value of the * function. */ export declare function check(f: (i: In, o: Out) => boolean): (self: Schedule) => Schedule; /** * Returns a new schedule that passes each input and output of this schedule to the spefcified * function, and then determines whether or not to continue based on the return value of the * function. */ export declare function check_(self: Schedule, f: (i: In, o: Out) => boolean): Schedule; /** * Returns a new schedule that passes each input and output of this schedule to the specified * function, and then determines whether or not to continue based on the return value of the * function. */ export declare function checkM(test: (i: In, o: Out) => T.Effect): (self: Schedule) => Schedule; /** * Returns a new schedule that passes each input and output of this schedule to the specified * function, and then determines whether or not to continue based on the return value of the * function. */ export declare function checkM_(self: Schedule, test: (i: In, o: Out) => T.Effect): Schedule; /** * Returns a new schedule that first executes this schedule to completion, and then executes the * specified schedule to completion. */ export declare function andThenEither(that: Schedule): (self: Schedule) => Schedule>; /** * Returns a new schedule that first executes this schedule to completion, and then executes the * specified schedule to completion. */ export declare function andThenEither_(self: Schedule, that: Schedule): Schedule>; /** * Returns a new schedule that allows choosing between feeding inputs to this schedule, or * feeding inputs to the specified schedule. */ export declare function choose(that: Schedule): (self: Schedule) => Schedule, E.Either>; /** * Returns a new schedule that allows choosing between feeding inputs to this schedule, or * feeding inputs to the specified schedule. */ export declare function choose_(self: Schedule, that: Schedule): Schedule, E.Either>; /** * Returns a new schedule that allows choosing between feeding inputs to this schedule, or * feeding inputs to the specified schedule. */ export declare function chooseMerge(that: Schedule): (self: Schedule) => Schedule, Out1 | Out>; /** * Returns a new schedule that allows choosing between feeding inputs to this schedule, or * feeding inputs to the specified schedule. */ export declare function chooseMerge_(self: Schedule, that: Schedule): Schedule, Out | Out1>; /** * Returns a new schedule that collects the outputs of this one into an array. */ export declare function collectAll(self: Schedule): Schedule; /** * A schedule that recurs anywhere, collecting all inputs into a list. */ export declare function collectAllIdentity(): Schedule; /** * Returns the composition of this schedule and the specified schedule, by piping the output of * this one into the input of the other. Effects described by this schedule will always be * executed before the effects described by the second schedule. */ export declare function compose(that: Schedule): (self: Schedule) => Schedule; /** * Returns the composition of this schedule and the specified schedule, by piping the output of * this one into the input of the other. Effects described by this schedule will always be * executed before the effects described by the second schedule. */ export declare function compose_(self: Schedule, that: Schedule): Schedule; /** * Returns a new schedule that deals with a narrower class of inputs than this schedule. */ export declare function contramap(f: (_: In1) => In): (self: Schedule) => Schedule; /** * Returns a new schedule that deals with a narrower class of inputs than this schedule. */ export declare function contramap_(self: Schedule, f: (_: In1) => In): Schedule; /** * Returns a new schedule with the specified computed delay added before the start * of each interval produced by this schedule. */ export declare function delayed(f: (d: number) => number): (self: Schedule) => Schedule; /** * Returns a new schedule with the specified computed delay added before the start * of each interval produced by this schedule. */ export declare function delayedFrom(schedule: Schedule): Schedule; /** * Returns a new schedule with the specified computed delay added before the start * of each interval produced by this schedule. */ export declare function delayed_(self: Schedule, f: (d: number) => number): Schedule; /** * Returns a new schedule with the specified effectfully computed delay added before the start * of each interval produced by this schedule. */ export declare function delayedM(f: (d: number) => T.Effect): (self: Schedule) => Schedule; /** * Returns a new schedule with the specified effectfully computed delay added before the start * of each interval produced by this schedule. */ export declare function delayedM_(self: Schedule, f: (d: number) => T.Effect): Schedule; /** * Returns a new schedule that contramaps the input and maps the output. */ export declare function dimap(f: (i: In2) => In): (g: (o: Out) => Out2) => (self: Schedule) => Schedule; /** * Returns a new schedule that contramaps the input and maps the output. */ export declare function dimap_(self: Schedule, f: (i: In2) => In, g: (o: Out) => Out2): Schedule; /** * A schedule that can recur one time, the specified amount of time into the future. */ export declare function duration(n: number): Schedule; /** * A schedule that can recur one time, the specified amount of time into the future. */ export declare function durations(n: number, ...rest: number[]): Schedule; /** * Returns a new schedule that performs a geometric union on the intervals defined * by both schedules. */ export declare function union(that: Schedule): (self: Schedule) => Schedule>; /** * Returns a new schedule that combines this schedule with the specified * schedule, continuing as long as either schedule wants to continue and * merging the next intervals according to the specified merge function. */ export declare function union_(self: Schedule, that: Schedule): Schedule>; /** * Returns a new schedule that combines this schedule with the specified * schedule, continuing as long as either schedule wants to continue and * merging the next intervals according to the specified merge function. */ export declare function unionWith(that: Schedule, f: (d1: number, d2: number) => number): (self: Schedule) => Schedule>; /** * Returns a new schedule that combines this schedule with the specified * schedule, continuing as long as either schedule wants to continue and * merging the next intervals according to the specified merge function. */ export declare function unionWith_(self: Schedule, that: Schedule, f: (d1: number, d2: number) => number): Schedule>; /** * A schedule that occurs everywhere, which returns the total elapsed duration since the * first step. */ export declare const elapsed: Schedule; /** * A schedule that always recurs, but will wait a certain amount between * repetitions, given by `base * factor.pow(n)`, where `n` is the number of * repetitions so far. Returns the current duration between recurrences. */ export declare function exponential(base: number, factor?: number): Schedule; /** * A schedule that always recurs, increasing delays by summing the * preceding two delays (similar to the fibonacci sequence). Returns the * current duration between recurrences. */ export declare function fibonacci(one: number): Schedule; /** * A schedule that recurs on a fixed interval. Returns the number of * repetitions of the schedule so far. * * If the action run between updates takes longer than the interval, then the * action will be run immediately, but re-runs will not "pile up". * *
 * |-----interval-----|-----interval-----|-----interval-----|
 * |---------action--------||action|-----|action|-----------|
 * 
*/ export declare function fixed(interval: number): Schedule; /** * A schedule that always recurs, mapping input values through the * specified function. */ export declare function fromFunction(f: (a: A) => B): Schedule; /** * A schedule that always recurs, which counts the number of recurrances. */ export declare const count: Schedule; /** * Returns a new schedule that will run the specified finalizer as soon as the schedule is * complete. Note that unlike `Effect#ensuring`, this method does not guarantee the finalizer * will be run. The `Schedule` may not initialize or the driver of the schedule may not run * to completion. However, if the `Schedule` ever decides not to continue, then the * finalizer will be run. */ export declare function ensuring(finalizer: T.Effect): (self: Schedule) => Schedule; /** * Returns a new schedule that will run the specified finalizer as soon as the schedule is * complete. Note that unlike `Effect#ensuring`, this method does not guarantee the finalizer * will be run. The `Schedule` may not initialize or the driver of the schedule may not run * to completion. However, if the `Schedule` ever decides not to continue, then the * finalizer will be run. */ export declare function ensuring_(self: Schedule, finalizer: T.Effect): Schedule; /** * Returns a new schedule that packs the input and output of this schedule into the first * element of a tuple. This allows carrying information through this schedule. */ export declare function first(): (self: Schedule) => Schedule, Tp.Tuple<[Out, X]>>; /** * Returns a new schedule that effectfully folds over the outputs of this one. */ export declare function fold(z: Z): (f: (z: Z, o: Out) => Z) => (self: Schedule) => Schedule; /** * Returns a new schedule that effectfully folds over the outputs of this one. */ export declare function fold_(self: Schedule, z: Z, f: (z: Z, o: Out) => Z): Schedule; /** * Returns a new schedule that effectfully folds over the outputs of this one. */ export declare function foldM(z: Z): (f: (z: Z, o: Out) => T.Effect) => (self: Schedule) => Schedule; /** * Returns a new schedule that effectfully folds over the outputs of this one. */ export declare function foldM_(self: Schedule, z: Z, f: (z: Z, o: Out) => T.Effect): Schedule; /** * A schedule that recurs forever, producing a count of repeats: 0, 1, 2, ... */ export declare const forever: Schedule; /** * A schedule that always recurs, which returns inputs as outputs. */ export declare function identity
(): Schedule; /** * 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. */ export declare function intersectWith_(self: Schedule, that: Schedule, f: (selfInterval: number, thatInterval: number) => number): Schedule>; /** * 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. */ export declare function intersectWith(that: Schedule, f: (selfInterval: number, thatInterval: number) => number): (self: Schedule) => Schedule>; /** * Returns a new schedule that randomly modifies the size of the intervals of this schedule. */ export declare function jittered({ max, min }?: { min?: number; max?: number; }): (self: Schedule) => Schedule, In, Out>; /** * Returns a new schedule that randomly modifies the size of the intervals of this schedule. */ export declare function jittered_(self: Schedule, { max, min }?: { min?: number; max?: number; }): Schedule, In, Out>; /** * A schedule that always recurs, but will repeat on a linear time * interval, given by `base * n` where `n` is the number of * repetitions so far. Returns the current duration between recurrences. */ export declare function linear(base: number): Schedule; /** * A schedule that recurs one time. */ export declare const once: Schedule; /** * Returns a new schedule that makes this schedule available on the `Left` side of an `Either` * input, allowing propagating some type `X` through this channel on demand. */ export declare function left(): (self: Schedule) => Schedule, E.Either>; /** * Returns a new schedule that maps the output of this schedule through the specified * effectful function. */ export declare function map(f: (o: Out) => Out2): (self: Schedule) => Schedule; /** * Returns a new schedule that maps the output of this schedule through the specified * effectful function. */ export declare function map_(self: Schedule, f: (o: Out) => Out2): Schedule; /** * Returns a new schedule that maps the output of this schedule through the specified function. */ export declare function mapM(f: (o: Out) => T.Effect): (self: Schedule) => Schedule; /** * Returns a new schedule that maps the output of this schedule through the specified function. */ export declare function mapM_(self: Schedule, f: (o: Out) => T.Effect): Schedule; /** * Returns a new schedule that modifies the delay using the specified * effectual function. */ export declare function modifyDelayM(f: (o: Out, d: number) => T.Effect): (self: Schedule) => Schedule; /** * Returns a new schedule that modifies the delay using the specified * effectual function. */ export declare function modifyDelayM_(self: Schedule, f: (o: Out, d: number) => T.Effect): Schedule; /** * Returns a new schedule that modifies the delay using the specified * function. */ export declare function modifyDelay(f: (o: Out, d: number) => number): (self: Schedule) => Schedule; /** * Returns a new schedule that modifies the delay using the specified * function. */ export declare function modifyDelay_(self: Schedule, f: (o: Out, d: number) => number): Schedule; /** * Returns a new schedule that applies the current one but runs the specified effect * for every decision of this schedule. This can be used to create schedules * that log failures, decisions, or computed values. */ export declare function onDecision_(self: Schedule, f: (d: Decision.Decision) => T.Effect): Schedule; /** * Returns a new schedule that applies the current one but runs the specified effect * for every decision of this schedule. This can be used to create schedules * that log failures, decisions, or computed values. */ export declare function onDecision(f: (d: Decision.Decision) => T.Effect): (self: Schedule) => Schedule; /** * Returns a new schedule with its environment provided to it, so the resulting * schedule does not require any environment. */ export declare function provideAll(env: Env): (self: Schedule) => Schedule; /** * Returns a new schedule with its environment provided to it, so the resulting * schedule does not require any environment. */ export declare function provideAll_(self: Schedule, env: Env): Schedule; /** * Returns a new schedule with part of its environment provided to it, so the * resulting schedule does not require any environment. */ export declare function provideSome(env: (e: Env1) => Env): (self: Schedule) => Schedule; /** * Returns a new schedule with part of its environment provided to it, so the * resulting schedule does not require any environment. */ export declare function provideSome_(self: Schedule, env: (e: Env1) => Env): Schedule; /** * 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. */ export declare function reconsider(f: (_: Decision.Decision) => E.Either): (self: Schedule) => Schedule; /** * 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. */ export declare function reconsider_(self: Schedule, f: (_: Decision.Decision) => E.Either): Schedule; /** * 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. */ export declare function reconsiderM(f: (_: Decision.Decision) => T.Effect>): (self: Schedule) => Schedule; /** * 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. */ export declare function reconsiderM_(self: Schedule, f: (_: Decision.Decision) => T.Effect>): Schedule; /** * Returns a new schedule that outputs the number of repetitions of this one. */ export declare function repetitions(self: Schedule): Schedule; /** * Return a new schedule that automatically resets the schedule to its initial state * after some time of inactivity defined by `duration`. */ export declare function resetAfter(duration: number): (self: Schedule) => Schedule; /** * Resets the schedule when the specified predicate on the schedule output evaluates to true. */ export declare function resetWhen(f: (o: Out) => boolean): (self: Schedule) => Schedule; /** * Resets the schedule when the specified predicate on the schedule output evaluates to true. */ export declare function resetWhen_(self: Schedule, f: (o: Out) => boolean): Schedule; /** * A schedule that recurs for as long as the predicate evaluates to true. */ export declare function recurWhile(f: (a: A) => boolean): Schedule; /** * A schedule that recurs for as long as the effectful predicate evaluates to true. */ export declare function recurWhileM(f: (a: A) => T.Effect): Schedule; /** * A schedule that recurs for as long as the predicate evaluates to true. */ export declare function recurWhileEquals(a: A): Schedule; /** * A schedule that recurs for as long as the predicate evaluates to true. */ export declare function recurUntil(f: (a: A) => boolean): Schedule; /** * A schedule that recurs for as long as the effectful predicate evaluates to true. */ export declare function recurUntilM(f: (a: A) => T.Effect): Schedule; /** * A schedule that recurs for as long as the predicate evaluates to true. */ export declare function recurUntilEquals(a: A): Schedule; /** * A schedule spanning all time, which can be stepped only the specified number of times before * it terminates. */ export declare function recurs(n: number): Schedule; /** * Returns a new schedule that makes this schedule available on the `Right` side of an `Either` * input, allowing propagating some type `X` through this channel on demand. */ export declare function right(): (self: Schedule) => Schedule, E.Either>; /** * Runs a schedule using the provided inputs, and collects all outputs. */ export declare function run(now: number, i: Iterable): (self: Schedule) => T.Effect; /** * Runs a schedule using the provided inputs, and collects all outputs. */ export declare function run_(self: Schedule, now: number, i: Iterable): T.Effect; /** * Returns a new schedule that packs the input and output of this schedule into the second * element of a tuple. This allows carrying information through this schedule. */ export declare function second(): (self: Schedule) => Schedule, Tp.Tuple<[X, Out]>>; /** * Returns a schedule that recurs continuously, each repetition spaced the specified duration * from the last run. */ export declare function spaced(duration: number): Schedule; /** * A schedule that does not recur, it just stops. */ export declare const stop: Schedule; /** * Returns a schedule that repeats one time, producing the specified constant value. */ export declare function succeed(a: A): Schedule; /** * Returns a new schedule that effectfully processes every input to this schedule. */ export declare function tapInput_(self: Schedule, f: (i: In) => T.Effect): Schedule; /** * Returns a new schedule that effectfully processes every input to this schedule. */ export declare function tapInput(f: (i: In) => T.Effect): (self: Schedule) => Schedule; /** * Returns a new schedule that effectfully processes every output from this schedule. */ export declare function tapOutput(f: (o: Out) => T.Effect): (self: Schedule) => Schedule; /** * Returns a new schedule that effectfully processes every output from this schedule. */ export declare function tapOutput_(self: Schedule, f: (o: Out) => T.Effect): Schedule; /** * Returns a new schedule that maps the output of this schedule to unit. */ export declare function unit(self: Schedule): Schedule; /** * Returns a new schedule that continues until the specified predicate on the input evaluates * to true. */ export declare function untilInput(f: (i: In) => boolean): (self: Schedule) => Schedule; /** * Returns a new schedule that continues until the specified predicate on the input evaluates * to true. */ export declare function untilInput_(self: Schedule, f: (i: In) => boolean): Schedule; /** * Returns a new schedule that continues until the specified effectful predicate on the input * evaluates to true. */ export declare function untilInputM(f: (i: In) => T.Effect): (self: Schedule) => Schedule; /** * Returns a new schedule that continues until the specified effectful predicate on the input * evaluates to true. */ export declare function untilInputM_(self: Schedule, f: (i: In) => T.Effect): Schedule; /** * Returns a new schedule that continues until the specified predicate on the input evaluates * to true. */ export declare function untilOutput(f: (o: Out) => boolean): (self: Schedule) => Schedule; /** * Returns a new schedule that continues until the specified predicate on the input evaluates * to true. */ export declare function untilOutput_(self: Schedule, f: (o: Out) => boolean): Schedule; /** * Returns a new schedule that continues until the specified predicate on the input evaluates * to true. */ export declare function untilOutputM(f: (o: Out) => T.Effect): (self: Schedule) => Schedule; /** * Returns a new schedule that continues until the specified predicate on the input evaluates * to true. */ export declare function untilOutputM_(self: Schedule, f: (o: Out) => T.Effect): Schedule; /** * Returns a new schedule that continues for as long the specified predicate on the input * evaluates to true. */ export declare function whileInput(f: (i: In) => boolean): (self: Schedule) => Schedule; /** * Returns a new schedule that continues for as long the specified predicate on the input * evaluates to true. */ export declare function whileInput_(self: Schedule, f: (i: In) => boolean): Schedule; /** * Returns a new schedule that continues for as long the specified effectful predicate on the * input evaluates to true. */ export declare function whileInputM(f: (i: In) => T.Effect): (self: Schedule) => Schedule; /** * Returns a new schedule that continues for as long the specified effectful predicate on the * input evaluates to true. */ export declare function whileInputM_(self: Schedule, f: (i: In) => T.Effect): Schedule; /** * Returns a new schedule that continues for as long the specified predicate on the output * evaluates to true. */ export declare function whileOutput(f: (o: Out) => boolean): (self: Schedule) => Schedule; /** * Returns a new schedule that continues for as long the specified predicate on the output * evaluates to true. */ export declare function whileOutput_(self: Schedule, f: (o: Out) => boolean): Schedule; /** * Returns a new schedule that continues for as long the specified effectful predicate on the * output evaluates to true. */ export declare function whileOutputM(f: (o: Out) => T.Effect): (self: Schedule) => Schedule; /** * Returns a new schedule that continues for as long the specified effectful predicate on the * output evaluates to true. */ export declare function whileOutputM_(self: Schedule, f: (o: Out) => T.Effect): Schedule; /** * A schedule that divides the timeline to `interval`-long windows, and sleeps * until the nearest window boundary every time it recurs. * * For example, `windowed(10_000)` would produce a schedule as follows: *
 *      10s        10s        10s       10s
 * |----------|----------|----------|----------|
 * |action------|sleep---|act|-sleep|action----|
 * 
*/ export declare function windowed(interval: number): Schedule; /** * Unfolds a schedule that repeats one time from the specified state and iterator. */ export declare function unfold
(f: (a: A) => A): (a: A) => Schedule; /** * Unfolds a schedule that repeats one time from the specified state and iterator. */ export declare function unfold_(a: A, f: (a: A) => A): Schedule; /** * Unfolds a schedule that repeats one time from the specified state and iterator. */ export declare function unfoldM(f: (a: A) => T.Effect): (a: A) => Schedule; /** * Unfolds a schedule that repeats one time from the specified state and iterator. */ export declare function unfoldM_(a: A, f: (a: A) => T.Effect): Schedule; /** * Returns a new schedule that performs a geometric intersection on the intervals defined * by both schedules. */ export declare function zip_(self: Schedule, that: Schedule): Schedule>; /** * Returns a new schedule that performs a geometric intersection on the intervals defined * by both schedules. */ export declare function zip(that: Schedule): (self: Schedule) => Schedule>; /** * Same as zip but ignores the right output. */ export declare function zipLeft(that: Schedule): (self: Schedule) => Schedule; /** * Same as zip but ignores the right output. */ export declare function zipLeft_(self: Schedule, that: Schedule): Schedule; /** * Same as zip but ignores the right output. */ export declare function zipRight(that: Schedule): (self: Schedule) => Schedule; /** * Same as zip but ignores the right output. */ export declare function zipRight_(self: Schedule, that: Schedule): Schedule; /** * Equivalent to `zip` followed by `map`. */ export declare function zipWith(that: Schedule, f: (o: Out, o1: Out1) => Out2): (self: Schedule) => Schedule; /** * Equivalent to `zip` followed by `map`. */ export declare function zipWith_(self: Schedule, that: Schedule, f: (o: Out, o1: Out1) => Out2): Schedule; //# sourceMappingURL=schedule.d.ts.map