/** * A `Layer` describes how to build one or more services in your * application. Services can be injected into effects via * `Effect.provideService`. Effects can require services via `Effect.service`. * * Layer can be thought of as recipes for producing bundles of services, given * their dependencies (other services). * * Construction of services can be effectful and utilize resources that must be * acquired and safely released when the services are done being utilized. * * By default layers are shared, meaning that if the same layer is used twice * the layer will only be allocated a single time. * * Because of their excellent composition properties, layers are the idiomatic * way in Effect-TS to create services that depend on other services. * * @since 2.0.0 */ import type * as Cause from "./Cause.js"; import type * as Clock from "./Clock.js"; import type { ConfigProvider } from "./ConfigProvider.js"; import * as Context from "./Context.js"; import type * as Effect from "./Effect.js"; import type * as Exit from "./Exit.js"; import type { FiberRef } from "./FiberRef.js"; import { type LazyArg } from "./Function.js"; import type { LogLevel } from "./LogLevel.js"; import type * as Option from "./Option.js"; import type { Pipeable } from "./Pipeable.js"; import type * as Random from "./Random.js"; import type * as Request from "./Request.js"; import type * as Runtime from "./Runtime.js"; import type * as Schedule from "./Schedule.js"; import * as Scheduler from "./Scheduler.js"; import type * as Scope from "./Scope.js"; import type * as Tracer from "./Tracer.js"; import type * as Types from "./Types.js"; /** * @since 2.0.0 * @category symbols */ export declare const LayerTypeId: unique symbol; /** * @since 2.0.0 * @category symbols */ export type LayerTypeId = typeof LayerTypeId; /** * @since 2.0.0 * @category models */ export interface Layer extends Layer.Variance, Pipeable { } /** * @since 2.0.0 */ export declare namespace Layer { /** * @since 2.0.0 * @category models */ interface Variance { readonly [LayerTypeId]: { readonly _ROut: Types.Contravariant; readonly _E: Types.Covariant; readonly _RIn: Types.Covariant; }; } /** * @since 3.9.0 * @category type-level */ interface Any { readonly [LayerTypeId]: { readonly _ROut: Types.Contravariant; readonly _E: Types.Covariant; readonly _RIn: Types.Covariant; }; } /** * @since 2.0.0 * @category type-level */ type Context = [T] extends [Layer] ? _RIn : never; /** * @since 2.0.0 * @category type-level */ type Error = [T] extends [Layer] ? _E : never; /** * @since 2.0.0 * @category type-level */ type Success = [T] extends [Layer] ? _ROut : never; } /** * @since 2.0.0 * @category symbols */ export declare const MemoMapTypeId: unique symbol; /** * @since 2.0.0 * @category symbols */ export type MemoMapTypeId = typeof MemoMapTypeId; /** * @since 2.0.0 * @category models */ export interface MemoMap { readonly [MemoMapTypeId]: MemoMapTypeId; } /** * @since 3.13.0 * @category models */ export interface CurrentMemoMap { readonly _: unique symbol; } /** * @since 3.13.0 * @category models */ export declare const CurrentMemoMap: Context.Reference; /** * Returns `true` if the specified value is a `Layer`, `false` otherwise. * * @since 2.0.0 * @category getters */ export declare const isLayer: (u: unknown) => u is Layer; /** * Returns `true` if the specified `Layer` is a fresh version that will not be * shared, `false` otherwise. * * @since 2.0.0 * @category getters */ export declare const isFresh: (self: Layer) => boolean; /** * @since 3.3.0 * @category tracing */ export declare const annotateLogs: { /** * @since 3.3.0 * @category tracing */ (key: string, value: unknown): (self: Layer) => Layer; /** * @since 3.3.0 * @category tracing */ (values: Record): (self: Layer) => Layer; /** * @since 3.3.0 * @category tracing */ (self: Layer, key: string, value: unknown): Layer; /** * @since 3.3.0 * @category tracing */ (self: Layer, values: Record): Layer; }; /** * @since 3.3.0 * @category tracing */ export declare const annotateSpans: { /** * @since 3.3.0 * @category tracing */ (key: string, value: unknown): (self: Layer) => Layer; /** * @since 3.3.0 * @category tracing */ (values: Record): (self: Layer) => Layer; /** * @since 3.3.0 * @category tracing */ (self: Layer, key: string, value: unknown): Layer; /** * @since 3.3.0 * @category tracing */ (self: Layer, values: Record): Layer; }; /** * Builds a layer into a scoped value. * * @since 2.0.0 * @category destructors */ export declare const build: (self: Layer) => Effect.Effect, E, Scope.Scope | RIn>; /** * Builds a layer into an `Effect` value. Any resources associated with this * layer will be released when the specified scope is closed unless their scope * has been extended. This allows building layers where the lifetime of some of * the services output by the layer exceed the lifetime of the effect the * layer is provided to. * * @since 2.0.0 * @category destructors */ export declare const buildWithScope: { /** * Builds a layer into an `Effect` value. Any resources associated with this * layer will be released when the specified scope is closed unless their scope * has been extended. This allows building layers where the lifetime of some of * the services output by the layer exceed the lifetime of the effect the * layer is provided to. * * @since 2.0.0 * @category destructors */ (scope: Scope.Scope): (self: Layer) => Effect.Effect, E, RIn>; /** * Builds a layer into an `Effect` value. Any resources associated with this * layer will be released when the specified scope is closed unless their scope * has been extended. This allows building layers where the lifetime of some of * the services output by the layer exceed the lifetime of the effect the * layer is provided to. * * @since 2.0.0 * @category destructors */ (self: Layer, scope: Scope.Scope): Effect.Effect, E, RIn>; }; /** * Recovers from all errors. * * @since 2.0.0 * @category error handling */ export declare const catchAll: { /** * Recovers from all errors. * * @since 2.0.0 * @category error handling */ (onError: (error: E) => Layer): (self: Layer) => Layer; /** * Recovers from all errors. * * @since 2.0.0 * @category error handling */ (self: Layer, onError: (error: E) => Layer): Layer; }; /** * Recovers from all errors. * * @since 2.0.0 * @category error handling */ export declare const catchAllCause: { /** * Recovers from all errors. * * @since 2.0.0 * @category error handling */ (onError: (cause: Cause.Cause) => Layer): (self: Layer) => Layer; /** * Recovers from all errors. * * @since 2.0.0 * @category error handling */ (self: Layer, onError: (cause: Cause.Cause) => Layer): Layer; }; /** * Constructs a `Layer` that passes along the specified context as an * output. * * @since 2.0.0 * @category constructors */ export declare const context: () => Layer; /** * Constructs a layer that dies with the specified defect. * * @since 2.0.0 * @category constructors */ export declare const die: (defect: unknown) => Layer; /** * Constructs a layer that dies with the specified defect. * * @since 2.0.0 * @category constructors */ export declare const dieSync: (evaluate: LazyArg) => Layer; /** * Replaces the layer's output with `never` and includes the layer only for its * side-effects. * * @since 2.0.0 * @category mapping */ export declare const discard: (self: Layer) => Layer; /** * Constructs a layer from the specified effect. * * @since 2.0.0 * @category constructors */ export declare const effect: { /** * Constructs a layer from the specified effect. * * @since 2.0.0 * @category constructors */ (tag: Context.Tag): (effect: Effect.Effect, E, R>) => Layer; /** * Constructs a layer from the specified effect. * * @since 2.0.0 * @category constructors */ (tag: Context.Tag, effect: Effect.Effect, E, R>): Layer; }; /** * Constructs a layer from the specified effect, discarding its output. * * @since 2.0.0 * @category constructors */ export declare const effectDiscard: (effect: Effect.Effect) => Layer; /** * Constructs a layer from the specified effect, which must return one or more * services. * * @since 2.0.0 * @category constructors */ export declare const effectContext: (effect: Effect.Effect, E, R>) => Layer; /** * A Layer that constructs an empty Context. * * @since 2.0.0 * @category constructors */ export declare const empty: Layer; /** * Extends the scope of this layer, returning a new layer that when provided * to an effect will not immediately release its associated resources when * that effect completes execution but instead when the scope the resulting * effect depends on is closed. * * @since 2.0.0 * @category utils */ export declare const extendScope: (self: Layer) => Layer; /** * Constructs a layer that fails with the specified error. * * @since 2.0.0 * @category constructors */ export declare const fail: (error: E) => Layer; /** * Constructs a layer that fails with the specified error. * * @since 2.0.0 * @category constructors */ export declare const failSync: (evaluate: LazyArg) => Layer; /** * Constructs a layer that fails with the specified cause. * * @since 2.0.0 * @category constructors */ export declare const failCause: (cause: Cause.Cause) => Layer; /** * Constructs a layer that fails with the specified cause. * * @since 2.0.0 * @category constructors */ export declare const failCauseSync: (evaluate: LazyArg>) => Layer; /** * Constructs a layer dynamically based on the output of this layer. * * @since 2.0.0 * @category sequencing */ export declare const flatMap: { /** * Constructs a layer dynamically based on the output of this layer. * * @since 2.0.0 * @category sequencing */ (f: (context: Context.Context) => Layer): (self: Layer) => Layer; /** * Constructs a layer dynamically based on the output of this layer. * * @since 2.0.0 * @category sequencing */ (self: Layer, f: (context: Context.Context) => Layer): Layer; }; /** * Flattens layers nested in the context of an effect. * * @since 2.0.0 * @category sequencing */ export declare const flatten: { /** * Flattens layers nested in the context of an effect. * * @since 2.0.0 * @category sequencing */ (tag: Context.Tag>): (self: Layer) => Layer; /** * Flattens layers nested in the context of an effect. * * @since 2.0.0 * @category sequencing */ (self: Layer, tag: Context.Tag>): Layer; }; /** * Creates a fresh version of this layer that will not be shared. * * @since 2.0.0 * @category utils */ export declare const fresh: (self: Layer) => Layer; declare const fromFunction: (tagA: Context.Tag, tagB: Context.Tag, f: (a: Types.NoInfer) => Types.NoInfer) => Layer; export { /** * Constructs a layer from the context using the specified function. * * @since 2.0.0 * @category constructors */ fromFunction as function }; /** * Builds this layer and uses it until it is interrupted. This is useful when * your entire application is a layer, such as an HTTP server. * * @since 2.0.0 * @category conversions */ export declare const launch: (self: Layer) => Effect.Effect; /** * Returns a new layer whose output is mapped by the specified function. * * @since 2.0.0 * @category mapping */ export declare const map: { /** * Returns a new layer whose output is mapped by the specified function. * * @since 2.0.0 * @category mapping */ (f: (context: Context.Context) => Context.Context): (self: Layer) => Layer; /** * Returns a new layer whose output is mapped by the specified function. * * @since 2.0.0 * @category mapping */ (self: Layer, f: (context: Context.Context) => Context.Context): Layer; }; /** * Returns a layer with its error channel mapped using the specified function. * * @since 2.0.0 * @category mapping */ export declare const mapError: { /** * Returns a layer with its error channel mapped using the specified function. * * @since 2.0.0 * @category mapping */ (f: (error: E) => E2): (self: Layer) => Layer; /** * Returns a layer with its error channel mapped using the specified function. * * @since 2.0.0 * @category mapping */ (self: Layer, f: (error: E) => E2): Layer; }; /** * Feeds the error or output services of this layer into the input of either * the specified `failure` or `success` layers, resulting in a new layer with * the inputs of this layer, and the error or outputs of the specified layer. * * @since 2.0.0 * @category folding */ export declare const match: { /** * Feeds the error or output services of this layer into the input of either * the specified `failure` or `success` layers, resulting in a new layer with * the inputs of this layer, and the error or outputs of the specified layer. * * @since 2.0.0 * @category folding */ (options: { readonly onFailure: (error: E) => Layer; readonly onSuccess: (context: Context.Context) => Layer; }): (self: Layer) => Layer; /** * Feeds the error or output services of this layer into the input of either * the specified `failure` or `success` layers, resulting in a new layer with * the inputs of this layer, and the error or outputs of the specified layer. * * @since 2.0.0 * @category folding */ (self: Layer, options: { readonly onFailure: (error: E) => Layer; readonly onSuccess: (context: Context.Context) => Layer; }): Layer; }; /** * Feeds the error or output services of this layer into the input of either * the specified `failure` or `success` layers, resulting in a new layer with * the inputs of this layer, and the error or outputs of the specified layer. * * @since 2.0.0 * @category folding */ export declare const matchCause: { /** * Feeds the error or output services of this layer into the input of either * the specified `failure` or `success` layers, resulting in a new layer with * the inputs of this layer, and the error or outputs of the specified layer. * * @since 2.0.0 * @category folding */ (options: { readonly onFailure: (cause: Cause.Cause) => Layer; readonly onSuccess: (context: Context.Context) => Layer; }): (self: Layer) => Layer; /** * Feeds the error or output services of this layer into the input of either * the specified `failure` or `success` layers, resulting in a new layer with * the inputs of this layer, and the error or outputs of the specified layer. * * @since 2.0.0 * @category folding */ (self: Layer, options: { readonly onFailure: (cause: Cause.Cause) => Layer; readonly onSuccess: (context: Context.Context) => Layer; }): Layer; }; /** * Returns a scoped effect that, if evaluated, will return the lazily computed * result of this layer. * * @since 2.0.0 * @category utils */ export declare const memoize: (self: Layer) => Effect.Effect, never, Scope.Scope>; /** * Merges this layer with the specified layer concurrently, producing a new layer with combined input and output types. * * @since 2.0.0 * @category zipping */ export declare const merge: { /** * Merges this layer with the specified layer concurrently, producing a new layer with combined input and output types. * * @since 2.0.0 * @category zipping */ (that: Layer): (self: Layer) => Layer; /** * Merges this layer with the specified layer concurrently, producing a new layer with combined input and output types. * * @since 2.0.0 * @category zipping */ (self: Layer, that: Layer): Layer; }; /** * Combines all the provided layers concurrently, creating a new layer with merged input, error, and output types. * * @since 2.0.0 * @category zipping */ export declare const mergeAll: , ...Array>]>(...layers: Layers) => Layer<{ [k in keyof Layers]: Layer.Success; }[number], { [k in keyof Layers]: Layer.Error; }[number], { [k in keyof Layers]: Layer.Context; }[number]>; /** * Translates effect failure into death of the fiber, making all failures * unchecked and not a part of the type of the layer. * * @since 2.0.0 * @category error handling */ export declare const orDie: (self: Layer) => Layer; /** * Executes this layer and returns its output, if it succeeds, but otherwise * executes the specified layer. * * @since 2.0.0 * @category error handling */ export declare const orElse: { /** * Executes this layer and returns its output, if it succeeds, but otherwise * executes the specified layer. * * @since 2.0.0 * @category error handling */ (that: LazyArg>): (self: Layer) => Layer; /** * Executes this layer and returns its output, if it succeeds, but otherwise * executes the specified layer. * * @since 2.0.0 * @category error handling */ (self: Layer, that: LazyArg>): Layer; }; /** * Returns a new layer that produces the outputs of this layer but also * passes through the inputs. * * @since 2.0.0 * @category utils */ export declare const passthrough: (self: Layer) => Layer; /** * Projects out part of one of the services output by this layer using the * specified function. * * @since 2.0.0 * @category utils */ export declare const project: { /** * Projects out part of one of the services output by this layer using the * specified function. * * @since 2.0.0 * @category utils */ (tagA: Context.Tag, tagB: Context.Tag, f: (a: Types.NoInfer) => Types.NoInfer): (self: Layer) => Layer; /** * Projects out part of one of the services output by this layer using the * specified function. * * @since 2.0.0 * @category utils */ (self: Layer, tagA: Context.Tag, tagB: Context.Tag, f: (a: Types.NoInfer) => Types.NoInfer): Layer; }; /** * @since 2.0.0 * @category utils */ export declare const locallyEffect: { /** * @since 2.0.0 * @category utils */ (f: (_: Effect.Effect>) => Effect.Effect>): (self: Layer) => Layer; /** * @since 2.0.0 * @category utils */ (self: Layer, f: (_: Effect.Effect>) => Effect.Effect>): Layer; }; /** * @since 2.0.0 * @category utils */ export declare const locally: { /** * @since 2.0.0 * @category utils */ (ref: FiberRef, value: X): (self: Layer) => Layer; /** * @since 2.0.0 * @category utils */ (self: Layer, ref: FiberRef, value: X): Layer; }; /** * @since 2.0.0 * @category utils */ export declare const locallyWith: { /** * @since 2.0.0 * @category utils */ (ref: FiberRef, value: (_: X) => X): (self: Layer) => Layer; /** * @since 2.0.0 * @category utils */ (self: Layer, ref: FiberRef, value: (_: X) => X): Layer; }; /** * @since 2.0.0 * @category utils */ export declare const locallyScoped: (self: FiberRef, value: A) => Layer; /** * @since 2.0.0 * @category utils */ export declare const fiberRefLocallyScopedWith: (self: FiberRef, value: (_: A) => A) => Layer; /** * Retries constructing this layer according to the specified schedule. * * @since 2.0.0 * @category retrying */ export declare const retry: { /** * Retries constructing this layer according to the specified schedule. * * @since 2.0.0 * @category retrying */ (schedule: Schedule.Schedule, RIn2>): (self: Layer) => Layer; /** * Retries constructing this layer according to the specified schedule. * * @since 2.0.0 * @category retrying */ (self: Layer, schedule: Schedule.Schedule): Layer; }; /** * A layer that constructs a scope and closes it when the workflow the layer * is provided to completes execution, whether by success, failure, or * interruption. This can be used to close a scope when providing a layer to a * workflow. * * @since 2.0.0 * @category constructors */ export declare const scope: Layer; /** * Constructs a layer from the specified scoped effect. * * @since 2.0.0 * @category constructors */ export declare const scoped: { /** * Constructs a layer from the specified scoped effect. * * @since 2.0.0 * @category constructors */ (tag: Context.Tag): (effect: Effect.Effect, E, R>) => Layer>; /** * Constructs a layer from the specified scoped effect. * * @since 2.0.0 * @category constructors */ (tag: Context.Tag, effect: Effect.Effect, E, R>): Layer>; }; /** * Constructs a layer from the specified scoped effect. * * @since 2.0.0 * @category constructors */ export declare const scopedDiscard: (effect: Effect.Effect) => Layer>; /** * Constructs a layer from the specified scoped effect, which must return one * or more services. * * @since 2.0.0 * @category constructors */ export declare const scopedContext: (effect: Effect.Effect, E, R>) => Layer>; /** * Constructs a layer that accesses and returns the specified service from the * context. * * @since 2.0.0 * @category constructors */ export declare const service: (tag: Context.Tag) => Layer; /** * Constructs a layer from the specified value. * * @since 2.0.0 * @category constructors */ export declare const succeed: { /** * Constructs a layer from the specified value. * * @since 2.0.0 * @category constructors */ (tag: Context.Tag): (resource: Types.NoInfer) => Layer; /** * Constructs a layer from the specified value. * * @since 2.0.0 * @category constructors */ (tag: Context.Tag, resource: Types.NoInfer): Layer; }; /** * Constructs a layer from the specified value, which must return one or more * services. * * @since 2.0.0 * @category constructors */ export declare const succeedContext: (context: Context.Context) => Layer; /** * Lazily constructs a layer. This is useful to avoid infinite recursion when * creating layers that refer to themselves. * * @since 2.0.0 * @category constructors */ export declare const suspend: (evaluate: LazyArg>) => Layer; /** * Lazily constructs a layer from the specified value. * * @since 2.0.0 * @category constructors */ export declare const sync: { /** * Lazily constructs a layer from the specified value. * * @since 2.0.0 * @category constructors */ (tag: Context.Tag): (evaluate: LazyArg>) => Layer; /** * Lazily constructs a layer from the specified value. * * @since 2.0.0 * @category constructors */ (tag: Context.Tag, evaluate: LazyArg>): Layer; }; /** * Lazily constructs a layer from the specified value, which must return one or more * services. * * @since 2.0.0 * @category constructors */ export declare const syncContext: (evaluate: LazyArg>) => Layer; /** * Performs the specified effect if this layer succeeds. * * @since 2.0.0 * @category sequencing */ export declare const tap: { /** * Performs the specified effect if this layer succeeds. * * @since 2.0.0 * @category sequencing */ (f: (context: Context.Context) => Effect.Effect): (self: Layer) => Layer; /** * Performs the specified effect if this layer succeeds. * * @since 2.0.0 * @category sequencing */ (self: Layer, f: (context: Context.Context) => Effect.Effect): Layer; }; /** * Performs the specified effect if this layer fails. * * @since 2.0.0 * @category sequencing */ export declare const tapError: { /** * Performs the specified effect if this layer fails. * * @since 2.0.0 * @category sequencing */ (f: (e: XE) => Effect.Effect): (self: Layer) => Layer; /** * Performs the specified effect if this layer fails. * * @since 2.0.0 * @category sequencing */ (self: Layer, f: (e: XE) => Effect.Effect): Layer; }; /** * Performs the specified effect if this layer fails. * * @since 2.0.0 * @category sequencing */ export declare const tapErrorCause: { /** * Performs the specified effect if this layer fails. * * @since 2.0.0 * @category sequencing */ (f: (cause: Cause.Cause) => Effect.Effect): (self: Layer) => Layer; /** * Performs the specified effect if this layer fails. * * @since 2.0.0 * @category sequencing */ (self: Layer, f: (cause: Cause.Cause) => Effect.Effect): Layer; }; /** * Converts a layer that requires no services into a scoped runtime, which can * be used to execute effects. * * @since 2.0.0 * @category conversions */ export declare const toRuntime: (self: Layer) => Effect.Effect, E, Scope.Scope | RIn>; /** * Converts a layer that requires no services into a scoped runtime, which can * be used to execute effects. * * @since 2.0.0 * @category conversions */ export declare const toRuntimeWithMemoMap: { /** * Converts a layer that requires no services into a scoped runtime, which can * be used to execute effects. * * @since 2.0.0 * @category conversions */ (memoMap: MemoMap): (self: Layer) => Effect.Effect, E, Scope.Scope | RIn>; /** * Converts a layer that requires no services into a scoped runtime, which can * be used to execute effects. * * @since 2.0.0 * @category conversions */ (self: Layer, memoMap: MemoMap): Effect.Effect, E, Scope.Scope | RIn>; }; /** * Feeds the output services of this builder into the input of the specified * builder, resulting in a new builder with the inputs of this builder as * well as any leftover inputs, and the outputs of the specified builder. * * @since 2.0.0 * @category utils */ export declare const provide: { /** * Feeds the output services of this builder into the input of the specified * builder, resulting in a new builder with the inputs of this builder as * well as any leftover inputs, and the outputs of the specified builder. * * @since 2.0.0 * @category utils */ (that: Layer): (self: Layer) => Layer>; /** * Feeds the output services of this builder into the input of the specified * builder, resulting in a new builder with the inputs of this builder as * well as any leftover inputs, and the outputs of the specified builder. * * @since 2.0.0 * @category utils */ ]>(that: Layers): (self: Layer) => Layer; }[number], { [k in keyof Layers]: Layer.Context; }[number] | Exclude; }[number]>>; /** * Feeds the output services of this builder into the input of the specified * builder, resulting in a new builder with the inputs of this builder as * well as any leftover inputs, and the outputs of the specified builder. * * @since 2.0.0 * @category utils */ (self: Layer, that: Layer): Layer>; /** * Feeds the output services of this builder into the input of the specified * builder, resulting in a new builder with the inputs of this builder as * well as any leftover inputs, and the outputs of the specified builder. * * @since 2.0.0 * @category utils */ ]>(self: Layer, that: Layers): Layer; }[number], { [k in keyof Layers]: Layer.Context; }[number] | Exclude; }[number]>>; }; /** * Feeds the output services of this layer into the input of the specified * layer, resulting in a new layer with the inputs of this layer, and the * outputs of both layers. * * @since 2.0.0 * @category utils */ export declare const provideMerge: { /** * Feeds the output services of this layer into the input of the specified * layer, resulting in a new layer with the inputs of this layer, and the * outputs of both layers. * * @since 2.0.0 * @category utils */ (self: Layer): (that: Layer) => Layer>; /** * Feeds the output services of this layer into the input of the specified * layer, resulting in a new layer with the inputs of this layer, and the * outputs of both layers. * * @since 2.0.0 * @category utils */ (that: Layer, self: Layer): Layer>; }; /** * Combines this layer with the specified layer concurrently, creating a new layer with merged input types and * combined output types using the provided function. * * @since 2.0.0 * @category zipping */ export declare const zipWith: { /** * Combines this layer with the specified layer concurrently, creating a new layer with merged input types and * combined output types using the provided function. * * @since 2.0.0 * @category zipping */ (that: Layer, f: (a: Context.Context, b: Context.Context) => Context.Context): (self: Layer) => Layer; /** * Combines this layer with the specified layer concurrently, creating a new layer with merged input types and * combined output types using the provided function. * * @since 2.0.0 * @category zipping */ (self: Layer, that: Layer, f: (a: Context.Context, b: Context.Context) => Context.Context): Layer; }; /** * @since 2.0.0 * @category utils */ export declare const unwrapEffect: (self: Effect.Effect, E, R>) => Layer; /** * @since 2.0.0 * @category utils */ export declare const unwrapScoped: (self: Effect.Effect, E, R>) => Layer>; /** * @since 2.0.0 * @category clock */ export declare const setClock: (clock: A) => Layer; /** * Sets the current `ConfigProvider`. * * @since 2.0.0 * @category config */ export declare const setConfigProvider: (configProvider: ConfigProvider) => Layer; /** * Adds the provided span to the span stack. * * @since 2.0.0 * @category tracing */ export declare const parentSpan: (span: Tracer.AnySpan) => Layer; /** * @since 3.15.0 * @category Random */ export declare const setRandom: (random: A) => Layer; /** * @since 2.0.0 * @category requests & batching */ export declare const setRequestBatching: (requestBatching: boolean) => Layer; /** * @since 2.0.0 * @category requests & batching */ export declare const setRequestCaching: (requestCaching: boolean) => Layer; /** * @since 2.0.0 * @category requests & batching */ export declare const setRequestCache: { /** * @since 2.0.0 * @category requests & batching */ (cache: Effect.Effect): Layer>; /** * @since 2.0.0 * @category requests & batching */ (cache: Request.Cache): Layer; }; /** * @since 2.0.0 * @category scheduler */ export declare const setScheduler: (scheduler: Scheduler.Scheduler) => Layer; /** * Create and add a span to the current span stack. * * The span is ended when the Layer is released. * * @since 2.0.0 * @category tracing */ export declare const span: (name: string, options?: Tracer.SpanOptions & { readonly onEnd?: ((span: Tracer.Span, exit: Exit.Exit) => Effect.Effect) | undefined; }) => Layer; /** * Create a Layer that sets the current Tracer * * @since 2.0.0 * @category tracing */ export declare const setTracer: (tracer: Tracer.Tracer) => Layer; /** * @since 2.0.0 * @category tracing */ export declare const setTracerEnabled: (enabled: boolean) => Layer; /** * @since 2.0.0 * @category tracing */ export declare const setTracerTiming: (enabled: boolean) => Layer; /** * @since 2.0.0 * @category logging */ export declare const setUnhandledErrorLogLevel: (level: Option.Option) => Layer; /** * @since 2.0.0 * @category tracing */ export declare const withSpan: { /** * @since 2.0.0 * @category tracing */ (name: string, options?: Tracer.SpanOptions & { readonly onEnd?: ((span: Tracer.Span, exit: Exit.Exit) => Effect.Effect) | undefined; }): (self: Layer) => Layer>; /** * @since 2.0.0 * @category tracing */ (self: Layer, name: string, options?: Tracer.SpanOptions & { readonly onEnd?: ((span: Tracer.Span, exit: Exit.Exit) => Effect.Effect) | undefined; }): Layer>; }; /** * @since 2.0.0 * @category tracing */ export declare const withParentSpan: { /** * @since 2.0.0 * @category tracing */ (span: Tracer.AnySpan): (self: Layer) => Layer>; /** * @since 2.0.0 * @category tracing */ (self: Layer, span: Tracer.AnySpan): Layer>; }; /** * Constructs a `MemoMap` that can be used to build additional layers. * * @since 2.0.0 * @category memo map */ export declare const makeMemoMap: Effect.Effect; /** * Builds a layer into an `Effect` value, using the specified `MemoMap` to memoize * the layer construction. * * @since 2.0.0 * @category memo map */ export declare const buildWithMemoMap: { /** * Builds a layer into an `Effect` value, using the specified `MemoMap` to memoize * the layer construction. * * @since 2.0.0 * @category memo map */ (memoMap: MemoMap, scope: Scope.Scope): (self: Layer) => Effect.Effect, E, RIn>; /** * Builds a layer into an `Effect` value, using the specified `MemoMap` to memoize * the layer construction. * * @since 2.0.0 * @category memo map */ (self: Layer, memoMap: MemoMap, scope: Scope.Scope): Effect.Effect, E, RIn>; }; /** * Updates a service in the context with a new implementation. * * **Details** * * This function modifies the existing implementation of a service in the * context. It retrieves the current service, applies the provided * transformation function `f`, and replaces the old service with the * transformed one. * * **When to Use** * * This is useful for adapting or extending a service's behavior during the * creation of a layer. * * @since 3.13.0 * @category utils */ export declare const updateService: ((tag: Context.Tag, f: (a: A) => A) => (layer: Layer) => Layer) & ((layer: Layer, tag: Context.Tag, f: (a: A) => A) => Layer); //# sourceMappingURL=Layer.d.ts.map