import { Ref } from "@effect/io/Ref"; import { Chunk } from "@fp-ts/data/Chunk"; import { Effect } from "@effect/io/Effect"; import { Tag } from "@fp-ts/data/Context"; import { Either } from "@fp-ts/data/Either"; import type { ServiceTagged } from "../service.js"; declare const S1: unique symbol; declare const S2: unique symbol; declare const W: unique symbol; /** * @tsplus type PureEnv */ export interface PureState { readonly [S1]: (_: S) => void; readonly [S2]: () => S2; readonly state: Ref; } /** * @tsplus type PureEnv */ export interface PureLog { readonly [W]: () => W; readonly log: Ref>; } /** * @tsplus type PureEnv */ export interface PureEnv extends PureState, PureLog { } export interface PureEnvTest extends PureState, PureLog { } export declare function makePureEnv(s: S2): PureEnv; /** * @tsplus unify PureEnv */ export declare function unifyPureEnv>(self: X): PureEnv<[ X ] extends [{ [W]: () => infer W; }] ? W : never, [ X ] extends [{ [S1]: (_: infer S) => void; }] ? S : never, [ X ] extends [{ [S2]: () => infer S2; }] ? S2 : never>; /** * @tsplus type Pure */ export type Pure = Effect | R, E, A>; /** * @tsplus static Pure.Ops GMUA_ * @tsplus location "@effect-ts-app/boilerplate-prelude/_ext/Pure" */ export declare function GMUA_(get: Pure, modify: (i: GA) => Pure, update: (i: GA) => Pure): Pure; /** * @tsplus static Pure.Ops GMUA * @tsplus location "@effect-ts-app/boilerplate-prelude/_ext/Pure" */ export declare function GMUA(modify: (i: GA) => Pure): (get: Pure, update: (i: GA) => Pure) => Pure; /** * @tsplus static Pure.Ops GMU_ * @tsplus location "@effect-ts-app/boilerplate-prelude/_ext/Pure" */ export declare function GMU_(get: Pure, modify: (i: GA) => Pure, update: (i: GA) => Pure): Pure; /** * @tsplus static Pure.Ops GMU * @tsplus location "@effect-ts-app/boilerplate-prelude/_ext/Pure" */ export declare function GMU(modify: (i: GA) => Pure): (get: Pure, update: (i: GA) => Pure) => Pure; export declare const PureEnvEnv: unique symbol; export interface PureEnvEnv extends ServiceTagged { env: PureEnv; } /** * @tsplus static Pure.Ops get * @tsplus location "@effect-ts-app/boilerplate-prelude/_ext/Pure" */ export declare function get(): Pure; /** * @tsplus static Pure.Ops set * @tsplus location "@effect-ts-app/boilerplate-prelude/_ext/Pure" */ export declare function set(s: S): Pure; export type PureLogT = Pure; /** * @tsplus static Pure.Ops log * @tsplus location "@effect-ts-app/boilerplate-prelude/_ext/Pure" */ export declare function log(w: W): PureLogT; /** * @tsplus static Pure.Ops logMany * @tsplus location "@effect-ts-app/boilerplate-prelude/_ext/Pure" */ export declare function logMany(w: Iterable): PureLogT; /** * @tsplus static Pure.Ops runAll * @tsplus fluent effect/io/Effect runAll * @tsplus location "@effect-ts-app/boilerplate-prelude/_ext/Pure" */ export declare function runAll(self: Effect, E, A>, s: S4): Effect; }>, never, readonly [Chunk, Either]>; /** * @tsplus static Pure.Ops runResult * @tsplus fluent effect/io/Effect runResult * @tsplus location "@effect-ts-app/boilerplate-prelude/_ext/Pure" */ export declare function runResult(self: Effect, E, A>, s: S4): import("@effect/io/Effect").Effect; }>, never, readonly [import("@fp-ts/data/Chunk").Chunk, import("@fp-ts/data/Either").Either]>; /** * @tsplus static Pure.Ops runTerm * @tsplus fluent effect/io/Effect runTerm * @tsplus location "@effect-ts-app/boilerplate-prelude/_ext/Pure" */ export declare function runTerm(self: Effect, E, A>, s: S4): import("@effect/io/Effect").Effect; }>, E, readonly [S3, readonly W3[], A]>; /** * @tsplus static Pure.Ops runTermDiscard * @tsplus fluent effect/io/Effect runTermDiscard * @tsplus location "@effect-ts-app/boilerplate-prelude/_ext/Pure" */ export declare function runTermDiscard(self: Effect, E, A>, s: S4): import("@effect/io/Effect").Effect; }>, E, readonly [S3, readonly W3[]]>; /** * @tsplus static Pure.Ops runA * @tsplus fluent effect/io/Effect runA * @tsplus location "@effect-ts-app/boilerplate-prelude/_ext/Pure" */ export declare function runA(self: Effect, E, A>, s: S4): import("@effect/io/Effect").Effect; }>, never, readonly [import("@fp-ts/data/Chunk").Chunk, import("@fp-ts/data/Either").Either]>; /** * @tsplus static Pure.Ops modifyWith * @tsplus location "@effect-ts-app/boilerplate-prelude/_ext/Pure" */ export declare function modify(mod: (s: S2) => readonly [S3, A]): Effect<{ env: PureEnv; }, never, A>; /** * @tsplus static Pure.Ops modifyWithEffect * @tsplus location "@effect-ts-app/boilerplate-prelude/_ext/Pure" */ export declare function modifyM(mod: (s: S2) => Effect, E, readonly [S3, A]>): Effect, E, A>; /** * @tsplus static Pure.Ops updateWith * @tsplus location "@effect-ts-app/boilerplate-prelude/_ext/Pure" */ export declare function update(upd: (s: S2) => S3): import("@effect/io/Effect").Effect<{ env: PureEnv; }, never, S3>; export type FixEnv = Exclude> | PureEnvEnv; /** * @tsplus static Pure.Ops updateWithEffect * @tsplus location "@effect-ts-app/boilerplate-prelude/_ext/Pure" */ export declare function updateM(upd: (s: S2, log: (evt: W) => PureLogT) => Effect, E, S3>): Effect, E, S3>; /** * @tsplus type Pure.Ops */ export interface PureOps { $: PureAspects; } /** * @tsplus type Pure.Aspects */ export interface PureAspects { } export declare const Pure: PureOps; export {}; //# sourceMappingURL=Pure.d.ts.map