Skip to content
Effect Days 2026 Get your ticket

Machine

26 exports Added in v1.0.0 Source

Combinators

retry

Added in v1.0.0 Source

Signature

declare const retry: {
<M extends Any, Out, In extends any, R>(policy: Schedule<Out, In, R>): (self: M) => AddContext<M, R>;
<M extends Any, Out, In extends any, R>(self: M, policy: Schedule<Out, In, R>): AddContext<M, R>;
}

Constructors

make

Added in v1.0.0 Source

Signature

declare const make: {
<State, Public extends Any, Private extends Any, InitErr, R>(initialize: Effect<ProcedureList<State, Public, Private, R>, InitErr, R>): Machine<State, Public, Private, void, InitErr, Exclude<R, Scope | MachineContext>>;
<State, Public extends Any, Private extends Any, Input, InitErr, R>(initialize: Initialize<Input, State, Public, Private, R, InitErr, R>): Machine<State, Public, Private, Input, InitErr, Exclude<R, Scope | MachineContext>>;
}

Signature

declare const makeSerializable: {
<State, IS, RS, Public extends All, Private extends All, InitErr, R>(options: {
readonly input?: undefined;
readonly state: Schema.Schema<State, IS, RS>;
}, initialize: Effect<SerializableProcedureList<State, Public, Private, R>, InitErr, R> | InitializeSerializable<void, State, Public, Private, R, InitErr, R>): SerializableMachine<State, Public, Private, void, InitErr, Exclude<R, Scope | MachineContext>, RS>;
<State, IS, RS, Input, II, RI, Public extends All, Private extends All, InitErr, R>(options: {
readonly input: Schema.Schema<Input, II, RI>;
readonly state: Schema.Schema<State, IS, RS>;
}, initialize: InitializeSerializable<Input, State, Public, Private, R, InitErr, R>): SerializableMachine<State, Public, Private, Input, InitErr, Exclude<R, Scope | MachineContext>, RS | RI>;
}

makeWith

Added in v1.0.0 Source

Signature

declare function makeWith<State, Input = void>(): {
<Public extends Any, Private extends Any, InitErr, R>(initialize: Effect<ProcedureList<State, Public, Private, R>, InitErr, R>): Machine<State, Public, Private, void, InitErr, Exclude<R, Scope | MachineContext>>;
<Public extends Any, Private extends Any, InitErr, R>(initialize: Initialize<Input, State, Public, Private, R, InitErr, R>): Machine<State, Public, Private, Input, InitErr, Exclude<R, Scope | MachineContext>>;
}

Errors

Signature

declare class MachineDefect extends {
[key: string]: unknown;
[key: number]: unknown;
[key: symbol]: unknown;
readonly _tag: "MachineDefect";
} & YieldableError<this> {
[key: string]: unknown;
[key: number]: unknown;
[key: symbol]: unknown;
constructor(...args: [props: {
[key: string]: unknown;
[key: number]: unknown;
[key: symbol]: unknown;
readonly _tag: "MachineDefect";
}, options?: MakeOptions]);
static wrap<A, E, R>(effect: Effect<A, E, R>): Effect<A, MachineDefect, R>;
}

Models

Actor interface

Added in v1.0.0 Source

Signature

interface Actor<M extends Machine.Any> extends unknown<Machine.State<M>> {
readonly [ActorTypeId]: typeof ActorTypeId;
readonly input: Input<M>;
readonly join: Effect<never, MachineDefect | InitError<M>>;
readonly machine: M;
readonly send: <Req extends any>(request: Req) => Effect<Success<Req>, Error<Req>>;
}

Machine

Added in v1.0.0 Source

Machine interface

Added in v1.0.0 Source

Signature

interface Machine<State, Public extends Procedure.TaggedRequest.Any, Private extends Procedure.TaggedRequest.Any, Input, InitErr, R> extends Pipeable {
readonly [TypeId]: typeof TypeId;
readonly initialize: Initialize<Input, State, Public, Private, R, InitErr, R>;
readonly retryPolicy: Schedule<unknown, InitErr | MachineDefect, R, never> | undefined;
}

SerializableActor interface

Added in v1.0.0 Source

Signature

interface SerializableActor<M extends Machine.Any> extends Actor<M> {
readonly sendUnknown: (request: unknown) => Effect<ExitEncoded<unknown, unknown, unknown>, ParseError>;
}

SerializableMachine interface

Added in v1.0.0 Source

Signature

interface SerializableMachine<State, Public extends Schema.TaggedRequest.All, Private extends Schema.TaggedRequest.All, Input, InitErr, R, SR> extends Machine<State, Public, Private, Input, InitErr, R> {
readonly [SerializableTypeId]: typeof SerializableTypeId;
readonly schemaInput: any;
readonly schemaState: any;
}

Procedures

procedures

Added in v1.0.0 Source

serializable

Added in v1.0.0 Source

Runtime

boot

Added in v1.0.0 Source

Signature

declare function boot<M extends Any>(self: M, ...__namedParameters: [Input<M>] extends [void] ? [input?: Input, options?: {
readonly previousState?: State<M>;
}] : [input: Input<M>, options?: {
readonly previousState?: State<M>;
}]): Effect<M extends {
readonly [SerializableTypeId]: typeof SerializableTypeId;
} ? SerializableActor<M> : Actor<M>, never, Scope | Context<M>>

restore

Added in v1.0.0 Source

Signature

declare function restore<State, Public extends All, Private extends All, Input, InitErr, R, SR>(self: SerializableMachine<State, Public, Private, Input, InitErr, R, SR>, snapshot: readonly [unknown, unknown]): Effect<Actor<SerializableMachine<State, Public, Private, Input, InitErr, R, SR>>, ParseError, R | SR>

snapshot

Added in v1.0.0 Source

Signature

declare function snapshot<State, Public extends All, Private extends All, Input, InitErr, R, SR>(self: Actor<SerializableMachine<State, Public, Private, Input, InitErr, R, SR>>): Effect<[input: unknown, state: unknown], ParseError, SR>

Symbols

NoReply

Added in v1.0.0 Source

Signature

declare const NoReply: typeof NoReply

NoReply type

Added in v1.0.0 Source

Signature

type NoReply = typeof NoReply

Tags

Signature

declare class MachineContext extends any {
constructor();
}

Tracing

Signature

declare const currentTracingEnabled: FiberRef.FiberRef<boolean>

Signature

declare const withTracingEnabled: {
(enabled: boolean): <A, E, R>(effect: Effect<A, E, R>) => Effect<A, E, R>;
<A, E, R>(effect: Effect<A, E, R>, enabled: boolean): Effect<A, E, R>;
}

Type Ids

ActorTypeId

Added in v1.0.0 Source

Signature

declare const ActorTypeId: unique symbol

ActorTypeId type

Added in v1.0.0 Source

Signature

type ActorTypeId = typeof ActorTypeId

Signature

declare const SerializableTypeId: unique symbol

SerializableTypeId type

Added in v1.0.0 Source

Signature

type SerializableTypeId = typeof SerializableTypeId

TypeId

Added in v1.0.0 Source

Signature

declare const TypeId: unique symbol

TypeId type

Added in v1.0.0 Source

Signature

type TypeId = typeof TypeId