import { AtomicReference } from "@tsplus/stdlib/data/AtomicReference";
import { Maybe } from "@tsplus/stdlib/data/Maybe/definition";
import { Tuple } from "@tsplus/stdlib/data/Tuple/definition";
import { Ref } from "@effect/core/io/Ref/definition";
import { Effect } from "@effect/core/io/Effect/definition";
import { RefSym } from "@effect/core/io/Ref/definition";
export declare class UnsafeAPI<A> {
    readonly value: AtomicReference<A>;
    constructor(value: AtomicReference<A>);
    get get(): A;
    getAndSet(a: A): A;
    getAndUpdate(f: (a: A) => A): A;
    getAndUpdateSome(pf: (a: A) => Maybe<A>): A;
    modify<B>(f: (a: A) => Tuple<[B, A]>): B;
    modifySome<B>(fallback: B, pf: (a: A) => Maybe<Tuple<[B, A]>>): B;
    set(a: A): void;
    setAsync(a: A): void;
    update(f: (a: A) => A): void;
    updateAndGet(f: (a: A) => A): A;
    updateSome(pf: (a: A) => Maybe<A>): void;
    updateSomeAndGet(pf: (a: A) => Maybe<A>): A;
}
export interface AtomicInternal<A> extends Ref<A> {
    readonly unsafe: UnsafeAPI<A>;
}
export declare const AtomicInternal: {
    [RefSym]: typeof RefSym;
    get<A>(this: AtomicInternal<A>, __tsplusTrace?: string): import("../../../Effect").Effect.UIO<A>;
    modify<A_1, B>(this: AtomicInternal<A_1>, f: (a: A_1) => import("@tsplus/stdlib/data/Tuple").Tuple<[B, A_1]>, __tsplusTrace?: string): import("../../../Effect").Effect.UIO<B>;
    set<A_2>(this: AtomicInternal<A_2>, a: A_2, __tsplusTrace?: string): import("../../../Effect").Effect.UIO<void>;
    setAsync<A_3>(this: AtomicInternal<A_3>, a: A_3, __tsplusTrace?: string): import("../../../Effect").Effect.UIO<void>;
    getAndSet<A_4>(this: import("@effect/core/io/Ref/definition").Ref<A_4>, a: A_4, __tsplusTrace?: string | undefined): import("../../../Effect").Effect.UIO<A_4>;
    getAndUpdate<A_5>(this: import("@effect/core/io/Ref/definition").Ref<A_5>, f: (a: A_5) => A_5, __tsplusTrace?: string | undefined): import("../../../Effect").Effect.UIO<A_5>;
    getAndUpdateSome<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 | undefined): import("../../../Effect").Effect.UIO<A_6>;
    modifySome<B_1, A_7>(this: import("@effect/core/io/Ref/definition").Ref<A_7>, fallback: B_1, pf: (a: A_7) => import("@tsplus/stdlib/data/Maybe").Maybe<import("@tsplus/stdlib/data/Tuple").Tuple<[B_1, A_7]>>, __tsplusTrace?: string | undefined): import("../../../Effect").Effect.UIO<B_1>;
    update<A_8>(this: import("@effect/core/io/Ref/definition").Ref<A_8>, f: (a: A_8) => A_8, __tsplusTrace?: string | undefined): import("../../../Effect").Effect.UIO<void>;
    updateAndGet<A_9>(this: import("@effect/core/io/Ref/definition").Ref<A_9>, f: (a: A_9) => A_9, __tsplusTrace?: string | undefined): import("../../../Effect").Effect.UIO<A_9>;
    updateSome<A_10>(this: import("@effect/core/io/Ref/definition").Ref<A_10>, pf: (a: A_10) => import("@tsplus/stdlib/data/Maybe").Maybe<A_10>, __tsplusTrace?: string | undefined): import("../../../Effect").Effect.UIO<void>;
    updateSomeAndGet<A_11>(this: import("@effect/core/io/Ref/definition").Ref<A_11>, pf: (a: A_11) => import("@tsplus/stdlib/data/Maybe").Maybe<A_11>, __tsplusTrace?: string | undefined): import("../../../Effect").Effect.UIO<A_11>;
};
//# sourceMappingURL=AtomicInternal.d.ts.map