/** * @since 2.0.0 */ import type * as Effect from "./Effect.js"; import type * as Option from "./Option.js"; import type * as Ref from "./Ref.js"; import type * as Types from "./Types.js"; import type * as Unify from "./Unify.js"; /** * @since 2.0.0 * @category symbols */ export declare const SynchronizedRefTypeId: unique symbol; /** * @since 2.0.0 * @category symbols */ export type SynchronizedRefTypeId = typeof SynchronizedRefTypeId; /** * @since 2.0.0 * @category models */ export interface SynchronizedRef extends SynchronizedRef.Variance, Ref.Ref { modifyEffect(f: (a: A) => Effect.Effect): Effect.Effect; readonly [Unify.typeSymbol]?: unknown; readonly [Unify.unifySymbol]?: SynchronizedRefUnify; readonly [Unify.ignoreSymbol]?: SynchronizedRefUnifyIgnore; } /** * @category models * @since 3.8.0 */ export interface SynchronizedRefUnify extends Ref.RefUnify { SynchronizedRef?: () => Extract>; } /** * @category models * @since 3.8.0 */ export interface SynchronizedRefUnifyIgnore extends Ref.RefUnifyIgnore { Ref?: true; } /** * @since 2.0.0 */ export declare namespace SynchronizedRef { /** * @since 2.0.0 * @category models */ interface Variance { readonly [SynchronizedRefTypeId]: { readonly _A: Types.Invariant; }; } } /** * @since 2.0.0 * @category constructors */ export declare const make: (value: A) => Effect.Effect>; /** * @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: Ref.Ref) => Effect.Effect; /** * @since 2.0.0 * @category utils */ (self: Ref.Ref, 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: Ref.Ref) => Effect.Effect; /** * @since 2.0.0 * @category utils */ (self: Ref.Ref, 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: Ref.Ref) => Effect.Effect; /** * @since 2.0.0 * @category utils */ (self: Ref.Ref, 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) => 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 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 */ (fallback: B, pf: (a: A) => Option.Option): (self: Ref.Ref) => Effect.Effect; /** * @since 2.0.0 * @category utils */ (self: Ref.Ref, fallback: B, pf: (a: A) => 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) => Option.Option>): (self: SynchronizedRef) => Effect.Effect; /** * @since 2.0.0 * @category utils */ (self: SynchronizedRef, fallback: B, pf: (a: A) => Option.Option>): Effect.Effect; }; /** * @since 2.0.0 * @category utils */ export declare const set: { /** * @since 2.0.0 * @category utils */ (value: A): (self: Ref.Ref) => Effect.Effect; /** * @since 2.0.0 * @category utils */ (self: Ref.Ref, value: A): Effect.Effect; }; /** * @since 2.0.0 * @category utils */ export declare const setAndGet: { /** * @since 2.0.0 * @category utils */ (value: A): (self: Ref.Ref) => Effect.Effect; /** * @since 2.0.0 * @category utils */ (self: Ref.Ref, 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: Ref.Ref) => Effect.Effect; /** * @since 2.0.0 * @category utils */ (self: Ref.Ref, 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: Ref.Ref) => Effect.Effect; /** * @since 2.0.0 * @category utils */ (self: Ref.Ref, 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: Ref.Ref) => Effect.Effect; /** * @since 2.0.0 * @category utils */ (self: Ref.Ref, 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) => 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 updateSomeAndGet: { /** * @since 2.0.0 * @category utils */ (pf: (a: A) => Option.Option): (self: Ref.Ref) => Effect.Effect; /** * @since 2.0.0 * @category utils */ (self: Ref.Ref, 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) => 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 unsafe */ export declare const unsafeMake: (value: A) => SynchronizedRef; //# sourceMappingURL=SynchronizedRef.d.ts.map