import type { Tuple } from "../Collections/Immutable/Tuple";
import type { UIO } from "../Effect/effect";
import type { FiberRef } from "./fiberRef";
/**
 * Atomically modifies the `FiberRef` with the specified function, which computes
 * a return value for the modification. This is a more powerful version of
 * `update`.
 *
 * @ets_data_first modify_
 */
export declare function modify<A, B>(f: (a: A) => Tuple<[B, A]>): (fiberRef: FiberRef<A>) => UIO<B>;
/**
 * Atomically modifies the `FiberRef` with the specified function, which computes
 * a return value for the modification. This is a more powerful version of
 * `update`.
 */
export declare function modify_<A, B>(fiberRef: FiberRef<A>, f: (a: A) => Tuple<[B, A]>): UIO<B>;
//# sourceMappingURL=modify.d.ts.map