/** * @since 1.0.0 */ import type * as Context from "effect/Context"; import type * as Deferred from "effect/Deferred"; import type * as Effect from "effect/Effect"; import type * as Layer from "effect/Layer"; import type * as Mailbox from "effect/Mailbox"; import type * as Schema from "effect/Schema"; import type * as Scope from "effect/Scope"; import type * as Stream from "effect/Stream"; import type { WorkerError } from "./WorkerError.js"; /** * @since 1.0.0 * @category models */ export interface BackingRunner { readonly run: (handler: (portId: number, message: I) => Effect.Effect | void) => Effect.Effect; readonly send: (portId: number, message: O, transfers?: ReadonlyArray) => Effect.Effect; readonly disconnects?: Mailbox.ReadonlyMailbox; } /** * @since 1.0.0 * @category models */ export declare namespace BackingRunner { /** * @since 1.0.0 * @category models */ type Message = readonly [request: 0, I] | readonly [close: 1]; } /** * @since 1.0.0 * @category type ids */ export declare const PlatformRunnerTypeId: unique symbol; /** * @since 1.0.0 * @category type ids */ export type PlatformRunnerTypeId = typeof PlatformRunnerTypeId; /** * @since 1.0.0 * @category models */ export interface PlatformRunner { readonly [PlatformRunnerTypeId]: PlatformRunnerTypeId; readonly start: (closeLatch: typeof CloseLatch.Service) => Effect.Effect, WorkerError>; } /** * @since 1.0.0 * @category tags */ export declare const PlatformRunner: Context.Tag; /** * The worker close latch is used by platform runners to signal that the worker * has been closed. * * @since 1.0.0 * @category CloseLatch */ export interface CloseLatch { readonly _: unique symbol; } /** * The worker close latch is used by platform runners to signal that the worker * has been closed. * * @since 1.0.0 * @category CloseLatch */ export declare const CloseLatch: Context.Reference>; /** * @since 1.0.0 * @category CloseLatch */ export declare const layerCloseLatch: Layer.Layer; /** * @since 1.0.0 * @category models */ export declare namespace Runner { /** * @since 1.0.0 * @category models */ interface Options { readonly decode?: (message: unknown) => Effect.Effect; readonly encodeOutput?: (request: I, message: O) => Effect.Effect; readonly encodeError?: (request: I, error: E) => Effect.Effect; } } /** * @since 1.0.0 * @category constructors */ export declare const make: (process: (request: I) => Stream.Stream | Effect.Effect, options?: Runner.Options) => Effect.Effect; /** * @since 1.0.0 * @category layers */ export declare const layer: (process: (request: I) => Stream.Stream | Effect.Effect, options?: Runner.Options | undefined) => Layer.Layer; /** * @since 1.0.0 * @category models */ export declare namespace SerializedRunner { /** * @since 1.0.0 */ type Handlers = { readonly [K in A["_tag"]]: Extract extends Schema.SerializableWithResult ? (_: S) => Stream.Stream | Effect.Effect | Layer.Layer | Layer.Layer : never; }; /** * @since 1.0.0 */ type HandlersContext) => any>> = Exclude<{ [K in keyof Handlers]: ReturnType extends Stream.Stream ? R : never; }[keyof Handlers], InitialContext> | InitialEnv; /** * @since 1.0.0 */ type InitialContext) => any>> = Handlers["InitialMessage"] extends (...args: ReadonlyArray) => Layer.Layer ? A : never; /** * @since 1.0.0 */ type InitialEnv) => any>> = Handlers["InitialMessage"] extends (...args: ReadonlyArray) => Layer.Layer ? R : never; } /** * @since 1.0.0 * @category constructors */ export declare const makeSerialized: >(schema: Schema.Schema, handlers: Handlers) => Effect.Effect>; /** * @since 1.0.0 * @category layers */ export declare const layerSerialized: >(schema: Schema.Schema, handlers: Handlers) => Layer.Layer>; /** * Launch the specified layer, interrupting the fiber when the CloseLatch is * triggered. * * @since 1.0.0 * @category Execution */ export declare const launch: (layer: Layer.Layer) => Effect.Effect; //# sourceMappingURL=WorkerRunner.d.ts.map