import { Ref } from "@effect/core/io/Ref/definition";
import { Effect } from "@effect/core/io/Effect/definition";
import { Maybe } from "@tsplus/stdlib/data/Maybe/definition";
import { Tuple } from "@tsplus/stdlib/data/Tuple/definition";
import { RefSym } from "@effect/core/io/Ref/definition";
export declare const RefInternal: {
    /**
     * Internal Discriminator
     */
    readonly [RefSym]: typeof RefSym;
    /**
     * Atomically writes the specified value to the `Ref`, returning the value
     * immediately before modification.
     */
    getAndSet<A>(this: import("@effect/core/io/Ref/definition").Ref<A>, a: A, __tsplusTrace?: string): import("../../../Effect").Effect.UIO<A>;
    /**
     * Atomically modifies the `Ref` with the specified function, returning the
     * value immediately before modification.
     */
    getAndUpdate<A_1>(this: import("@effect/core/io/Ref/definition").Ref<A_1>, f: (a: A_1) => A_1, __tsplusTrace?: string): import("../../../Effect").Effect.UIO<A_1>;
    /**
     * Atomically modifies the `Ref` with the specified partial function,
     * returning the value immediately before modification. If the function is
     * undefined on the current value it doesn't change it.
     */
    getAndUpdateSome<A_2>(this: import("@effect/core/io/Ref/definition").Ref<A_2>, pf: (a: A_2) => import("@tsplus/stdlib/data/Maybe").Maybe<A_2>, __tsplusTrace?: string): import("../../../Effect").Effect.UIO<A_2>;
    /**
     * Atomically modifies the `Ref` with the specified partial function, which
     * computes a return value for the modification if the function is defined on
     * the current value otherwise it returns a default value. This is a more
     * powerful version of `updateSome`.
     */
    modifySome<B, A_3>(this: import("@effect/core/io/Ref/definition").Ref<A_3>, fallback: B, pf: (a: A_3) => import("@tsplus/stdlib/data/Maybe").Maybe<import("@tsplus/stdlib/data/Tuple").Tuple<[B, A_3]>>, __tsplusTrace?: string): import("../../../Effect").Effect.UIO<B>;
    /**
     * Atomically modifies the `Ref` with the specified function.
     */
    update<A_4>(this: import("@effect/core/io/Ref/definition").Ref<A_4>, f: (a: A_4) => A_4, __tsplusTrace?: string): import("../../../Effect").Effect.UIO<void>;
    /**
     * Atomically modifies the `Ref` with the specified function and returns the
     * updated value.
     */
    updateAndGet<A_5>(this: import("@effect/core/io/Ref/definition").Ref<A_5>, f: (a: A_5) => A_5, __tsplusTrace?: string): import("../../../Effect").Effect.UIO<A_5>;
    /**
     * Atomically modifies the `Ref` with the specified partial function. If the
     * function is undefined on the current value it doesn't change it.
     */
    updateSome<A_6>(this: import("@effect/core/io/Ref/definition").Ref<A_6>, pf: (a: A_6) => import("@tsplus/stdlib/data/Maybe").Maybe<A_6>, __tsplusTrace?: string): import("../../../Effect").Effect.UIO<void>;
    /**
     * Atomically modifies the `Ref` with the specified partial function. If the
     * function is undefined on the current value it returns the old value without
     * changing it.
     */
    updateSomeAndGet<A_7>(this: import("@effect/core/io/Ref/definition").Ref<A_7>, pf: (a: A_7) => import("@tsplus/stdlib/data/Maybe").Maybe<A_7>, __tsplusTrace?: string): import("../../../Effect").Effect.UIO<A_7>;
};
//# sourceMappingURL=RefInternal.d.ts.map