import type { Erase } from "@principia/prelude/Utils"; import type * as H from "../../Has"; import type { Cause } from "../Exit/Cause"; import type { Managed } from "../Managed/model"; import type { Finalizer } from "../Managed/ReleaseMap"; import * as XRM from "../XRefM"; import * as M from "./_internal/managed"; import * as T from "./_internal/task"; import type { Layer, MergeA, MergeE, MergeR } from "./model"; import { LayerManagedInstruction } from "./model"; export * from "./model"; export declare type RIO = Layer; export declare const _build: ( layer: Layer ) => Managed Managed>; export declare const build: (_: Layer) => Managed; export declare const pure: (has: H.Tag) => (resource: T) => LayerManagedInstruction>; export declare const prepare: ( has: H.Tag ) => ( acquire: T.Task ) => { open: ( open: (_: A) => T.Task ) => { release: (release: (_: A) => T.Task) => Layer>; }; release: (release: (_: A) => T.Task) => Layer>; }; export declare const create: ( has: H.Tag ) => { fromTask: (resource: T.Task) => LayerManagedInstruction>; fromManaged: (resource: Managed) => Layer>; pure: (resource: T) => LayerManagedInstruction>; prepare: ( acquire: T.Task ) => { open: ( open: (_: A) => T.Task ) => { release: (release: (_: A) => T.Task) => Layer>; }; release: (release: (_: A) => T.Task) => Layer>; }; }; export declare const fromTask: ( has: H.Tag ) => (resource: T.Task) => LayerManagedInstruction>; export declare const fromManaged: (has: H.Tag) => (resource: Managed) => Layer>; export declare const fromRawManaged: (resource: Managed) => Layer; export declare const fromRawTask: (resource: T.Task) => Layer; export declare const fromRawFunction: (f: (a: A) => B) => Layer; export declare const fromRawFunctionM: (f: (a: A) => T.Task) => Layer; export declare const both_: ( left: Layer, right: Layer ) => Layer; export declare const both: ( right: Layer ) => (left: Layer) => Layer; export declare const and_: ( left: Layer, right: Layer ) => Layer; export declare const and: ( right: Layer ) => (left: Layer) => Layer; export declare const fold_: ( layer: Layer, onFailure: Layer], E1, B>, onSuccess: Layer ) => Layer; export declare const andTo: { (right: Layer, noErase: "no-erase"): ( left: Layer ) => Layer; (right: Layer): (left: Layer) => Layer & R1, E | E1, A & A1>; }; export declare const andTo_: { (left: Layer, right: Layer, noErase: "no-erase"): Layer< R & R1, E | E1, A & A1 >; (left: Layer, right: Layer): Layer & R1, E | E1, A & A1>; }; export declare const to: ( to: Layer ) => (layer: Layer) => Layer & R2, E | E2, A>; export declare const to_: ( layer: Layer, to: Layer ) => Layer & R2, E | E2, A>; export declare const andSeq_: ( layer: Layer, that: Layer ) => Layer; export declare const andSeq: ( that: Layer ) => (layer: Layer) => Layer; export declare const all: []>( ...ls: Ls & { 0: Layer; } ) => Layer< import("../../../../prelude/dist/Utils").UnionToIntersection< { [k in keyof Ls]: [Ls[k]] extends [Layer] ? (unknown extends X ? never : X) : never }[number] >, MergeE, import("../../../../prelude/dist/Utils").UnionToIntersection< { [k_1 in keyof Ls]: [Ls[k_1]] extends [Layer] ? unknown extends X_1 ? never : X_1 : never; }[number] > >; export declare const allPar: []>( ...ls: Ls & { 0: Layer; } ) => Layer< import("../../../../prelude/dist/Utils").UnionToIntersection< { [k in keyof Ls]: [Ls[k]] extends [Layer] ? (unknown extends X ? never : X) : never }[number] >, MergeE, import("../../../../prelude/dist/Utils").UnionToIntersection< { [k_1 in keyof Ls]: [Ls[k_1]] extends [Layer] ? unknown extends X_1 ? never : X_1 : never; }[number] > >; /** * A `MemoMap` memoizes dependencies. */ export declare class MemoMap { readonly ref: XRM.RefM, Finalizer]>>; constructor(ref: XRM.RefM, Finalizer]>>); /** * Checks the memo map to see if a dependency exists. If it is, immediately * returns it. Otherwise, obtains the dependency, stores it in the memo map, * and adds a finalizer to the outer `Managed`. */ getOrElseMemoize: (layer: Layer) => Managed; } export declare const HasMemoMap: H.Tag; export declare type HasMemoMap = H.HasTag; export declare function makeMemoMap(): T.Task; //# sourceMappingURL=core.d.ts.map