import { Effect } from "@effect/core/io/Effect/definition";
import { LazyArg } from "@tsplus/stdlib/data/Function";
import { Duration } from "@tsplus/stdlib/data/Duration";
import { Maybe } from "@tsplus/stdlib/data/Maybe/definition";
/**
 * Returns an effect that will timeout this effect, returning `None` if the
 * timeout elapses before the effect has produced a value; and returning
 * `Some` of the produced value otherwise.
 *
 * If the timeout elapses without producing a value, the running effect will
 * be safely interrupted.
 *
 * WARNING: The effect returned by this method will not itself return until
 * the underlying effect is actually interrupted. This leads to more
 * predictable resource utilization. If early return is desired, then instead
 * of using `effect.timeout(d)`, use `effect.disconnect.timeout(d)`, which
 * first disconnects the effect's interruption signal before performing the
 * timeout, resulting in earliest possible return, before an underlying effect
 * has been successfully interrupted.
 * @tsplus fluent ets/Effect timeout
 * @tsplus location "@effect/core/io/Effect/operations/timeout"
 */
export declare function timeout_<R, E, E1, A>(self: Effect<R, E, A>, duration: LazyArg<Duration>, __tsplusTrace?: string): Effect<R, E, Maybe<A>>;
/**
 * Returns an effect that will timeout this effect, returning `None` if the
 * timeout elapses before the effect has produced a value; and returning
 * `Some` of the produced value otherwise.
 *
 * If the timeout elapses without producing a value, the running effect will
 * be safely interrupted.
 *
 * WARNING: The effect returned by this method will not itself return until
 * the underlying effect is actually interrupted. This leads to more
 * predictable resource utilization. If early return is desired, then instead
 * of using `effect.timeout(d)`, use `effect.disconnect.timeout(d)`, which
 * first disconnects the effect's interruption signal before performing the
 * timeout, resulting in earliest possible return, before an underlying effect
 * has been successfully interrupted.
 * @tsplus static ets/Effect/Aspects timeout
 * @tsplus pipeable ets/Effect timeout
 * @tsplus location "@effect/core/io/Effect/operations/timeout"
 */
export declare const timeout: (duration: LazyArg<Duration>, __tsplusTrace?: string) => <R, E, E1, A>(self: import("../definition").Effect<R, E, A>) => import("../definition").Effect<R, E, import("@tsplus/stdlib/data/Maybe").Maybe<A>>;
//# sourceMappingURL=timeout.d.ts.map