import { Effect } from "@effect/core/io/Effect/definition";
import { Duration } from "@tsplus/stdlib/data/Duration";
import { Tuple } from "@tsplus/stdlib/data/Tuple/definition";
import { Maybe } from "@tsplus/stdlib/data/Maybe/definition";
import { Deferred } from "@effect/core/io/Deferred/definition";
import { Ref } from "@effect/core/io/Ref/definition";
/**
 * Returns an effect that, if evaluated, will return the cached result of this
 * effect. Cached results will expire after `timeToLive` duration. In
 * addition, returns an effect that can be used to invalidate the current
 * cached value before the `timeToLive` duration expires.
 * @tsplus fluent ets/Effect cachedInvalidate
 * @tsplus location "@effect/core/io/Effect/operations/cachedInvalidate"
 */
export declare function cachedInvalidate_<R, E, A>(self: Effect<R, E, A>, timeToLive: Duration, __tsplusTrace?: string): Effect<R, never, Tuple<[Effect<never, E, A>, Effect<never, never, void>]>>;
/**
 * Returns an effect that, if evaluated, will return the cached result of this
 * effect. Cached results will expire after `timeToLive` duration. In
 * addition, returns an effect that can be used to invalidate the current
 * cached value before the `timeToLive` duration expires.
 * @tsplus static ets/Effect/Aspects cachedInvalidate
 * @tsplus pipeable ets/Effect cachedInvalidate
 * @tsplus location "@effect/core/io/Effect/operations/cachedInvalidate"
 */
export declare const cachedInvalidate: (timeToLive: Duration, __tsplusTrace?: string) => <R, E, A>(self: import("../definition").Effect<R, E, A>) => import("../definition").Effect<R, never, import("@tsplus/stdlib/data/Tuple").Tuple<[import("../definition").Effect<never, E, A>, import("../definition").Effect<never, never, void>]>>;
//# sourceMappingURL=cachedInvalidate.d.ts.map