/** * @since 2.0.0 */ import * as Effect from "./Effect.ts"; import * as Option from "./Option.ts"; import * as Ref from "./Ref.ts"; import * as Semaphore from "./Semaphore.ts"; declare const TypeId = "~effect/SynchronizedRef"; /** * @since 2.0.0 * @category models */ export interface SynchronizedRef extends Ref.Ref { readonly [TypeId]: typeof TypeId; readonly backing: Ref.Ref; readonly semaphore: Semaphore.Semaphore; } /** * @since 4.0.0 * @category constructors */ export declare const makeUnsafe: (value: A) => SynchronizedRef; /** * @since 2.0.0 * @category constructors */ export declare const make: (value: A) => Effect.Effect>; /** * @since 2.0.0 * @category getters */ export declare const getUnsafe: (self: SynchronizedRef) => A; /** * @since 2.0.0 * @category getters */ export declare const get: (self: SynchronizedRef) => Effect.Effect; /** * @since 2.0.0 * @category utils */ export declare const getAndSet: { /** * @since 2.0.0 * @category utils */ (value: A): (self: SynchronizedRef) => Effect.Effect; /** * @since 2.0.0 * @category utils */ (self: SynchronizedRef, value: A): Effect.Effect; }; /** * @since 2.0.0 * @category utils */ export declare const getAndUpdate: { /** * @since 2.0.0 * @category utils */ (f: (a: A) => A): (self: SynchronizedRef) => Effect.Effect; /** * @since 2.0.0 * @category utils */ (self: SynchronizedRef, f: (a: A) => A): Effect.Effect; }; /** * @since 2.0.0 * @category utils */ export declare const getAndUpdateEffect: { /** * @since 2.0.0 * @category utils */ (f: (a: A) => Effect.Effect): (self: SynchronizedRef) => Effect.Effect; /** * @since 2.0.0 * @category utils */ (self: SynchronizedRef, f: (a: A) => Effect.Effect): Effect.Effect; }; /** * @since 2.0.0 * @category utils */ export declare const getAndUpdateSome: { /** * @since 2.0.0 * @category utils */ (pf: (a: A) => Option.Option): (self: SynchronizedRef) => Effect.Effect; /** * @since 2.0.0 * @category utils */ (self: SynchronizedRef, pf: (a: A) => Option.Option): Effect.Effect; }; /** * @since 2.0.0 * @category utils */ export declare const getAndUpdateSomeEffect: { /** * @since 2.0.0 * @category utils */ (pf: (a: A) => Effect.Effect, E, R>): (self: SynchronizedRef) => Effect.Effect; /** * @since 2.0.0 * @category utils */ (self: SynchronizedRef, pf: (a: A) => Effect.Effect, E, R>): Effect.Effect; }; /** * @since 2.0.0 * @category utils */ export declare const modify: { /** * @since 2.0.0 * @category utils */ (f: (a: A) => readonly [B, A]): (self: SynchronizedRef) => Effect.Effect; /** * @since 2.0.0 * @category utils */ (self: SynchronizedRef, f: (a: A) => readonly [B, A]): Effect.Effect; }; /** * @since 2.0.0 * @category utils */ export declare const modifyEffect: { /** * @since 2.0.0 * @category utils */ (f: (a: A) => Effect.Effect): (self: SynchronizedRef) => Effect.Effect; /** * @since 2.0.0 * @category utils */ (self: SynchronizedRef, f: (a: A) => Effect.Effect): Effect.Effect; }; /** * @since 2.0.0 * @category utils */ export declare const modifySome: { /** * @since 2.0.0 * @category utils */ (pf: (a: A) => readonly [B, Option.Option]): (self: SynchronizedRef) => Effect.Effect; /** * @since 2.0.0 * @category utils */ (self: SynchronizedRef, pf: (a: A) => readonly [B, Option.Option]): Effect.Effect; }; /** * @since 2.0.0 * @category utils */ export declare const modifySomeEffect: { /** * @since 2.0.0 * @category utils */ (fallback: B, pf: (a: A) => Effect.Effect], E, R>): (self: SynchronizedRef) => Effect.Effect; /** * @since 2.0.0 * @category utils */ (self: SynchronizedRef, pf: (a: A) => Effect.Effect], E, R>): Effect.Effect; }; /** * @since 2.0.0 * @category utils */ export declare const set: { /** * @since 2.0.0 * @category utils */ (value: A): (self: SynchronizedRef) => Effect.Effect; /** * @since 2.0.0 * @category utils */ (self: SynchronizedRef, value: A): Effect.Effect; }; /** * @since 2.0.0 * @category utils */ export declare const setAndGet: { /** * @since 2.0.0 * @category utils */ (value: A): (self: SynchronizedRef) => Effect.Effect; /** * @since 2.0.0 * @category utils */ (self: SynchronizedRef, value: A): Effect.Effect; }; /** * @since 2.0.0 * @category utils */ export declare const update: { /** * @since 2.0.0 * @category utils */ (f: (a: A) => A): (self: SynchronizedRef) => Effect.Effect; /** * @since 2.0.0 * @category utils */ (self: SynchronizedRef, f: (a: A) => A): Effect.Effect; }; /** * @since 2.0.0 * @category utils */ export declare const updateEffect: { /** * @since 2.0.0 * @category utils */ (f: (a: A) => Effect.Effect): (self: SynchronizedRef) => Effect.Effect; /** * @since 2.0.0 * @category utils */ (self: SynchronizedRef, f: (a: A) => Effect.Effect): Effect.Effect; }; /** * @since 2.0.0 * @category utils */ export declare const updateAndGet: { /** * @since 2.0.0 * @category utils */ (f: (a: A) => A): (self: SynchronizedRef) => Effect.Effect; /** * @since 2.0.0 * @category utils */ (self: SynchronizedRef, f: (a: A) => A): Effect.Effect; }; /** * @since 2.0.0 * @category utils */ export declare const updateAndGetEffect: { /** * @since 2.0.0 * @category utils */ (f: (a: A) => Effect.Effect): (self: SynchronizedRef) => Effect.Effect; /** * @since 2.0.0 * @category utils */ (self: SynchronizedRef, f: (a: A) => Effect.Effect): Effect.Effect; }; /** * @since 2.0.0 * @category utils */ export declare const updateSome: { /** * @since 2.0.0 * @category utils */ (f: (a: A) => Option.Option): (self: SynchronizedRef) => Effect.Effect; /** * @since 2.0.0 * @category utils */ (self: SynchronizedRef, f: (a: A) => Option.Option): Effect.Effect; }; /** * @since 2.0.0 * @category utils */ export declare const updateSomeEffect: { /** * @since 2.0.0 * @category utils */ (pf: (a: A) => Effect.Effect, E, R>): (self: SynchronizedRef) => Effect.Effect; /** * @since 2.0.0 * @category utils */ (self: SynchronizedRef, pf: (a: A) => Effect.Effect, E, R>): Effect.Effect; }; /** * @since 2.0.0 * @category utils */ export declare const updateSomeAndGet: { /** * @since 2.0.0 * @category utils */ (pf: (a: A) => Option.Option): (self: SynchronizedRef) => Effect.Effect; /** * @since 2.0.0 * @category utils */ (self: SynchronizedRef, pf: (a: A) => Option.Option): Effect.Effect; }; /** * @since 2.0.0 * @category utils */ export declare const updateSomeAndGetEffect: { /** * @since 2.0.0 * @category utils */ (pf: (a: A) => Effect.Effect, E, R>): (self: SynchronizedRef) => Effect.Effect; /** * @since 2.0.0 * @category utils */ (self: SynchronizedRef, pf: (a: A) => Effect.Effect, E, R>): Effect.Effect; }; export {}; //# sourceMappingURL=SynchronizedRef.d.ts.map