import "../../Operator/index.js"; import { _A, _E, _R } from "@effect-ts/system/Effect"; import { AtomicReference } from "@effect-ts/system/Support/AtomicReference"; import type { Has, Tag } from "../../Has/index.js"; import type { Erase, UnionToIntersection } from "../../Utils/index.js"; import * as Sy from "../_internal/index.js"; export declare abstract class SyncLayer { readonly hash: AtomicReference; readonly [_R]: (_: R) => void; readonly [_E]: () => E; readonly [_A]: () => A; setKey(key: symbol): this; ["+++"](that: SyncLayer): SyncLayer; ["<<<"](that: SyncLayer): SyncLayer & R2, E | E2, A>; [">>>"](that: SyncLayer): SyncLayer & R, E | E2, A2>; ["<+<"](that: SyncLayer): SyncLayer & R2, E | E2, A & A2>; [">+>"](that: SyncLayer): SyncLayer & R, E | E2, A & A2>; abstract scope(): Sy.Sync Sy.Sync>; build(): Sy.Sync; } export declare class Of extends SyncLayer { readonly sync: Sy.Sync; readonly _tag = "FromSync"; constructor(sync: Sy.Sync); scope(): Sy.Sync Sy.Sync>; } export declare class Fresh extends SyncLayer { readonly sync: SyncLayer; readonly _tag = "Fresh"; constructor(sync: SyncLayer); scope(): Sy.Sync Sy.Sync>; } export declare class Suspended extends SyncLayer { readonly sync: () => SyncLayer; readonly _tag = "Suspended"; constructor(sync: () => SyncLayer); scope(): Sy.Sync Sy.Sync>; } export declare class Both extends SyncLayer { readonly left: SyncLayer; readonly right: SyncLayer; readonly _tag = "Both"; constructor(left: SyncLayer, right: SyncLayer); scopeBoth(self: Both): Sy.Sync Sy.Sync>; scope(): Sy.Sync Sy.Sync>; } export declare class Using extends SyncLayer, E | E2, A & A2> { readonly left: SyncLayer; readonly right: SyncLayer; readonly _tag = "Using"; constructor(left: SyncLayer, right: SyncLayer); scope(): Sy.Sync Sy.Sync, E | E2, A & A2>>; } export declare class From extends SyncLayer, E | E2, A2> { readonly left: SyncLayer; readonly right: SyncLayer; readonly _tag = "From"; constructor(left: SyncLayer, right: SyncLayer); scope(): Sy.Sync Sy.Sync, E | E2, A2>>; } export declare class All[]> extends SyncLayer, MergeE, MergeA> { readonly layers: Layers & { 0: SyncLayer; }; readonly _tag = "All"; constructor(layers: Layers & { 0: SyncLayer; }); scope(): Sy.Sync Sy.Sync, MergeE, MergeA>>; } export declare type MergeR[]> = UnionToIntersection<{ [k in keyof Ls]: [Ls[k]] extends [SyncLayer] ? unknown extends X ? never : X : never; }[number]>; export declare type MergeE[]> = { [k in keyof Ls]: [Ls[k]] extends [SyncLayer] ? X : never; }[number]; export declare type MergeA[]> = UnionToIntersection<{ [k in keyof Ls]: [Ls[k]] extends [SyncLayer] ? unknown extends X ? never : X : never; }[number]>; export declare type SyncMemoMap = Map; export declare function getMemoOrElseCreate(layer: SyncLayer): (m: SyncMemoMap) => Sy.Sync; export declare function fromRawSync(_: Sy.Sync): SyncLayer; export declare function fresh(layer: SyncLayer): Fresh; export declare function suspended(layer: () => SyncLayer): Suspended; export declare function fromSync(tag: Tag): (_: Sy.Sync) => SyncLayer>; export declare function fromFunction(tag: Tag): (_: (_: R) => T) => SyncLayer>; export declare function fromValue(tag: Tag): (_: T) => SyncLayer>; export declare function and(left: SyncLayer): (right: SyncLayer) => SyncLayer; export declare function andTo(left: SyncLayer): (right: SyncLayer) => SyncLayer, E2 | E, A & A2>; export declare function to(left: SyncLayer): (right: SyncLayer) => SyncLayer, E2 | E, A2>; export declare function using(left: SyncLayer): (right: SyncLayer) => SyncLayer & R2, E2 | E, A & A2>; export declare function from(left: SyncLayer): (right: SyncLayer) => SyncLayer & R2, E2 | E, A>; export declare function provideSyncLayer(layer: SyncLayer): (_: Sy.Sync) => Sy.Sync; export declare function all[]>(...ls: Ls & { 0: SyncLayer; }): SyncLayer, MergeE, MergeA>; //# sourceMappingURL=index.d.ts.map