import { Ref } from "@effect/core/io/Ref/definition";
import { TSemaphore } from "@effect/core/stm/TSemaphore/definition";
import { Effect } from "@effect/core/io/Effect";
import { _A, RefSym, SynchronizedSym } from "@effect/core/io/Ref/definition";
import type { Maybe } from "@tsplus/stdlib/data/Maybe";
export declare class SynchronizedInternal implements Ref.Synchronized {
readonly ref: Ref;
readonly semaphore: TSemaphore;
get [RefSym](): RefSym;
get [SynchronizedSym](): SynchronizedSym;
get [_A](): (_: never) => A;
constructor(ref: Ref, semaphore: TSemaphore);
modifyEffect(this: this, f: (a: A) => Effect): Effect;
getAndUpdateEffect(this: this, f: (a: A) => Effect): Effect;
getAndUpdateSomeEffect(this: this, pf: (a: A) => Maybe>): Effect;
modifySomeEffect(this: this, fallback: B, pf: (a: A) => Maybe>): Effect;
updateEffect(this: this, f: (a: A) => Effect): Effect;
updateAndGetEffect(this: this, f: (a: A) => Effect): Effect;
updateSomeEffect(this: this, pf: (a: A) => Maybe>): Effect;
updateSomeAndGetEffect(this: this, pf: (a: A) => Maybe>): Effect;
get get(): Effect;
modify(this: this, f: (a: A) => readonly [B, A]): Effect;
set(this: this, a: A): Effect;
getAndSet(this: this, a: A): Effect;
getAndUpdate(this: this, f: (a: A) => A): Effect;
getAndUpdateSome(this: this, pf: (a: A) => Maybe): Effect;
modifySome(this: this, fallback: B, pf: (a: A) => Maybe): Effect;
update(this: this, f: (a: A) => A): Effect;
updateAndGet(this: this, f: (a: A) => A): Effect;
updateSome(this: this, pf: (a: A) => Maybe): Effect;
updateSomeAndGet(this: this, pf: (a: A) => Maybe): Effect;
}
//# sourceMappingURL=SynchronizedInternal.d.ts.map