@typeonce/effect-machine 0.16.0 → 0.17.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (61) hide show
  1. package/README.md +98 -106
  2. package/dist/Machine.d.ts +324 -367
  3. package/dist/Machine.d.ts.map +1 -1
  4. package/dist/Machine.js +61 -96
  5. package/dist/Machine.js.map +1 -1
  6. package/dist/internal/machine/atom.d.ts +7 -7
  7. package/dist/internal/machine/atom.d.ts.map +1 -1
  8. package/dist/internal/machine/atom.js.map +1 -1
  9. package/dist/internal/machine/cluster.d.ts +2 -2
  10. package/dist/internal/machine/cluster.d.ts.map +1 -1
  11. package/dist/internal/machine/cluster.js +6 -5
  12. package/dist/internal/machine/cluster.js.map +1 -1
  13. package/dist/internal/machine/executionPlan.d.ts.map +1 -1
  14. package/dist/internal/machine/executionPlan.js +10 -3
  15. package/dist/internal/machine/executionPlan.js.map +1 -1
  16. package/dist/internal/machine/machine.d.ts +8 -6
  17. package/dist/internal/machine/machine.d.ts.map +1 -1
  18. package/dist/internal/machine/machine.js +191 -25
  19. package/dist/internal/machine/machine.js.map +1 -1
  20. package/dist/internal/machine/planner.d.ts +19 -4
  21. package/dist/internal/machine/planner.d.ts.map +1 -1
  22. package/dist/internal/machine/planner.js +56 -20
  23. package/dist/internal/machine/planner.js.map +1 -1
  24. package/dist/internal/machine/stateDefinition.d.ts.map +1 -1
  25. package/dist/internal/machine/stateDefinition.js +14 -0
  26. package/dist/internal/machine/stateDefinition.js.map +1 -1
  27. package/dist/internal/machine/topology.d.ts +9 -0
  28. package/dist/internal/machine/topology.d.ts.map +1 -1
  29. package/dist/internal/machine/topology.js +16 -0
  30. package/dist/internal/machine/topology.js.map +1 -1
  31. package/dist/internal/testing/machine/finiteModel.d.ts.map +1 -1
  32. package/dist/internal/testing/machine/finiteModel.js +15 -20
  33. package/dist/internal/testing/machine/finiteModel.js.map +1 -1
  34. package/dist/internal/testing/machine/transitionCoverage.d.ts.map +1 -1
  35. package/dist/internal/testing/machine/transitionCoverage.js +2 -0
  36. package/dist/internal/testing/machine/transitionCoverage.js.map +1 -1
  37. package/dist/testing/MachineTest.d.ts +11 -11
  38. package/dist/testing/MachineTest.d.ts.map +1 -1
  39. package/dist/testing/MachineTest.js +5 -8
  40. package/dist/testing/MachineTest.js.map +1 -1
  41. package/dist/unstable/cluster/ClusterMachine.d.ts +2 -2
  42. package/dist/unstable/cluster/ClusterMachine.d.ts.map +1 -1
  43. package/dist/unstable/cluster/ClusterMachine.js.map +1 -1
  44. package/dist/unstable/reactivity/AtomMachine.d.ts +12 -12
  45. package/dist/unstable/reactivity/AtomMachine.d.ts.map +1 -1
  46. package/dist/unstable/reactivity/AtomMachine.js.map +1 -1
  47. package/docs/agent-guide.md +144 -147
  48. package/package.json +1 -1
  49. package/src/Machine.ts +1118 -1178
  50. package/src/internal/machine/atom.ts +20 -15
  51. package/src/internal/machine/cluster.ts +14 -9
  52. package/src/internal/machine/executionPlan.ts +8 -3
  53. package/src/internal/machine/machine.ts +301 -40
  54. package/src/internal/machine/planner.ts +89 -27
  55. package/src/internal/machine/stateDefinition.ts +39 -0
  56. package/src/internal/machine/topology.ts +28 -0
  57. package/src/internal/testing/machine/finiteModel.ts +18 -21
  58. package/src/internal/testing/machine/transitionCoverage.ts +2 -0
  59. package/src/testing/MachineTest.ts +14 -11
  60. package/src/unstable/cluster/ClusterMachine.ts +8 -4
  61. package/src/unstable/reactivity/AtomMachine.ts +19 -12
package/dist/Machine.d.ts CHANGED
@@ -41,6 +41,8 @@ declare const MachineTypeId: unique symbol;
41
41
  declare const EventConstructionTypeId: unique symbol;
42
42
  declare const EmittedEventConstructionTypeId: unique symbol;
43
43
  declare const EventProtocolTypeId: unique symbol;
44
+ declare const ParentModeTypeId: unique symbol;
45
+ declare const ParentTypeId = "~effect/Machine/Parent";
44
46
  declare const ChildMachineLogicTypeId: typeof internal.ChildMachineLogicTypeId;
45
47
  /**
46
48
  * Type identifier used for the synthetic event passed to startup lifecycle
@@ -127,16 +129,16 @@ export interface Machine<States extends Machine.StateSchemas, Events extends Rea
127
129
  */
128
130
  readonly emittedEvents: Machine.EventProtocol<"emitted", Emits>;
129
131
  /**
130
- * Public input events accepted by an owning machine when this machine is
131
- * running as a child.
132
+ * Declared owning-machine protocol, or `undefined` when this machine does
133
+ * not communicate with its owner.
132
134
  *
133
- * The protocol types the optional `parent` machine target exposed to
134
- * handlers and is checked against a concrete parent's public events at
135
- * composition boundaries.
135
+ * Required parents make the machine child-only and expose a non-optional
136
+ * `parent` target to handlers. Optional parents keep root execution valid
137
+ * and expose `parent` as possibly absent.
136
138
  *
137
- * @since 0.10.0
139
+ * @since 0.17.0
138
140
  */
139
- readonly parentEvents: Machine.EventProtocol<"public", ParentEvents>;
141
+ readonly parent: Machine.ParentDeclarationOf<ParentEvents>;
140
142
  /**
141
143
  * Optional schema used to decode the machine input before initialization.
142
144
  *
@@ -155,14 +157,6 @@ export interface Machine<States extends Machine.StateSchemas, Events extends Rea
155
157
  readonly makeTargetBuilder: <Source extends Machine.StateNodeIdentifier<States>>(source: Source) => Machine.TargetBuilder<States, Source>;
156
158
  /** @internal */
157
159
  readonly handlers: Machine.StateConfigs<States, Events, Emits, UnhandledStates, Machine.TagOf<Events[number]>, E, R>;
158
- /**
159
- * Machine-bound equivalent of {@link invoke}. Both forms preserve this
160
- * machine's public input and parent protocols in invocation callbacks;
161
- * `Machine.invoke(...)` inside `handle(...)` is the canonical inline form.
162
- *
163
- * @since 0.11.0
164
- */
165
- readonly invoke: Invoker<States, Events, Emits, InputEvents, ParentEvents>;
166
160
  /** @internal */
167
161
  readonly initial: (...args: [...Machine.InputArgs<Input>]) => Machine.InitialResult<States, InitialE, InitialR>;
168
162
  /** @internal */
@@ -343,18 +337,51 @@ export interface MachineTarget<in Event> {
343
337
  readonly sessionId: string;
344
338
  readonly send: (event: Event) => Effect.Effect<void, StoppedError>;
345
339
  }
340
+ /**
341
+ * Availability declared for an owning-machine target.
342
+ *
343
+ * @category models
344
+ * @since 0.17.0
345
+ */
346
+ export type ParentMode = "required" | "optional";
347
+ /**
348
+ * Owning-machine protocol declared by {@link parent} or
349
+ * {@link optionalParent}.
350
+ *
351
+ * @category models
352
+ * @since 0.17.0
353
+ */
354
+ export interface Parent<Mode extends ParentMode, Events extends ReadonlyArray<Machine.TaggedSchema>> {
355
+ readonly [ParentTypeId]: typeof ParentTypeId;
356
+ readonly mode: Mode;
357
+ readonly events: Machine.EventProtocol<"public", Events>;
358
+ }
359
+ /**
360
+ * Namespace containing type-level members associated with {@link Parent}.
361
+ *
362
+ * @category models
363
+ * @since 0.17.0
364
+ */
365
+ export declare namespace Parent {
366
+ /** Any owning-machine protocol declaration. */
367
+ type Any = Parent<ParentMode, ReadonlyArray<Machine.TaggedSchema>>;
368
+ }
346
369
  /**
347
370
  * Machine targets available while evaluating machine behavior.
348
371
  *
349
372
  * @category models
350
373
  * @since 0.12.0
351
374
  */
352
- export interface MachineReferences<InputEvents extends ReadonlyArray<Machine.TaggedSchema>, ParentEvents extends ReadonlyArray<Machine.TaggedSchema>> {
375
+ export type MachineReferences<InputEvents extends ReadonlyArray<Machine.TaggedSchema>, ParentEvents extends ReadonlyArray<Machine.TaggedSchema>> = {
353
376
  /** Target for the current machine. Sending queues a later mailbox event. */
354
377
  readonly self: MachineTarget<Machine.EventInputOf<InputEvents>>;
378
+ } & (Machine.ParentModeOf<ParentEvents> extends "required" ? {
379
+ /** Required target for the machine that owns this child. */
380
+ readonly parent: MachineTarget<Machine.EventInputOf<ParentEvents>>;
381
+ } : Machine.ParentModeOf<ParentEvents> extends "optional" ? {
355
382
  /** Target for the owning machine, or `undefined` when running as a root. */
356
383
  readonly parent: MachineTarget<Machine.EventInputOf<ParentEvents>> | undefined;
357
- }
384
+ } : {});
358
385
  /**
359
386
  * Synchronous commands available while a machine transition is being
360
387
  * selected. Enqueuing only records statechart and machine operations; it never
@@ -446,6 +473,8 @@ type ExcludeCompatibleRuntime<Requirements, Events, Emits> = Requirements extend
446
473
  type IncompatibleRuntime<Requirements, Events, Emits> = Requirements extends Runtime.Requirement<infer RequiredEvents, infer RequiredEmits> ? IsAny<Requirements> extends true ? never : [RequiredEvents] extends [Events] ? [RequiredEmits] extends [Emits] ? never : Requirements : Requirements : never;
447
474
  declare const InvokeTypeId: typeof internal.InvokeTypeId;
448
475
  declare const TransitionTypeId: typeof internal.TransitionTypeId;
476
+ declare const TransitionBuilderTypeId: unique symbol;
477
+ declare const InitialBuilderTypeId: unique symbol;
449
478
  type StateDefinitionError<Message extends string, Path extends PropertyKey = never, Details extends PropertyKey = never> = {
450
479
  readonly "~effect/Machine/DefinitionError": Message;
451
480
  readonly path: Path;
@@ -486,16 +515,21 @@ type ValidateStateNodeConfig<Node extends Machine.StateNodeConfig, Path extends
486
515
  type ValidateOutputSchema<Node> = "output" extends keyof Node ? Node extends {
487
516
  readonly output: Schema.Top;
488
517
  } ? unknown : StateDefinitionError<"State output must be a schema"> : unknown;
518
+ type SelectorChildKey<Children extends Machine.StateSchemas> = ActiveStateKey<Children> | ChoiceStateKey<Children>;
519
+ type ValidateInitialSelectorChild<Children extends Machine.StateSchemas, Path extends PropertyKey> = "initial" extends SelectorChildKey<Children> ? StateDefinitionError<"Active and choice child states cannot use the reserved target selector key \"initial\"", StateDefinitionPath<Extract<Path, string>, "initial">, "initial"> : unknown;
520
+ type ValidateWithSelectorChild<Node extends Machine.StateNodeConfig, Children extends Machine.StateSchemas, Path extends PropertyKey> = Node extends {
521
+ readonly schema: Machine.TaggedSchema;
522
+ } ? "with" extends SelectorChildKey<Children> ? StateDefinitionError<"Schema-backed compound child states cannot use the reserved local target selector key \"with\"", StateDefinitionPath<Extract<Path, string>, "with">, "with"> : unknown : unknown;
489
523
  type ValidateStateNodeWithChildren<Node extends Machine.StateNodeConfig, Children, Path extends PropertyKey> = Children extends Machine.StateSchemas ? Node extends {
490
524
  readonly type: "final";
491
525
  } ? StateDefinitionError<"Final states cannot declare child states"> : Node extends {
492
526
  readonly type: "parallel";
493
- } ? "initial" extends keyof Node ? StateDefinitionError<"Parallel states cannot declare an initial child"> : {
527
+ } ? ValidateInitialSelectorChild<Children, Path> & ("initial" extends keyof Node ? StateDefinitionError<"Parallel states cannot declare an initial child"> : {
494
528
  readonly states: ValidateStateTree<Children, true, Extract<Path, string>>;
495
- } & ValidateOutputSchema<Node> : "output" extends keyof Node ? StateDefinitionError<"Only final and parallel states can declare output"> : ValidateCompoundStateNode<Node, Children, Path> : StateDefinitionError<"Child states must be a state tree">;
529
+ } & ValidateOutputSchema<Node>) : "output" extends keyof Node ? StateDefinitionError<"Only final and parallel states can declare output"> : ValidateCompoundStateNode<Node, Children, Path> : StateDefinitionError<"Child states must be a state tree">;
496
530
  type ValidateCompoundStateNode<Node extends Machine.StateNodeConfig, Children extends Machine.StateSchemas, Path extends PropertyKey> = Node extends {
497
531
  readonly initial: infer Initial;
498
- } ? Initial extends ActiveStateKey<Children> | ChoiceStateKey<Children> ? {
532
+ } ? Initial extends ActiveStateKey<Children> | ChoiceStateKey<Children> ? ValidateInitialSelectorChild<Children, Path> & ValidateWithSelectorChild<Node, Children, Path> & {
499
533
  readonly states: ValidateStateTree<Children, true, Extract<Path, string>>;
500
534
  } : StateDefinitionError<"Compound initial must be one of its direct child keys", Path, Extract<Initial, PropertyKey>> : StateDefinitionError<"Compound states must declare an initial child", Path>;
501
535
  type ValidateStateNodeWithoutChildren<Node extends Machine.StateNodeConfig> = "initial" extends keyof Node ? StateDefinitionError<"Atomic states cannot declare an initial child"> : Node extends {
@@ -1407,6 +1441,20 @@ export declare namespace Machine {
1407
1441
  readonly inputEvents: InputEvents;
1408
1442
  readonly parentEvents: ParentEvents;
1409
1443
  }
1444
+ /** @internal Carries parent availability without widening the event tuple. */
1445
+ type ParentEventSchemas<Mode extends ParentMode, Events extends ReadonlyArray<TaggedSchema>> = Events & {
1446
+ readonly [ParentModeTypeId]: Mode;
1447
+ };
1448
+ /** Extracts the parent availability encoded in a machine event tuple. */
1449
+ type ParentModeOf<Events extends ReadonlyArray<TaggedSchema>> = Events extends {
1450
+ readonly [ParentModeTypeId]: infer Mode extends ParentMode;
1451
+ } ? Mode : Events extends readonly [] ? "none" : "optional";
1452
+ /** Extracts the event schemas declared by an owning-machine protocol. */
1453
+ type ParentEventsOf<Declaration extends Parent.Any | undefined> = Declaration extends Parent<infer Mode, infer Events> ? ParentEventSchemas<Mode, Events> : readonly [];
1454
+ /** Extracts the owning-machine declaration carried by a machine. */
1455
+ type ParentDeclarationOf<Events extends ReadonlyArray<TaggedSchema>> = ParentModeOf<Events> extends infer Mode ? Mode extends ParentMode ? Parent<Mode, Events> : undefined : never;
1456
+ /** Constraint applied to APIs that create an independent root runtime. */
1457
+ type RootCompatible<Events extends ReadonlyArray<TaggedSchema>> = ParentModeOf<Events> extends "required" ? never : unknown;
1410
1458
  /**
1411
1459
  * Any schema-first machine.
1412
1460
  *
@@ -1427,7 +1475,7 @@ export declare namespace Machine {
1427
1475
  readonly events: EventProtocol.Any<"public">;
1428
1476
  readonly internalEvents: EventProtocol.Any<"internal">;
1429
1477
  readonly emittedEvents: EventProtocol.Any<"emitted">;
1430
- readonly parentEvents: EventProtocol.Any<"public">;
1478
+ readonly parent: Parent.Any | undefined;
1431
1479
  readonly input: Schema.Top | undefined;
1432
1480
  readonly id: string | undefined;
1433
1481
  /** @internal */
@@ -1437,8 +1485,6 @@ export declare namespace Machine {
1437
1485
  /** @internal */
1438
1486
  readonly handlers: any;
1439
1487
  /** @internal */
1440
- readonly invoke: any;
1441
- /** @internal */
1442
1488
  readonly initial: any;
1443
1489
  /** @internal */
1444
1490
  readonly initialDefinition: InitialDefinition;
@@ -1538,6 +1584,8 @@ export declare namespace Machine {
1538
1584
  type InputEvents<M extends Any> = M[typeof MachineTypeId]["inputEvents"];
1539
1585
  /** Extracts the public input protocol required from an owning machine. */
1540
1586
  type ParentEvents<M extends Any> = M[typeof MachineTypeId]["parentEvents"];
1587
+ /** Extracts whether a machine requires or optionally accepts an owner. */
1588
+ type ParentAvailability<M extends Any> = ParentModeOf<M[typeof MachineTypeId]["parentEvents"]>;
1541
1589
  /** Extracts an internal event schema tuple from the complete and public protocols. */
1542
1590
  type InternalEventSchemas<Events extends ReadonlyArray<TaggedSchema>, InputEvents extends ReadonlyArray<TaggedSchema>> = Events extends readonly [
1543
1591
  ...InputEvents,
@@ -2054,6 +2102,7 @@ export declare namespace Machine {
2054
2102
  readonly source: SourcePath;
2055
2103
  readonly trigger: TransitionTrigger<EventTag>;
2056
2104
  readonly reenter: boolean;
2105
+ readonly acceptance: TransitionAcceptance;
2057
2106
  readonly branches: ReadonlyArray<TransitionBranch<TargetPath>>;
2058
2107
  }
2059
2108
  /**
@@ -2658,6 +2707,22 @@ export declare namespace Machine {
2658
2707
  interface NoTarget {
2659
2708
  readonly [Topology.NoTargetTypeId]: typeof Topology.NoTargetTypeId;
2660
2709
  }
2710
+ /**
2711
+ * Opaque result returned when a declinable transition does not accept the
2712
+ * current event or lifecycle outcome.
2713
+ *
2714
+ * Declining selects no transition and discards operations enqueued by that
2715
+ * resolver. Hierarchical event and eventless dispatch continues with the
2716
+ * next eligible ancestor candidate.
2717
+ *
2718
+ * @category models
2719
+ * @since 0.17.0
2720
+ */
2721
+ interface Declined {
2722
+ readonly [Topology.DeclinedTypeId]: typeof Topology.DeclinedTypeId;
2723
+ }
2724
+ /** Static acceptance contract of one transition definition. */
2725
+ type TransitionAcceptance = "required" | "declinable";
2661
2726
  /**
2662
2727
  * Transition instruction that restores a history pseudo-state's parent.
2663
2728
  *
@@ -2821,11 +2886,12 @@ export declare namespace Machine {
2821
2886
  readonly path: Path;
2822
2887
  readonly "~effect/Machine/TargetSelectionResult"?: Types.Covariant<Result>;
2823
2888
  }
2824
- type SelectionMethod<Builder, Path extends string, Kind extends Topology.TargetSelectionKind = "state"> = () => TargetSelection<Builder, Path, Kind>;
2889
+ type SelectionValue<Builder, Path extends string, Kind extends Topology.TargetSelectionKind = "state"> = TargetSelection<Builder, Path, Kind>;
2890
+ type SelectionMethod<Builder, Path extends string, Kind extends Topology.TargetSelectionKind = "state"> = () => SelectionValue<Builder, Path, Kind>;
2825
2891
  type InitialSelectionMethod<Builder, Path extends string> = Builder extends {
2826
2892
  readonly initial: infer Initial;
2827
2893
  } ? {
2828
- readonly initial: SelectionMethod<Initial, Path, "initial">;
2894
+ readonly initial: SelectionValue<Initial, Path, "initial">;
2829
2895
  } : {};
2830
2896
  type SelectionTreeWithPrefix<AllStates extends StateSchemas, States extends StateSchemas, Prefix extends string, Scope extends "local" | "branch", Builder> = {
2831
2897
  readonly [Key in Extract<ActiveStateKey<States> | ChoiceStateKey<States>, keyof Builder>]: SelectionNode<AllStates, States[Key], JoinPath<Prefix, Key>, Scope, Builder[Key]>;
@@ -2843,27 +2909,32 @@ export declare namespace Machine {
2843
2909
  readonly [Key in Root]: SelectionNode<States, States[Key], Key, "branch", BranchTargetBuilder<States, Source>[Key]>;
2844
2910
  } : {} : {};
2845
2911
  type LocalTargetSelector<States extends StateSchemas, Source extends StateNodeIdentifier<States>> = NearestCompoundScope<States, Source> extends infer Scope extends StateIdentifier<States> ? ChildrenOf<States, Scope> extends infer Children extends StateSchemas ? LocalTargetBuilder<States, Source> extends infer Builder ? SelectionTreeWithPrefix<States, Children, Scope, "local", Builder> & ("with" extends keyof Builder ? {
2846
- readonly with: SelectionMethod<Builder["with"], Scope>;
2912
+ readonly with: SelectionValue<Builder["with"], Scope>;
2847
2913
  } : {}) : {} : {} : {};
2848
2914
  type HistorySelectionTree<AllStates extends StateSchemas, States extends StateSchemas, Prefix extends string, Builder> = {
2849
- readonly [Key in Extract<HistoryContainingKey<States>, keyof Builder>]: States[Key] extends HistoryStateNodeConfig ? SelectionMethod<Builder[Key], JoinPath<Prefix, Key>, "history"> : States[Key] extends {
2915
+ readonly [Key in Extract<HistoryContainingKey<States>, keyof Builder>]: States[Key] extends HistoryStateNodeConfig ? SelectionValue<Builder[Key], JoinPath<Prefix, Key>, "history"> : States[Key] extends {
2850
2916
  readonly states: infer Children extends StateSchemas;
2851
2917
  } ? HistorySelectionTree<AllStates, Children, JoinPath<Prefix, Key>, Builder[Key]> : never;
2852
2918
  };
2853
- /** Definition-time topology selector available to an ordinary transition. */
2919
+ /**
2920
+ * Definition-time topology selector available to an ordinary transition.
2921
+ * Topology-only instructions (`none`, declared `initial` and history
2922
+ * selections, and `local.with`) are values. State and choice destinations
2923
+ * remain callable selection methods.
2924
+ */
2854
2925
  interface TargetSelector<States extends StateSchemas, Source extends StateNodeIdentifier<States>> {
2855
- readonly none: SelectionMethod<TargetBuilder<States, Source>["none"], never, "none">;
2926
+ readonly none: SelectionValue<TargetBuilder<States, Source>["none"], never, "none">;
2856
2927
  readonly local: LocalTargetSelector<States, Source>;
2857
2928
  readonly branch: BranchTargetSelector<States, Source>;
2858
2929
  readonly full: FullTargetSelector<States>;
2859
2930
  readonly history: HistorySelectionTree<States, States, "", HistoryTargetBuilder<States>>;
2860
2931
  }
2861
2932
  /** Definition-time selector that can choose only a valid top-level initial entry. */
2862
- type InitialSelector<States extends StateSchemas> = {
2933
+ type InitialTargetSelector<States extends StateSchemas> = {
2863
2934
  readonly [Key in Extract<ActiveStateKey<States>, keyof InitialBuilder<States>>]: States[Key] extends {
2864
2935
  readonly states: StateSchemas;
2865
2936
  } ? {
2866
- readonly initial: SelectionMethod<InitialBuilder<States>[Key], Key, "initial">;
2937
+ readonly initial: SelectionValue<InitialBuilder<States>[Key], Key, "initial">;
2867
2938
  } : SelectionMethod<InitialBuilder<States>[Key], Key>;
2868
2939
  };
2869
2940
  /**
@@ -2872,7 +2943,7 @@ export declare namespace Machine {
2872
2943
  * @category models
2873
2944
  * @since 0.4.0
2874
2945
  */
2875
- interface HandlerContext<States extends StateSchemas, Events extends ReadonlyArray<TaggedSchema>, Emits extends ReadonlyArray<TaggedSchema>, StateId extends StateIdentifier<States>, EventTag extends TagOf<Events[number]>, E, R, InputEvents extends ReadonlyArray<TaggedSchema> = Events, ParentEvents extends ReadonlyArray<TaggedSchema> = readonly []> extends MachineReferences<InputEvents, ParentEvents> {
2946
+ type HandlerContext<States extends StateSchemas, Events extends ReadonlyArray<TaggedSchema>, Emits extends ReadonlyArray<TaggedSchema>, StateId extends StateIdentifier<States>, EventTag extends TagOf<Events[number]>, E, R, InputEvents extends ReadonlyArray<TaggedSchema> = Events, ParentEvents extends ReadonlyArray<TaggedSchema> = readonly []> = MachineReferences<InputEvents, ParentEvents> & {
2876
2947
  readonly state: StateByIdentifier<States, StateId>;
2877
2948
  readonly containingState: ParentStateValue<States, StateId>;
2878
2949
  readonly ancestors: ParentStateValues<States, StateId>;
@@ -2886,38 +2957,38 @@ export declare namespace Machine {
2886
2957
  * @since 0.4.0
2887
2958
  */
2888
2959
  readonly target: TargetBuilder<States, StateId>;
2889
- }
2960
+ };
2890
2961
  /**
2891
2962
  * Context passed to an entry or exit state handler.
2892
2963
  *
2893
2964
  * @category models
2894
2965
  * @since 0.4.0
2895
2966
  */
2896
- interface StateActionContext<States extends StateSchemas, Events extends ReadonlyArray<TaggedSchema>, Emits extends ReadonlyArray<TaggedSchema>, StateId extends StateIdentifier<States>, InputEvents extends ReadonlyArray<TaggedSchema> = Events, ParentEvents extends ReadonlyArray<TaggedSchema> = readonly []> extends MachineReferences<InputEvents, ParentEvents> {
2967
+ type StateActionContext<States extends StateSchemas, Events extends ReadonlyArray<TaggedSchema>, Emits extends ReadonlyArray<TaggedSchema>, StateId extends StateIdentifier<States>, InputEvents extends ReadonlyArray<TaggedSchema> = Events, ParentEvents extends ReadonlyArray<TaggedSchema> = readonly []> = MachineReferences<InputEvents, ParentEvents> & {
2897
2968
  readonly state: StateByIdentifier<States, StateId>;
2898
2969
  readonly containingState: ParentStateValue<States, StateId>;
2899
2970
  readonly ancestors: ParentStateValues<States, StateId>;
2900
2971
  readonly event: LifecycleEvent<Events>;
2901
- }
2972
+ };
2902
2973
  /**
2903
2974
  * Context passed to a function-valued invocation source.
2904
2975
  *
2905
2976
  * @category models
2906
2977
  * @since 0.4.0
2907
2978
  */
2908
- interface InvokeContext<States extends StateSchemas, Events extends ReadonlyArray<TaggedSchema>, Emits extends ReadonlyArray<TaggedSchema>, StateId extends StateIdentifier<States>, InputEvents extends ReadonlyArray<TaggedSchema> = Events, ParentEvents extends ReadonlyArray<TaggedSchema> = readonly []> extends MachineReferences<InputEvents, ParentEvents> {
2979
+ type InvokeContext<States extends StateSchemas, Events extends ReadonlyArray<TaggedSchema>, Emits extends ReadonlyArray<TaggedSchema>, StateId extends StateIdentifier<States>, InputEvents extends ReadonlyArray<TaggedSchema> = Events, ParentEvents extends ReadonlyArray<TaggedSchema> = readonly []> = MachineReferences<InputEvents, ParentEvents> & {
2909
2980
  readonly state: StateByIdentifier<States, StateId>;
2910
2981
  readonly containingState: ParentStateValue<States, StateId>;
2911
2982
  readonly ancestors: ParentStateValues<States, StateId>;
2912
2983
  readonly event: LifecycleEvent<Events>;
2913
- }
2984
+ };
2914
2985
  /**
2915
2986
  * Context passed to an invocation's active-snapshot transition.
2916
2987
  *
2917
2988
  * @category models
2918
2989
  * @since 0.4.0
2919
2990
  */
2920
- interface InvokeSnapshotContext<States extends StateSchemas, Events extends ReadonlyArray<TaggedSchema>, Emits extends ReadonlyArray<TaggedSchema>, StateId extends StateIdentifier<States>, State, Error, Output, InputEvents extends ReadonlyArray<TaggedSchema> = Events, ParentEvents extends ReadonlyArray<TaggedSchema> = readonly []> extends MachineReferences<InputEvents, ParentEvents> {
2991
+ type InvokeSnapshotContext<States extends StateSchemas, Events extends ReadonlyArray<TaggedSchema>, Emits extends ReadonlyArray<TaggedSchema>, StateId extends StateIdentifier<States>, State, Error, Output, InputEvents extends ReadonlyArray<TaggedSchema> = Events, ParentEvents extends ReadonlyArray<TaggedSchema> = readonly []> = MachineReferences<InputEvents, ParentEvents> & {
2921
2992
  readonly id: string;
2922
2993
  readonly state: StateByIdentifier<States, StateId>;
2923
2994
  readonly containingState: ParentStateValue<States, StateId>;
@@ -2926,14 +2997,14 @@ export declare namespace Machine {
2926
2997
  readonly snapshot: Extract<RuntimeSnapshot<State, Error, Output>, {
2927
2998
  readonly status: "active";
2928
2999
  }>;
2929
- }
3000
+ };
2930
3001
  /**
2931
3002
  * Context passed to an invocation's successful completion transition.
2932
3003
  *
2933
3004
  * @category models
2934
3005
  * @since 0.4.0
2935
3006
  */
2936
- interface InvokeDoneContext<States extends StateSchemas, Events extends ReadonlyArray<TaggedSchema>, Emits extends ReadonlyArray<TaggedSchema>, StateId extends StateIdentifier<States>, Output, InputEvents extends ReadonlyArray<TaggedSchema> = Events, ParentEvents extends ReadonlyArray<TaggedSchema> = readonly []> extends MachineReferences<InputEvents, ParentEvents> {
3007
+ type InvokeDoneContext<States extends StateSchemas, Events extends ReadonlyArray<TaggedSchema>, Emits extends ReadonlyArray<TaggedSchema>, StateId extends StateIdentifier<States>, Output, InputEvents extends ReadonlyArray<TaggedSchema> = Events, ParentEvents extends ReadonlyArray<TaggedSchema> = readonly []> = MachineReferences<InputEvents, ParentEvents> & {
2937
3008
  readonly id: string;
2938
3009
  readonly state: StateByIdentifier<States, StateId>;
2939
3010
  readonly containingState: ParentStateValue<States, StateId>;
@@ -2941,9 +3012,9 @@ export declare namespace Machine {
2941
3012
  readonly snapshot: Snapshot<States>;
2942
3013
  readonly target: TargetBuilder<States, StateId>;
2943
3014
  readonly output: Output;
2944
- }
3015
+ };
2945
3016
  /** Context passed to a Stream invocation's element transition. */
2946
- interface InvokeElementContext<States extends StateSchemas, Events extends ReadonlyArray<TaggedSchema>, Emits extends ReadonlyArray<TaggedSchema>, StateId extends StateIdentifier<States>, Element, InputEvents extends ReadonlyArray<TaggedSchema> = Events, ParentEvents extends ReadonlyArray<TaggedSchema> = readonly []> extends MachineReferences<InputEvents, ParentEvents> {
3017
+ type InvokeElementContext<States extends StateSchemas, Events extends ReadonlyArray<TaggedSchema>, Emits extends ReadonlyArray<TaggedSchema>, StateId extends StateIdentifier<States>, Element, InputEvents extends ReadonlyArray<TaggedSchema> = Events, ParentEvents extends ReadonlyArray<TaggedSchema> = readonly []> = MachineReferences<InputEvents, ParentEvents> & {
2947
3018
  readonly id: string;
2948
3019
  readonly state: StateByIdentifier<States, StateId>;
2949
3020
  readonly containingState: ParentStateValue<States, StateId>;
@@ -2951,9 +3022,9 @@ export declare namespace Machine {
2951
3022
  readonly snapshot: Snapshot<States>;
2952
3023
  readonly target: TargetBuilder<States, StateId>;
2953
3024
  readonly element: Element;
2954
- }
3025
+ };
2955
3026
  /** Context passed to an invocation typed-failure transition. */
2956
- interface InvokeFailureContext<States extends StateSchemas, Events extends ReadonlyArray<TaggedSchema>, Emits extends ReadonlyArray<TaggedSchema>, StateId extends StateIdentifier<States>, Error, InputEvents extends ReadonlyArray<TaggedSchema> = Events, ParentEvents extends ReadonlyArray<TaggedSchema> = readonly []> extends MachineReferences<InputEvents, ParentEvents> {
3027
+ type InvokeFailureContext<States extends StateSchemas, Events extends ReadonlyArray<TaggedSchema>, Emits extends ReadonlyArray<TaggedSchema>, StateId extends StateIdentifier<States>, Error, InputEvents extends ReadonlyArray<TaggedSchema> = Events, ParentEvents extends ReadonlyArray<TaggedSchema> = readonly []> = MachineReferences<InputEvents, ParentEvents> & {
2957
3028
  readonly id: string;
2958
3029
  readonly state: StateByIdentifier<States, StateId>;
2959
3030
  readonly containingState: ParentStateValue<States, StateId>;
@@ -2961,14 +3032,14 @@ export declare namespace Machine {
2961
3032
  readonly snapshot: Snapshot<States>;
2962
3033
  readonly target: TargetBuilder<States, StateId>;
2963
3034
  readonly error: Error;
2964
- }
3035
+ };
2965
3036
  /**
2966
3037
  * Context passed to an eventless transition handler.
2967
3038
  *
2968
3039
  * @category models
2969
3040
  * @since 0.4.0
2970
3041
  */
2971
- interface AlwaysContext<States extends StateSchemas, Events extends ReadonlyArray<TaggedSchema>, Emits extends ReadonlyArray<TaggedSchema>, StateId extends StateIdentifier<States>, InputEvents extends ReadonlyArray<TaggedSchema> = Events, ParentEvents extends ReadonlyArray<TaggedSchema> = readonly []> extends MachineReferences<InputEvents, ParentEvents> {
3042
+ type AlwaysContext<States extends StateSchemas, Events extends ReadonlyArray<TaggedSchema>, Emits extends ReadonlyArray<TaggedSchema>, StateId extends StateIdentifier<States>, InputEvents extends ReadonlyArray<TaggedSchema> = Events, ParentEvents extends ReadonlyArray<TaggedSchema> = readonly []> = MachineReferences<InputEvents, ParentEvents> & {
2972
3043
  readonly state: StateByIdentifier<States, StateId>;
2973
3044
  readonly containingState: ParentStateValue<States, StateId>;
2974
3045
  readonly ancestors: ParentStateValues<States, StateId>;
@@ -2983,14 +3054,14 @@ export declare namespace Machine {
2983
3054
  * @since 0.4.0
2984
3055
  */
2985
3056
  readonly target: TargetBuilder<States, StateId>;
2986
- }
3057
+ };
2987
3058
  /**
2988
3059
  * Context passed to a state completion transition handler.
2989
3060
  *
2990
3061
  * @category models
2991
3062
  * @since 0.4.0
2992
3063
  */
2993
- interface DoneContext<States extends StateSchemas, Events extends ReadonlyArray<TaggedSchema>, Emits extends ReadonlyArray<TaggedSchema>, StateId extends StateIdentifier<States>, InputEvents extends ReadonlyArray<TaggedSchema> = Events, ParentEvents extends ReadonlyArray<TaggedSchema> = readonly []> extends MachineReferences<InputEvents, ParentEvents> {
3064
+ type DoneContext<States extends StateSchemas, Events extends ReadonlyArray<TaggedSchema>, Emits extends ReadonlyArray<TaggedSchema>, StateId extends StateIdentifier<States>, InputEvents extends ReadonlyArray<TaggedSchema> = Events, ParentEvents extends ReadonlyArray<TaggedSchema> = readonly []> = MachineReferences<InputEvents, ParentEvents> & {
2994
3065
  readonly state: StateByIdentifier<States, StateId>;
2995
3066
  readonly containingState: ParentStateValue<States, StateId>;
2996
3067
  readonly ancestors: ParentStateValues<States, StateId>;
@@ -3006,16 +3077,16 @@ export declare namespace Machine {
3006
3077
  * @since 0.4.0
3007
3078
  */
3008
3079
  readonly target: TargetBuilder<States, StateId>;
3009
- }
3080
+ };
3010
3081
  /** Context passed to a transient choice resolver. There is no `state` value. */
3011
- interface ChoiceContext<States extends StateSchemas, Events extends ReadonlyArray<TaggedSchema>, Emits extends ReadonlyArray<TaggedSchema>, ChoiceId extends ChoiceIdentifier<States>, InputEvents extends ReadonlyArray<TaggedSchema> = Events, ParentEvents extends ReadonlyArray<TaggedSchema> = readonly []> extends MachineReferences<InputEvents, ParentEvents> {
3082
+ type ChoiceContext<States extends StateSchemas, Events extends ReadonlyArray<TaggedSchema>, Emits extends ReadonlyArray<TaggedSchema>, ChoiceId extends ChoiceIdentifier<States>, InputEvents extends ReadonlyArray<TaggedSchema> = Events, ParentEvents extends ReadonlyArray<TaggedSchema> = readonly []> = MachineReferences<InputEvents, ParentEvents> & {
3012
3083
  readonly containingState: StateByIdentifier<States, Extract<ImmediateParentStateIdentifier<ChoiceId>, StateIdentifier<States>>>;
3013
3084
  readonly ancestors: {
3014
3085
  readonly [Parent in Extract<ParentStateIdentifier<ChoiceId>, ValuedStateIdentifier<States>>]: StateByIdentifier<States, Parent>;
3015
3086
  };
3016
3087
  readonly event: LifecycleEvent<Events>;
3017
3088
  readonly target: TargetBuilder<States, ChoiceId>;
3018
- }
3089
+ };
3019
3090
  /**
3020
3091
  * Context passed to a final state output function.
3021
3092
  *
@@ -3144,7 +3215,7 @@ export declare namespace Machine {
3144
3215
  * @category utility types
3145
3216
  * @since 0.4.0
3146
3217
  */
3147
- type EventTransitionReturn<Transition> = Transition extends {
3218
+ type EventTransitionReturn<Transition> = Transition extends (...args: any) => infer Authored ? Authored extends TransitionBuilderEvidence<infer Result, any> ? Result : never : Transition extends {
3148
3219
  readonly resolve?: infer Resolve;
3149
3220
  } ? NonNullable<Resolve> extends (...args: any) => infer Ret ? Ret : never : never;
3150
3221
  /**
@@ -3310,32 +3381,15 @@ export declare namespace Machine {
3310
3381
  * @since 0.4.0
3311
3382
  */
3312
3383
  type ConfigServices<Config> = Effect.Services<EventHandlerReturn<Config>> | Effect.Services<AlwaysReturn<Config>> | Effect.Services<DoneReturn<Config>> | Effect.Services<StateActionReturn<Config, "entry">> | Effect.Services<StateActionReturn<Config, "exit">> | Effect.Services<HistoryDefaultReturn<Config>> | Effect.Services<ChoiceReturn<Config>> | InvokeRequirements<Config>;
3313
- /** Type evidence retained by {@link transition} without affecting runtime data. */
3314
- interface TransitionTyped<States extends StateSchemas, Events extends ReadonlyArray<TaggedSchema>, Emits extends ReadonlyArray<TaggedSchema>, StateId extends StateNodeIdentifier<States>, Context, Reenter extends boolean> {
3384
+ /** Type evidence retained by an authored transition without affecting runtime data. */
3385
+ interface TransitionTyped<States extends StateSchemas, Events extends ReadonlyArray<TaggedSchema>, Emits extends ReadonlyArray<TaggedSchema>, StateId extends StateNodeIdentifier<States>, Context, Reenter extends boolean, Acceptance extends TransitionAcceptance = "required"> {
3315
3386
  readonly [TransitionTypeId]: {
3316
3387
  readonly owner: Types.Covariant<readonly [States, Events, Emits, StateId, Context]>;
3317
- };
3318
- }
3319
- /** Type evidence for a targetless transition reusable in every owning context. */
3320
- interface TargetlessTransitionTyped {
3321
- readonly [TransitionTypeId]: {
3322
- readonly targetless: true;
3388
+ readonly acceptance: Types.Covariant<Acceptance>;
3323
3389
  };
3324
3390
  }
3325
3391
  /** The only transition value accepted by machine handler APIs. */
3326
- type TransitionConfig<States extends StateSchemas, Events extends ReadonlyArray<TaggedSchema>, Emits extends ReadonlyArray<TaggedSchema>, StateId extends StateNodeIdentifier<States>, Context, Reenter extends boolean = false> = (TransitionTyped<States, Events, Emits, StateId, Context, Reenter> | TargetlessTransitionTyped | TargetlessTransitionInput<Events, Emits, Context>) & {
3327
- readonly reenter?: [Reenter] extends [true] ? boolean : never;
3328
- };
3329
- /** Direct shorthand for a non-reentering targetless transition. */
3330
- interface TargetlessTransitionResolver<Events extends ReadonlyArray<TaggedSchema>, Emits extends ReadonlyArray<TaggedSchema>, Context> {
3331
- <ResolvedContext extends Omit<Context, "target">>(context: ResolvedContext, enqueue: Enqueue<EventOf<Events>, EmitOf<Emits>>): undefined;
3332
- }
3333
- type TargetlessTransitionInput<Events extends ReadonlyArray<TaggedSchema>, Emits extends ReadonlyArray<TaggedSchema>, Context> = {
3334
- readonly target: TargetlessSelector;
3335
- readonly resolve?: TargetlessTransitionResolver<Events, Emits, Context>;
3336
- readonly branches?: never;
3337
- readonly reenter?: never;
3338
- };
3392
+ type TransitionConfig<States extends StateSchemas, Events extends ReadonlyArray<TaggedSchema>, Emits extends ReadonlyArray<TaggedSchema>, StateId extends StateNodeIdentifier<States>, Context, Reenter extends boolean = false, Acceptance extends TransitionAcceptance = "required"> = TransitionBuilderInput<States, Events, Emits, StateId, Context, Reenter, Acceptance>;
3339
3393
  type SelectionBuilder<Selection> = Selection extends TargetSelection<infer Builder, any, any> ? Builder : never;
3340
3394
  type SelectionKind<Selection> = Selection extends TargetSelection<any, any, infer Kind> ? Kind : never;
3341
3395
  type SelectionPath<Selection> = Selection extends TargetSelection<any, infer Path, any> ? Path : never;
@@ -3343,16 +3397,18 @@ export declare namespace Machine {
3343
3397
  readonly from: (...args: any) => infer Result;
3344
3398
  } ? Result : never);
3345
3399
  type SelectedTargetResult<Selection> = SelectionBuilder<Selection> extends infer Builder ? TargetBuilderResult<Builder> : never;
3400
+ type SelectionSupportsDefaultConstruction<Selection> = SelectionKind<Selection> extends "none" ? true : SelectionBuilder<Selection> extends {
3401
+ readonly from: (...args: infer Args) => any;
3402
+ } ? [] extends Args ? true : false : SelectionBuilder<Selection> extends (...args: infer Args) => any ? [] extends Args ? true : false : false;
3346
3403
  type TransitionResolveContext<Context, Selection> = Omit<Context, "target"> & (SelectionKind<Selection> extends "none" ? {} : {
3347
3404
  readonly target: SelectionBuilder<Selection>;
3348
3405
  });
3406
+ /** Context capability available only to explicitly declinable resolvers. */
3407
+ interface DeclineCapability {
3408
+ readonly decline: () => Declined;
3409
+ }
3349
3410
  type TransitionResolver<Events extends ReadonlyArray<TaggedSchema>, Emits extends ReadonlyArray<TaggedSchema>, Context, Selection> = (context: TransitionResolveContext<Context, Selection>, enqueue: Enqueue<EventOf<Events>, EmitOf<Emits>>) => SelectionKind<Selection> extends "none" ? undefined : SelectedTargetResult<Selection> | undefined;
3350
- type TransitionDirectInput<States extends StateSchemas, Events extends ReadonlyArray<TaggedSchema>, Emits extends ReadonlyArray<TaggedSchema>, StateId extends StateNodeIdentifier<States>, Context, Reenter extends boolean, Selection extends TargetSelection<any, any, any>> = {
3351
- readonly target: (to: TargetSelector<States, StateId>) => Selection;
3352
- readonly resolve?: TransitionResolver<Events, Emits, Context, Selection>;
3353
- readonly branches?: never;
3354
- readonly reenter?: Reenter;
3355
- };
3411
+ type DeclinableTransitionResolver<Events extends ReadonlyArray<TaggedSchema>, Emits extends ReadonlyArray<TaggedSchema>, Context, Selection> = (context: TransitionResolveContext<Context, Selection> & DeclineCapability, enqueue: Enqueue<EventOf<Events>, EmitOf<Emits>>) => (SelectionKind<Selection> extends "none" ? undefined : SelectedTargetResult<Selection> | undefined) | Declined;
3356
3412
  /** One named destination declared by a branching transition. */
3357
3413
  interface TransitionBranchInput<Selection extends TargetSelection<any, any, any> = TargetSelection<any, any, any>> {
3358
3414
  readonly target: Selection;
@@ -3387,24 +3443,82 @@ export declare namespace Machine {
3387
3443
  readonly select: BranchSelectors<Branches>;
3388
3444
  };
3389
3445
  type TransitionBranchesResolver<Events extends ReadonlyArray<TaggedSchema>, Emits extends ReadonlyArray<TaggedSchema>, Context, Branches extends Readonly<Record<string, TransitionBranchInput>>> = (context: TransitionBranchesResolveContext<Context, Branches>, enqueue: Enqueue<EventOf<Events>, EmitOf<Emits>>) => BranchSelectionResult<Branches>;
3390
- type TransitionBranchesInput<States extends StateSchemas, Events extends ReadonlyArray<TaggedSchema>, Emits extends ReadonlyArray<TaggedSchema>, StateId extends StateNodeIdentifier<States>, Context, Reenter extends boolean, Branches extends Readonly<Record<string, TransitionBranchInput>>> = {
3391
- readonly target?: never;
3392
- /**
3393
- * Declares every possible destination under a stable semantic key.
3394
- *
3395
- * Branches are captured once in ECMAScript property order. Array-index
3396
- * keys are rejected so reordering ordinary named properties affects only
3397
- * presentation order; the key remains the testing and inspection identity.
3398
- */
3399
- readonly branches: (to: TargetSelector<States, StateId>) => Branches;
3400
- readonly resolve: TransitionBranchesResolver<Events, Emits, Context, Branches>;
3401
- readonly reenter?: Reenter;
3446
+ type DeclinableTransitionBranchesResolver<Events extends ReadonlyArray<TaggedSchema>, Emits extends ReadonlyArray<TaggedSchema>, Context, Branches extends Readonly<Record<string, TransitionBranchInput>>> = (context: TransitionBranchesResolveContext<Context, Branches> & DeclineCapability, enqueue: Enqueue<EventOf<Events>, EmitOf<Emits>>) => BranchSelectionResult<Branches> | Declined;
3447
+ /** @internal Type evidence retained by a transition authored through its bound selector. */
3448
+ interface TransitionBuilderEvidence<out Result, out Acceptance extends TransitionAcceptance> {
3449
+ readonly [TransitionBuilderTypeId]: {
3450
+ readonly result: Types.Covariant<Result>;
3451
+ readonly acceptance: Types.Covariant<Acceptance>;
3452
+ };
3453
+ }
3454
+ type TransitionReenterOption<Reenter extends boolean> = [Reenter] extends [true] ? {
3455
+ readonly reenter?: boolean;
3456
+ } : {
3457
+ readonly reenter?: never;
3458
+ };
3459
+ type TransitionRequiredOptions<Reenter extends boolean> = TransitionReenterOption<Reenter> & {
3460
+ readonly declinable?: false;
3461
+ };
3462
+ type TransitionDeclinableOptions<Reenter extends boolean> = TransitionReenterOption<Reenter> & {
3463
+ readonly declinable: true;
3464
+ };
3465
+ type BuiltTransition<States extends StateSchemas, Events extends ReadonlyArray<TaggedSchema>, Emits extends ReadonlyArray<TaggedSchema>, StateId extends StateNodeIdentifier<States>, Context, Reenter extends boolean, Result, Acceptance extends TransitionAcceptance> = TransitionTyped<States, Events, Emits, StateId, Context, Reenter, Acceptance> & TransitionBuilderEvidence<Result, Acceptance>;
3466
+ interface TransitionResolveRequired<States extends StateSchemas, Events extends ReadonlyArray<TaggedSchema>, Emits extends ReadonlyArray<TaggedSchema>, StateId extends StateNodeIdentifier<States>, Context, Reenter extends boolean, Selection extends TargetSelection<any, any, any>> {
3467
+ (resolve: TransitionResolver<Events, Emits, Context, Selection>, options?: TransitionRequiredOptions<Reenter>): BuiltTransition<States, Events, Emits, StateId, Context, Reenter, SelectionKind<Selection> extends "none" ? undefined : SelectedTargetResult<Selection> | undefined, "required">;
3468
+ }
3469
+ interface TransitionResolveDeclinable<States extends StateSchemas, Events extends ReadonlyArray<TaggedSchema>, Emits extends ReadonlyArray<TaggedSchema>, StateId extends StateNodeIdentifier<States>, Context, Reenter extends boolean, Selection extends TargetSelection<any, any, any>> {
3470
+ (resolve: DeclinableTransitionResolver<Events, Emits, Context, Selection>, options: TransitionDeclinableOptions<Reenter>): BuiltTransition<States, Events, Emits, StateId, Context, Reenter, (SelectionKind<Selection> extends "none" ? undefined : SelectedTargetResult<Selection> | undefined) | Declined, "declinable">;
3471
+ }
3472
+ /** A selected transition target with target-specific resolver operations. */
3473
+ type TransitionTarget<States extends StateSchemas, Events extends ReadonlyArray<TaggedSchema>, Emits extends ReadonlyArray<TaggedSchema>, StateId extends StateNodeIdentifier<States>, Context, Reenter extends boolean, Acceptance extends TransitionAcceptance, Selection extends TargetSelection<any, any, any>> = Selection & (SelectionSupportsDefaultConstruction<Selection> extends true ? BuiltTransition<States, Events, Emits, StateId, Context, Reenter, SelectionKind<Selection> extends "none" ? undefined : SelectedTargetResult<Selection> | undefined, "required"> : {}) & {
3474
+ readonly resolve: TransitionResolveRequired<States, Events, Emits, StateId, Context, Reenter, Selection> & ("declinable" extends Acceptance ? TransitionResolveDeclinable<States, Events, Emits, StateId, Context, Reenter, Selection> : {});
3475
+ } & ([Reenter] extends [true] ? SelectionSupportsDefaultConstruction<Selection> extends true ? {
3476
+ readonly reenter: () => BuiltTransition<States, Events, Emits, StateId, Context, Reenter, SelectionKind<Selection> extends "none" ? undefined : SelectedTargetResult<Selection> | undefined, "required">;
3477
+ } : {} : {});
3478
+ /** @internal Type evidence retained by a machine initial-entry declaration. */
3479
+ interface InitialBuilderEvidence<out Selection> {
3480
+ readonly [InitialBuilderTypeId]: Types.Covariant<Selection>;
3481
+ }
3482
+ /** A selected machine initial entry with its exact resolver target. */
3483
+ type InitialTransitionTarget<Input, Selection extends TargetSelection<any, any, any>> = Selection & (SelectionSupportsDefaultConstruction<Selection> extends true ? InitialBuilderEvidence<Selection> : {}) & {
3484
+ readonly resolve: (resolve: (context: {
3485
+ readonly input: Input;
3486
+ readonly target: SelectionBuilder<Selection>;
3487
+ }) => SelectedTargetResult<Selection>) => InitialBuilderEvidence<Selection>;
3488
+ };
3489
+ type InitialSelectorNode<Input, Node> = Node extends (...args: infer Args) => infer Selection ? Selection extends TargetSelection<any, any, any> ? ((...args: Args) => InitialTransitionTarget<Input, Selection>) & {
3490
+ readonly [Key in keyof Node]: InitialSelectorNode<Input, Node[Key]>;
3491
+ } : never : Node extends TargetSelection<any, any, any> ? InitialTransitionTarget<Input, Node> : {
3492
+ readonly [Key in keyof Node]: InitialSelectorNode<Input, Node[Key]>;
3493
+ };
3494
+ /** Definition-time selector for a machine's top-level initial entry. */
3495
+ type InitialSelector<States extends StateSchemas, Input = void> = InitialSelectorNode<Input, InitialTargetSelector<States>>;
3496
+ /** Target-first initial-entry declaration accepted by {@link make}. */
3497
+ type InitialBuilderInput<States extends StateSchemas, Input> = (to: InitialSelector<States, Input>) => InitialBuilderEvidence<TargetSelection<any, any, any>>;
3498
+ type TransitionSelectorNode<States extends StateSchemas, Events extends ReadonlyArray<TaggedSchema>, Emits extends ReadonlyArray<TaggedSchema>, StateId extends StateNodeIdentifier<States>, Context, Reenter extends boolean, Acceptance extends TransitionAcceptance, Node> = Node extends (...args: infer Args) => infer Selection ? Selection extends TargetSelection<any, any, any> ? ((...args: Args) => TransitionTarget<States, Events, Emits, StateId, Context, Reenter, Acceptance, Selection>) & {
3499
+ readonly [Key in keyof Node]: TransitionSelectorNode<States, Events, Emits, StateId, Context, Reenter, Acceptance, Node[Key]>;
3500
+ } : never : Node extends TargetSelection<any, any, any> ? TransitionTarget<States, Events, Emits, StateId, Context, Reenter, Acceptance, Node> : {
3501
+ readonly [Key in keyof Node]: TransitionSelectorNode<States, Events, Emits, StateId, Context, Reenter, Acceptance, Node[Key]>;
3502
+ };
3503
+ interface TransitionBranchesResolveRequired<States extends StateSchemas, Events extends ReadonlyArray<TaggedSchema>, Emits extends ReadonlyArray<TaggedSchema>, StateId extends StateNodeIdentifier<States>, Context, Reenter extends boolean, Branches extends Readonly<Record<string, TransitionBranchInput>>> {
3504
+ (resolve: TransitionBranchesResolver<Events, Emits, Context, Branches>, options?: TransitionRequiredOptions<Reenter>): BuiltTransition<States, Events, Emits, StateId, Context, Reenter, BranchSelectionResult<Branches>, "required">;
3505
+ }
3506
+ interface TransitionBranchesResolveDeclinable<States extends StateSchemas, Events extends ReadonlyArray<TaggedSchema>, Emits extends ReadonlyArray<TaggedSchema>, StateId extends StateNodeIdentifier<States>, Context, Reenter extends boolean, Branches extends Readonly<Record<string, TransitionBranchInput>>> {
3507
+ (resolve: DeclinableTransitionBranchesResolver<Events, Emits, Context, Branches>, options: TransitionDeclinableOptions<Reenter>): BuiltTransition<States, Events, Emits, StateId, Context, Reenter, BranchSelectionResult<Branches> | Declined, "declinable">;
3508
+ }
3509
+ /** Selector supplied to inline transition declarations. */
3510
+ type TransitionSelector<States extends StateSchemas, Events extends ReadonlyArray<TaggedSchema>, Emits extends ReadonlyArray<TaggedSchema>, StateId extends StateNodeIdentifier<States>, Context, Reenter extends boolean, Acceptance extends TransitionAcceptance> = TransitionSelectorNode<States, Events, Emits, StateId, Context, Reenter, Acceptance, TargetSelector<States, StateId>> & {
3511
+ readonly branches: <const Branches extends Readonly<Record<string, TransitionBranchInput>>>(branches: Branches & ValidateTransitionBranchRecord<NoInfer<Branches>>) => {
3512
+ readonly resolve: TransitionBranchesResolveRequired<States, Events, Emits, StateId, Context, Reenter, Branches> & ("declinable" extends Acceptance ? TransitionBranchesResolveDeclinable<States, Events, Emits, StateId, Context, Reenter, Branches> : {});
3513
+ };
3402
3514
  };
3403
- type InvokeTransition<States extends StateSchemas, Events extends ReadonlyArray<TaggedSchema>, Emits extends ReadonlyArray<TaggedSchema>, StateId extends StateNodeIdentifier<States>, Context> = TransitionConfig<States, Events, Emits, StateId, Context, true>;
3515
+ /** Inline transition declaration accepted by state and invocation handlers. */
3516
+ type TransitionBuilderInput<States extends StateSchemas, Events extends ReadonlyArray<TaggedSchema>, Emits extends ReadonlyArray<TaggedSchema>, StateId extends StateNodeIdentifier<States>, Context, Reenter extends boolean, Acceptance extends TransitionAcceptance> = (to: TransitionSelector<States, Events, Emits, StateId, Context, Reenter, Acceptance>) => TransitionTyped<States, Events, Emits, StateId, Context, Reenter, Acceptance> & TransitionBuilderEvidence<any, Acceptance>;
3517
+ type InvokeTransition<States extends StateSchemas, Events extends ReadonlyArray<TaggedSchema>, Emits extends ReadonlyArray<TaggedSchema>, StateId extends StateNodeIdentifier<States>, Context> = TransitionConfig<States, Events, Emits, StateId, Context, true, TransitionAcceptance>;
3404
3518
  type InvokeSource<Value, Context> = Value | ((context: Context) => Value);
3405
3519
  /** Inline state-owned work that runs for the lifetime of its active state. */
3406
- interface InvokeOwned<States extends StateSchemas, Events extends ReadonlyArray<TaggedSchema>, Emits extends ReadonlyArray<TaggedSchema>, StateId extends StateIdentifier<States>> {
3407
- readonly "~effect/Machine/InvokeOwner"?: Types.Covariant<readonly [States, Events, Emits, StateId]>;
3520
+ interface InvokeOwned<States extends StateSchemas, Events extends ReadonlyArray<TaggedSchema>, Emits extends ReadonlyArray<TaggedSchema>, StateId extends StateIdentifier<States>, InputEvents extends ReadonlyArray<TaggedSchema> = Events, ParentEvents extends ReadonlyArray<TaggedSchema> = readonly []> {
3521
+ readonly "~effect/Machine/InvokeOwner"?: Types.Covariant<readonly [States, Events, Emits, StateId, InputEvents, ParentEvents]>;
3408
3522
  }
3409
3523
  /** Type evidence retained by {@link invoke} without affecting runtime data. */
3410
3524
  interface InvokeTyped<Output, Error, Requirements, InitialError, Emits = never, ParentEvent = never> {
@@ -3417,7 +3531,7 @@ export declare namespace Machine {
3417
3531
  readonly parentEvents: Types.Covariant<ParentEvent>;
3418
3532
  };
3419
3533
  }
3420
- type InvokeConfig<States extends StateSchemas, Events extends ReadonlyArray<TaggedSchema>, Emits extends ReadonlyArray<TaggedSchema>, StateId extends StateIdentifier<States>, InputEvents extends ReadonlyArray<TaggedSchema> = Events, ParentEvents extends ReadonlyArray<TaggedSchema> = readonly []> = InvokeOwned<States, Events, Emits, StateId> & ({
3534
+ type InvokeConfig<States extends StateSchemas, Events extends ReadonlyArray<TaggedSchema>, Emits extends ReadonlyArray<TaggedSchema>, StateId extends StateIdentifier<States>, InputEvents extends ReadonlyArray<TaggedSchema> = Events, ParentEvents extends ReadonlyArray<TaggedSchema> = readonly []> = InvokeOwned<States, Events, Emits, StateId, InputEvents, ParentEvents> & ({
3421
3535
  readonly id: string;
3422
3536
  readonly effect: (context: InvokeContext<States, Events, Emits, StateId, InputEvents, ParentEvents>) => Effect.Effect<any, any, any>;
3423
3537
  readonly stream?: never;
@@ -3563,7 +3677,7 @@ export declare namespace Machine {
3563
3677
  type LogicServicesOf<Value> = Effect.Services<LogicInitialEffectOf<Value> | LogicRunEffectOf<Value>>;
3564
3678
  type LogicOutputOf<Value> = Effect.Success<LogicRunEffectOf<Value>>;
3565
3679
  type LogicInitialErrorOf<Value> = Effect.Error<LogicInitialEffectOf<Value>>;
3566
- type ContextualInvokeConfig<States extends StateSchemas, Events extends ReadonlyArray<TaggedSchema>, Emits extends ReadonlyArray<TaggedSchema>, StateId extends StateIdentifier<States>, InputEvents extends ReadonlyArray<TaggedSchema>, ParentEvents extends ReadonlyArray<TaggedSchema>, Raw> = Raw extends InvokeTyped<any, any, any, any, any> ? unknown : Raw extends {
3680
+ type ContextualInvokeConfig<States extends StateSchemas, Events extends ReadonlyArray<TaggedSchema>, Emits extends ReadonlyArray<TaggedSchema>, StateId extends StateIdentifier<States>, InputEvents extends ReadonlyArray<TaggedSchema>, ParentEvents extends ReadonlyArray<TaggedSchema>, Raw> = Raw extends InvokeTyped<any, any, any, any, any> ? unknown : [Extract<keyof Raw, "onDone" | "onFailure" | "onElement" | "onSnapshot">] extends [never] ? unknown : Raw extends {
3567
3681
  readonly effect: infer Source;
3568
3682
  } ? InvokeFactoryResult<Source> extends infer Fx extends Effect.Effect<any, any, any> ? InvokeDoneRequirement<Effect.Success<Fx>, InvokeTransition<States, Events, Emits, StateId, InvokeDoneContext<States, Events, Emits, StateId, Effect.Success<Fx>, InputEvents, ParentEvents>>> & InvokeFailureRequirement<Effect.Error<Fx>, InvokeTransition<States, Events, Emits, StateId, InvokeFailureContext<States, Events, Emits, StateId, Effect.Error<Fx>, InputEvents, ParentEvents>>> & {
3569
3683
  readonly onSnapshot?: never;
@@ -3619,10 +3733,10 @@ export declare namespace Machine {
3619
3733
  readonly entry?: (context: StateActionContext<States, Events, Emits, StateId, InputEvents, ParentEvents>, enqueue: Enqueue<EventOf<Events>, EmitOf<Emits>>) => StateActionResult<any, any>;
3620
3734
  readonly exit?: (context: StateActionContext<States, Events, Emits, StateId, InputEvents, ParentEvents>, enqueue: Enqueue<EventOf<Events>, EmitOf<Emits>>) => StateActionResult<any, any>;
3621
3735
  readonly invoke?: InvokeDefinition<States, Events, Emits, StateId, InputEvents, ParentEvents> | TypedInvokeDefinition;
3622
- readonly always?: TransitionConfig<States, Events, Emits, StateId, AlwaysContext<States, Events, Emits, StateId, InputEvents, ParentEvents>>;
3623
- readonly onDone?: TransitionConfig<States, Events, Emits, StateId, DoneContext<States, Events, Emits, StateId, InputEvents, ParentEvents>>;
3736
+ readonly always?: TransitionConfig<States, Events, Emits, StateId, AlwaysContext<States, Events, Emits, StateId, InputEvents, ParentEvents>, false, TransitionAcceptance>;
3737
+ readonly onDone?: TransitionConfig<States, Events, Emits, StateId, DoneContext<States, Events, Emits, StateId, InputEvents, ParentEvents>, false, TransitionAcceptance>;
3624
3738
  readonly on?: {
3625
- readonly [EventTag in TagOf<Events[number]>]?: TransitionConfig<States, Events, Emits, StateId, HandlerContext<States, Events, Emits, StateId, EventTag, E, R, InputEvents, ParentEvents>, true>;
3739
+ readonly [EventTag in TagOf<Events[number]>]?: TransitionConfig<States, Events, Emits, StateId, HandlerContext<States, Events, Emits, StateId, EventTag, E, R, InputEvents, ParentEvents>, true, TransitionAcceptance>;
3626
3740
  };
3627
3741
  readonly initialize?: StateInitializeHandler<States, Events, Emits, StateId, InputEvents, ParentEvents>;
3628
3742
  } & ActiveOutputHandlerConfig<States, Events, StateId>;
@@ -3924,7 +4038,7 @@ export declare namespace Machine {
3924
4038
  * @category models
3925
4039
  * @since 0.4.0
3926
4040
  */
3927
- type EventHandlerMap<States extends StateSchemas, Events extends ReadonlyArray<TaggedSchema>, Emits extends ReadonlyArray<TaggedSchema>, StateId extends StateIdentifier<States>, EventTag extends TagOf<Events[number]>, E, R> = Readonly<Record<PropertyKey, TransitionConfig<States, Events, Emits, StateId, HandlerContext<States, Events, Emits, StateId, EventTag, E, R>, true>>>;
4041
+ type EventHandlerMap<States extends StateSchemas, Events extends ReadonlyArray<TaggedSchema>, Emits extends ReadonlyArray<TaggedSchema>, StateId extends StateIdentifier<States>, EventTag extends TagOf<Events[number]>, E, R> = Readonly<Record<PropertyKey, TransitionConfig<States, Events, Emits, StateId, HandlerContext<States, Events, Emits, StateId, EventTag, E, R>, true, TransitionAcceptance>>>;
3928
4042
  /**
3929
4043
  * Runtime state config stored for a single state tag.
3930
4044
  *
@@ -3935,8 +4049,8 @@ export declare namespace Machine {
3935
4049
  readonly entry?: (context: StateActionContext<States, Events, Emits, StateId>, enqueue: Enqueue<EventOf<Events>, EmitOf<Emits>>) => StateActionResult<E, R>;
3936
4050
  readonly exit?: (context: StateActionContext<States, Events, Emits, StateId>, enqueue: Enqueue<EventOf<Events>, EmitOf<Emits>>) => StateActionResult<E, R>;
3937
4051
  readonly invoke?: InvokeDefinition<States, Events, Emits, StateId>;
3938
- readonly always?: TransitionConfig<States, Events, Emits, StateId, AlwaysContext<States, Events, Emits, StateId>>;
3939
- readonly onDone?: TransitionConfig<States, Events, Emits, StateId, DoneContext<States, Events, Emits, StateId>>;
4052
+ readonly always?: TransitionConfig<States, Events, Emits, StateId, AlwaysContext<States, Events, Emits, StateId>, false, TransitionAcceptance>;
4053
+ readonly onDone?: TransitionConfig<States, Events, Emits, StateId, DoneContext<States, Events, Emits, StateId>, false, TransitionAcceptance>;
3940
4054
  readonly output?: ((context: FinalOutputContext<States, Events, StateId>) => unknown) | ((context: ParallelOutputContext<States, Events, StateId>) => unknown);
3941
4055
  readonly on?: EventHandlerMap<States, Events, Emits, StateId, EventTag, E, R>;
3942
4056
  }
@@ -4035,10 +4149,7 @@ export declare const state: StateConstructor;
4035
4149
  * Machine.make({
4036
4150
  * states: States.states,
4037
4151
  * events: Machine.events(),
4038
- * initial: {
4039
- * target: (to) => to.idle(),
4040
- * resolve: ({ target }) => target.from()
4041
- * }
4152
+ * initial: (to) => to.idle().resolve(({ target }) => target.from())
4042
4153
  * })
4043
4154
  * ```
4044
4155
  *
@@ -4046,31 +4157,22 @@ export declare const state: StateConstructor;
4046
4157
  * @since 0.4.0
4047
4158
  */
4048
4159
  export declare const states: StatesConstructor;
4049
- type InitialDirectInput<States extends Machine.StateSchemas, Input, Selection extends Machine.TargetSelection<any, any, any>> = {
4050
- readonly target: (to: Machine.InitialSelector<States>) => Selection;
4051
- readonly resolve?: (context: {
4052
- readonly input: Input;
4053
- readonly target: Machine.SelectionBuilder<Selection>;
4054
- }) => Machine.SelectedTargetResult<Selection>;
4055
- readonly cases?: never;
4056
- readonly otherwise?: never;
4057
- };
4058
- type MakeConfig<States extends Machine.StateSchemas, InputEvents extends ReadonlyArray<Machine.TaggedSchema>, Emits extends ReadonlyArray<Machine.TaggedSchema>, Input extends Schema.Top, InitialE, InitialR, InternalEvents extends ReadonlyArray<Machine.TaggedSchema>, ParentEvents extends ReadonlyArray<Machine.TaggedSchema>> = {
4160
+ type MakeConfig<States extends Machine.StateSchemas, InputEvents extends ReadonlyArray<Machine.TaggedSchema>, Emits extends ReadonlyArray<Machine.TaggedSchema>, Input extends Schema.Top, InitialE, InitialR, InternalEvents extends ReadonlyArray<Machine.TaggedSchema>, ParentDeclaration extends Parent.Any | undefined> = {
4059
4161
  readonly id?: string;
4060
4162
  readonly states: States & DefineStateTreeInput<NoInfer<States>>;
4061
4163
  readonly events: Machine.EventProtocol<"public", InputEvents> & ValidateInputEventProtocol<NoInfer<InputEvents>>;
4062
4164
  readonly internalEvents?: Machine.EventProtocol<"internal", InternalEvents> & ValidateInternalEventProtocol<NoInfer<InputEvents>, NoInfer<InternalEvents>>;
4063
4165
  readonly emittedEvents?: Machine.EventProtocol<"emitted", Emits>;
4064
- readonly parentEvents?: Machine.EventProtocol<"public", ParentEvents>;
4166
+ readonly parent?: ParentDeclaration;
4065
4167
  readonly input?: Input;
4066
4168
  readonly initial: unknown;
4067
4169
  };
4068
- type MakeResult<States extends Machine.StateSchemas, InputEvents extends ReadonlyArray<Machine.TaggedSchema>, Emits extends ReadonlyArray<Machine.TaggedSchema>, Input extends Schema.Top, InitialE, InitialR, InternalEvents extends ReadonlyArray<Machine.TaggedSchema>, ParentEvents extends ReadonlyArray<Machine.TaggedSchema>> = Definition<States, readonly [...InputEvents, ...InternalEvents], Input, InitialE, InitialR, Machine.FinalStateFromDefinition<States>, Machine.TerminalOutput<States>, Emits, InputEvents, ParentEvents>;
4170
+ type MakeResult<States extends Machine.StateSchemas, InputEvents extends ReadonlyArray<Machine.TaggedSchema>, Emits extends ReadonlyArray<Machine.TaggedSchema>, Input extends Schema.Top, InitialE, InitialR, InternalEvents extends ReadonlyArray<Machine.TaggedSchema>, ParentDeclaration extends Parent.Any | undefined> = Definition<States, readonly [...InputEvents, ...InternalEvents], Input, InitialE, InitialR, Machine.FinalStateFromDefinition<States>, Machine.TerminalOutput<States>, Emits, InputEvents, Machine.ParentEventsOf<ParentDeclaration>>;
4069
4171
  interface Make {
4070
- <const States extends Machine.StateSchemas, const InputEvents extends ReadonlyArray<Machine.TaggedSchema>, const Emits extends ReadonlyArray<Machine.TaggedSchema> = readonly [], const Input extends Schema.Top = typeof Schema.Void, InitialE = never, InitialR = never, const InternalEvents extends ReadonlyArray<Machine.TaggedSchema> = readonly [], const ParentEvents extends ReadonlyArray<Machine.TaggedSchema> = readonly [], const InitialSelection extends Machine.TargetSelection<any, any, any> = Machine.TargetSelection<any, any, any>>(config: Omit<MakeConfig<States, InputEvents, Emits, Input, InitialE, InitialR, InternalEvents, ParentEvents>, "initial"> & {
4071
- readonly initial: InitialDirectInput<States, Input["Type"], InitialSelection>;
4072
- }, ..._validation: ValidateDefinedStates<NoInfer<States>>): MakeResult<States, InputEvents, Emits, Input, InitialE, InitialR, InternalEvents, ParentEvents>;
4073
- <const States extends Machine.StateSchemas, const InputEvents extends ReadonlyArray<Machine.TaggedSchema>, const Emits extends ReadonlyArray<Machine.TaggedSchema> = readonly [], const Input extends Schema.Top = typeof Schema.Void, InitialE = never, InitialR = never, const InternalEvents extends ReadonlyArray<Machine.TaggedSchema> = readonly [], const ParentEvents extends ReadonlyArray<Machine.TaggedSchema> = readonly []>(config: Omit<MakeConfig<States, InputEvents, Emits, Input, InitialE, InitialR, InternalEvents, ParentEvents>, "states"> & {
4172
+ <const States extends Machine.StateSchemas, const InputEvents extends ReadonlyArray<Machine.TaggedSchema>, const Emits extends ReadonlyArray<Machine.TaggedSchema> = readonly [], const Input extends Schema.Top = typeof Schema.Void, InitialE = never, InitialR = never, const InternalEvents extends ReadonlyArray<Machine.TaggedSchema> = readonly [], const ParentDeclaration extends Parent.Any | undefined = undefined>(config: Omit<MakeConfig<States, InputEvents, Emits, Input, InitialE, InitialR, InternalEvents, ParentDeclaration>, "initial"> & {
4173
+ readonly initial: Machine.InitialBuilderInput<States, Input["Type"]>;
4174
+ }, ..._validation: ValidateDefinedStates<NoInfer<States>>): MakeResult<States, InputEvents, Emits, Input, InitialE, InitialR, InternalEvents, ParentDeclaration>;
4175
+ <const States extends Machine.StateSchemas, const InputEvents extends ReadonlyArray<Machine.TaggedSchema>, const Emits extends ReadonlyArray<Machine.TaggedSchema> = readonly [], const Input extends Schema.Top = typeof Schema.Void, InitialE = never, InitialR = never, const InternalEvents extends ReadonlyArray<Machine.TaggedSchema> = readonly [], const ParentDeclaration extends Parent.Any | undefined = undefined>(config: Omit<MakeConfig<States, InputEvents, Emits, Input, InitialE, InitialR, InternalEvents, ParentDeclaration>, "states"> & {
4074
4176
  readonly states: InvalidDefinedStateTreeInput<States>;
4075
4177
  }): never;
4076
4178
  }
@@ -4085,11 +4187,17 @@ interface Make {
4085
4187
  * `states` or is passed inline. Call `handle` on the returned definition
4086
4188
  * to implement state behavior with ordinary TypeScript control flow.
4087
4189
  *
4190
+ * `initial` is a target-first callback. Its outer selector runs once while the
4191
+ * definition is captured; an attached `.resolve(...)` callback remains lazy
4192
+ * until initial planning. Return a bare selected state when its schema supports
4193
+ * default construction.
4194
+ *
4088
4195
  * `Machine.events` defines the public input protocol. `Machine.internalEvents`
4089
4196
  * adds raised events and other machine-local deliveries.
4090
- * `Machine.emittedEvents` defines outward ephemeral notifications, while
4091
- * `parentEvents` declares the inputs a child may explicitly send to its owning
4092
- * machine. All descriptors expose deferred constructors while retaining their
4197
+ * `Machine.emittedEvents` defines outward ephemeral notifications. The
4198
+ * `parent` configuration accepts `Machine.parent(events)` for a required owner
4199
+ * or `Machine.optionalParent(events)` for a root-capable machine. All
4200
+ * descriptors expose deferred constructors while retaining their
4093
4201
  * schemas opaquely for runtime validation. Public and internal tags must be
4094
4202
  * disjoint.
4095
4203
  *
@@ -4113,18 +4221,13 @@ interface Make {
4113
4221
  * const counter = Machine.make({
4114
4222
  * states: States.states,
4115
4223
  * events: Events,
4116
- * initial: {
4117
- * target: (to) => to.Count(),
4118
- * resolve: ({ target }) => target(new Count({ value: 0 }))
4119
- * }
4224
+ * initial: (to) => to.Count().resolve(({ target }) => target(new Count({ value: 0 })))
4120
4225
  * }).handle({
4121
4226
  * Count: {
4122
4227
  * on: {
4123
- * Increment: Machine.transition({
4124
- * target: (to) => to.full.Count(),
4125
- * resolve: ({ event, state, target }) =>
4126
- * target(new Count({ value: state.value + event.by }))
4127
- * })
4228
+ * Increment: (to) =>
4229
+ * to.full.Count().resolve(({ event, state, target }) =>
4230
+ * target(new Count({ value: state.value + event.by })))
4128
4231
  * }
4129
4232
  * }
4130
4233
  * })
@@ -4171,6 +4274,27 @@ export declare const events: {
4171
4274
  <const Schemas extends ReadonlyArray<Machine.TaggedSchema>>(...schemas: Schemas & ValidateInputEventProtocol<NoInfer<Schemas>>): Machine.EventProtocol<"public", readonly [...Schemas]>;
4172
4275
  <const Inputs extends ReadonlyArray<Machine.EventProtocolInput<"public">>>(...inputs: Inputs & ValidateEventProtocolBuilder<"public", Inputs>): Machine.EventProtocol<"public", Machine.EventProtocolInputSchemasOf<"public", Inputs>>;
4173
4276
  };
4277
+ /**
4278
+ * Requires the machine to run as an owned child whose parent accepts the
4279
+ * supplied public event protocol.
4280
+ *
4281
+ * Required-parent machines expose a non-optional `parent` target in behavior
4282
+ * contexts and are rejected by root execution APIs.
4283
+ *
4284
+ * @category constructors
4285
+ * @since 0.17.0
4286
+ */
4287
+ export declare const parent: <const Events extends ReadonlyArray<Machine.TaggedSchema>>(events: Machine.EventProtocol<"public", Events>) => Parent<"required", Events>;
4288
+ /**
4289
+ * Declares public events a machine may send to its owner while preserving the
4290
+ * ability to run that machine as a root.
4291
+ *
4292
+ * Optional-parent machines expose `parent` as a possibly absent target.
4293
+ *
4294
+ * @category constructors
4295
+ * @since 0.17.0
4296
+ */
4297
+ export declare const optionalParent: <const Events extends ReadonlyArray<Machine.TaggedSchema>>(events: Machine.EventProtocol<"public", Events>) => Parent<"optional", Events>;
4174
4298
  /**
4175
4299
  * Defines an internal event protocol and returns deferred constructors for
4176
4300
  * every statically finite configured event tag.
@@ -4259,10 +4383,7 @@ export declare const emittedEvents: {
4259
4383
  * const machine = Machine.make({
4260
4384
  * states: States.states,
4261
4385
  * events: Machine.events(),
4262
- * initial: {
4263
- * target: (to) => to.Idle(),
4264
- * resolve: ({ target }) => target.from()
4265
- * }
4386
+ * initial: (to) => to.Idle().resolve(({ target }) => target.from())
4266
4387
  * }).handle({ Idle: {} })
4267
4388
  *
4268
4389
  * const encoded = Effect.gen(function*() {
@@ -4306,10 +4427,7 @@ export declare const encodeSnapshot: <const States extends Machine.StateSchemas,
4306
4427
  * const machine = Machine.make({
4307
4428
  * states: States.states,
4308
4429
  * events: Machine.events(),
4309
- * initial: {
4310
- * target: (to) => to.Idle(),
4311
- * resolve: ({ target }) => target.from()
4312
- * }
4430
+ * initial: (to) => to.Idle().resolve(({ target }) => target.from())
4313
4431
  * }).handle({ Idle: {} })
4314
4432
  *
4315
4433
  * const roundTrip = Effect.gen(function*() {
@@ -4337,7 +4455,7 @@ type EffectInvokeSource<States extends Machine.StateSchemas, Events extends Read
4337
4455
  };
4338
4456
  type EffectDoneHandler<States extends Machine.StateSchemas, Events extends ReadonlyArray<Machine.TaggedSchema>, Emits extends ReadonlyArray<Machine.TaggedSchema>, InputEvents extends ReadonlyArray<Machine.TaggedSchema>, ParentEvents extends ReadonlyArray<Machine.TaggedSchema>, StateId extends Machine.StateIdentifier<States>, Source extends (...args: ReadonlyArray<never>) => Effect.Effect<unknown, unknown, unknown>> = Machine.InvokeTransition<States, Events, Emits, StateId, Machine.InvokeDoneContext<States, Events, Emits, StateId, Effect.Success<ReturnType<NoInfer<Source>>>, InputEvents, ParentEvents>>;
4339
4457
  type EffectFailureHandler<States extends Machine.StateSchemas, Events extends ReadonlyArray<Machine.TaggedSchema>, Emits extends ReadonlyArray<Machine.TaggedSchema>, InputEvents extends ReadonlyArray<Machine.TaggedSchema>, ParentEvents extends ReadonlyArray<Machine.TaggedSchema>, StateId extends Machine.StateIdentifier<States>, Source extends (...args: ReadonlyArray<never>) => Effect.Effect<unknown, unknown, unknown>> = Machine.InvokeTransition<States, Events, Emits, StateId, Machine.InvokeFailureContext<States, Events, Emits, StateId, Effect.Error<ReturnType<NoInfer<Source>>>, InputEvents, ParentEvents>>;
4340
- type EffectInvokeResult<States extends Machine.StateSchemas, Events extends ReadonlyArray<Machine.TaggedSchema>, Emits extends ReadonlyArray<Machine.TaggedSchema>, InputEvents extends ReadonlyArray<Machine.TaggedSchema>, ParentEvents extends ReadonlyArray<Machine.TaggedSchema>, StateId extends Machine.StateIdentifier<States>, Source extends (...args: ReadonlyArray<never>) => Effect.Effect<unknown, unknown, unknown>> = Machine.InvokeConfig<States, Events, Emits, StateId, InputEvents, ParentEvents> & Machine.InvokeTyped<Effect.Success<ReturnType<Source>>, Effect.Error<ReturnType<Source>>, Effect.Services<ReturnType<Source>>, never>;
4458
+ type EffectInvokeResult<States extends Machine.StateSchemas, Events extends ReadonlyArray<Machine.TaggedSchema>, Emits extends ReadonlyArray<Machine.TaggedSchema>, InputEvents extends ReadonlyArray<Machine.TaggedSchema>, ParentEvents extends ReadonlyArray<Machine.TaggedSchema>, StateId extends Machine.StateIdentifier<States>, Source extends (...args: ReadonlyArray<never>) => Effect.Effect<unknown, unknown, unknown>> = Machine.InvokeOwned<States, Events, Emits, StateId, InputEvents, ParentEvents> & Machine.InvokeTyped<Effect.Success<ReturnType<Source>>, Effect.Error<ReturnType<Source>>, Effect.Services<ReturnType<Source>>, never>;
4341
4459
  type StreamInvokeSource<States extends Machine.StateSchemas, Events extends ReadonlyArray<Machine.TaggedSchema>, Emits extends ReadonlyArray<Machine.TaggedSchema>, InputEvents extends ReadonlyArray<Machine.TaggedSchema>, ParentEvents extends ReadonlyArray<Machine.TaggedSchema>, StateId extends Machine.StateIdentifier<States>, Source extends (...args: ReadonlyArray<any>) => unknown> = {
4342
4460
  readonly id: InvokeLifecycleId;
4343
4461
  readonly stream: Source & ((context: Machine.InvokeContext<States, Events, Emits, StateId, InputEvents, ParentEvents>) => unknown);
@@ -4352,180 +4470,14 @@ type StreamSourceResult<Source extends (...args: ReadonlyArray<any>) => unknown>
4352
4470
  type StreamElementHandler<States extends Machine.StateSchemas, Events extends ReadonlyArray<Machine.TaggedSchema>, Emits extends ReadonlyArray<Machine.TaggedSchema>, InputEvents extends ReadonlyArray<Machine.TaggedSchema>, ParentEvents extends ReadonlyArray<Machine.TaggedSchema>, StateId extends Machine.StateIdentifier<States>, Source extends (...args: ReadonlyArray<any>) => unknown> = Machine.InvokeTransition<States, Events, Emits, StateId, Machine.InvokeElementContext<States, Events, Emits, StateId, Stream.Success<StreamSourceResult<NoInfer<Source>>>, InputEvents, ParentEvents>>;
4353
4471
  type StreamDoneHandler<States extends Machine.StateSchemas, Events extends ReadonlyArray<Machine.TaggedSchema>, Emits extends ReadonlyArray<Machine.TaggedSchema>, InputEvents extends ReadonlyArray<Machine.TaggedSchema>, ParentEvents extends ReadonlyArray<Machine.TaggedSchema>, StateId extends Machine.StateIdentifier<States>> = Machine.InvokeTransition<States, Events, Emits, StateId, Machine.InvokeDoneContext<States, Events, Emits, StateId, void, InputEvents, ParentEvents>>;
4354
4472
  type StreamFailureHandler<States extends Machine.StateSchemas, Events extends ReadonlyArray<Machine.TaggedSchema>, Emits extends ReadonlyArray<Machine.TaggedSchema>, InputEvents extends ReadonlyArray<Machine.TaggedSchema>, ParentEvents extends ReadonlyArray<Machine.TaggedSchema>, StateId extends Machine.StateIdentifier<States>, Source extends (...args: ReadonlyArray<any>) => unknown> = Machine.InvokeTransition<States, Events, Emits, StateId, Machine.InvokeFailureContext<States, Events, Emits, StateId, Stream.Error<StreamSourceResult<NoInfer<Source>>>, InputEvents, ParentEvents>>;
4355
- type StreamInvokeResult<States extends Machine.StateSchemas, Events extends ReadonlyArray<Machine.TaggedSchema>, Emits extends ReadonlyArray<Machine.TaggedSchema>, InputEvents extends ReadonlyArray<Machine.TaggedSchema>, ParentEvents extends ReadonlyArray<Machine.TaggedSchema>, StateId extends Machine.StateIdentifier<States>, Source extends (...args: ReadonlyArray<any>) => unknown> = Machine.InvokeConfig<States, Events, Emits, StateId, InputEvents, ParentEvents> & Machine.InvokeTyped<void, Stream.Error<StreamSourceResult<Source>>, Stream.Services<StreamSourceResult<Source>>, never>;
4473
+ type StreamInvokeResult<States extends Machine.StateSchemas, Events extends ReadonlyArray<Machine.TaggedSchema>, Emits extends ReadonlyArray<Machine.TaggedSchema>, InputEvents extends ReadonlyArray<Machine.TaggedSchema>, ParentEvents extends ReadonlyArray<Machine.TaggedSchema>, StateId extends Machine.StateIdentifier<States>, Source extends (...args: ReadonlyArray<any>) => unknown> = Machine.InvokeOwned<States, Events, Emits, StateId, InputEvents, ParentEvents> & Machine.InvokeTyped<void, Stream.Error<StreamSourceResult<Source>>, Stream.Services<StreamSourceResult<Source>>, never>;
4356
4474
  type InvokeChannelIsNever<Value> = IsAny<Value> extends true ? false : [Value] extends [never] ? true : false;
4357
- type BoundEffectInvokeSource<States extends Machine.StateSchemas, Events extends ReadonlyArray<Machine.TaggedSchema>, Emits extends ReadonlyArray<Machine.TaggedSchema>, InputEvents extends ReadonlyArray<Machine.TaggedSchema>, ParentEvents extends ReadonlyArray<Machine.TaggedSchema>, StateId extends Machine.StateIdentifier<States>, Source extends (context: Machine.InvokeContext<States, Events, Emits, StateId, InputEvents, ParentEvents>) => Effect.Effect<unknown, unknown, unknown>> = {
4358
- readonly id: InvokeLifecycleId;
4359
- readonly effect: Source;
4360
- readonly stream?: never;
4361
- readonly after?: never;
4362
- readonly logic?: never;
4363
- readonly child?: never;
4364
- readonly address?: never;
4365
- readonly onElement?: never;
4366
- readonly onSnapshot?: never;
4367
- };
4368
- type BoundEffectDoneHandler<States extends Machine.StateSchemas, Events extends ReadonlyArray<Machine.TaggedSchema>, Emits extends ReadonlyArray<Machine.TaggedSchema>, InputEvents extends ReadonlyArray<Machine.TaggedSchema>, ParentEvents extends ReadonlyArray<Machine.TaggedSchema>, StateId extends Machine.StateIdentifier<States>, Source extends (...args: ReadonlyArray<never>) => Effect.Effect<unknown, unknown, unknown>> = Machine.InvokeTransition<States, Events, Emits, StateId, Machine.InvokeDoneContext<States, Events, Emits, StateId, Effect.Success<ReturnType<NoInfer<Source>>>, InputEvents, ParentEvents>>;
4369
- type BoundEffectFailureHandler<States extends Machine.StateSchemas, Events extends ReadonlyArray<Machine.TaggedSchema>, Emits extends ReadonlyArray<Machine.TaggedSchema>, InputEvents extends ReadonlyArray<Machine.TaggedSchema>, ParentEvents extends ReadonlyArray<Machine.TaggedSchema>, StateId extends Machine.StateIdentifier<States>, Source extends (...args: ReadonlyArray<never>) => Effect.Effect<unknown, unknown, unknown>> = Machine.InvokeTransition<States, Events, Emits, StateId, Machine.InvokeFailureContext<States, Events, Emits, StateId, Effect.Error<ReturnType<NoInfer<Source>>>, InputEvents, ParentEvents>>;
4370
- type BoundEffectInvokeResult<States extends Machine.StateSchemas, Events extends ReadonlyArray<Machine.TaggedSchema>, Emits extends ReadonlyArray<Machine.TaggedSchema>, InputEvents extends ReadonlyArray<Machine.TaggedSchema>, ParentEvents extends ReadonlyArray<Machine.TaggedSchema>, StateId extends Machine.StateIdentifier<States>, Source extends (...args: ReadonlyArray<never>) => Effect.Effect<unknown, unknown, unknown>> = Machine.InvokeConfig<States, Events, Emits, StateId, InputEvents, ParentEvents> & Machine.InvokeTyped<Effect.Success<ReturnType<Source>>, Effect.Error<ReturnType<Source>>, Effect.Services<ReturnType<Source>>, never>;
4371
- /** Captures one exact named-branch topology while preserving handler inference. */
4372
- type BranchingTransitionResult<States extends Machine.StateSchemas, Events extends ReadonlyArray<Machine.TaggedSchema>, Emits extends ReadonlyArray<Machine.TaggedSchema>, StateId extends Machine.StateNodeIdentifier<States>, Context, Reenter extends boolean, Branches extends Readonly<Record<string, Machine.TransitionBranchInput>>> = Machine.TransitionBranchesInput<States, Events, Emits, StateId, Context, Reenter, Branches> & Machine.TransitionTyped<States, Events, Emits, StateId, Context, Reenter>;
4373
4475
  type TransitionBranchRecordError<Message extends string, Key extends PropertyKey = never> = {
4374
4476
  readonly "~effect/Machine/TransitionBranchRecordError": Message;
4375
4477
  readonly key: Key;
4376
4478
  };
4377
4479
  type InvalidStaticTransitionBranchKey<Branches> = Extract<keyof Branches, "" | number | symbol>;
4378
4480
  type ValidateTransitionBranchRecord<Branches> = [keyof Branches] extends [never] ? TransitionBranchRecordError<"Branch records must contain at least one branch"> : [InvalidStaticTransitionBranchKey<Branches>] extends [never] ? unknown : TransitionBranchRecordError<"Branch keys must be non-empty, non-index strings", InvalidStaticTransitionBranchKey<Branches>>;
4379
- /**
4380
- * Contextually types direct and branching transition definitions.
4381
- *
4382
- * @category constructors
4383
- * @since 0.14.0
4384
- */
4385
- export interface TransitionConstructor {
4386
- <const States extends Machine.StateSchemas, const Events extends ReadonlyArray<Machine.TaggedSchema>, const Emits extends ReadonlyArray<Machine.TaggedSchema>, StateId extends Machine.StateNodeIdentifier<States>, Context, const Selection extends Machine.TargetSelection<any, any, any>, Reenter extends boolean = never>(config: Machine.TransitionDirectInput<States, Events, Emits, StateId, Context, Reenter, Selection>): Machine.TransitionDirectInput<States, Events, Emits, StateId, Context, Reenter, Selection> & (Machine.SelectionKind<Selection> extends "none" ? Machine.TargetlessTransitionTyped : Machine.TransitionTyped<States, Events, Emits, StateId, Context, Reenter>);
4387
- <const States extends Machine.StateSchemas, const Events extends ReadonlyArray<Machine.TaggedSchema>, const Emits extends ReadonlyArray<Machine.TaggedSchema>, StateId extends Machine.StateNodeIdentifier<States>, Context, const Branches extends Readonly<Record<string, Machine.TransitionBranchInput>>, Reenter extends boolean = never>(config: Machine.TransitionBranchesInput<States, Events, Emits, StateId, Context, Reenter, Branches> & ValidateTransitionBranchRecord<NoInfer<Branches>>): BranchingTransitionResult<States, Events, Emits, StateId, Context, Reenter, Branches>;
4388
- }
4389
- /**
4390
- * Defines a statically inspectable transition.
4391
- *
4392
- * It is required for every event, lifecycle, choice, and invocation transition
4393
- * so the destination selected by `target` can contextually type the
4394
- * corresponding resolver. Branching transitions declare every possible
4395
- * destination up front, then select one through ordinary TypeScript control
4396
- * flow in `resolve`.
4397
- *
4398
- * ```ts
4399
- * Machine.transition({
4400
- * target: (to) => to.full.Ready(),
4401
- * resolve: ({ target }) => target.from()
4402
- * })
4403
- *
4404
- * Machine.transition({
4405
- * branches: (to) => ({
4406
- * cached: { target: to.full.Ready() },
4407
- * loading: { target: to.full.Loading() }
4408
- * }),
4409
- * resolve: ({ event, select }) => event.cached
4410
- * ? select.cached.from({ data: event.cached })
4411
- * : select.loading.from()
4412
- * })
4413
- * ```
4414
- *
4415
- * @category constructors
4416
- * @since 0.14.0
4417
- */
4418
- export declare const transition: TransitionConstructor;
4419
- /**
4420
- * Sentinel used by direct targetless transition shorthands.
4421
- *
4422
- * This is the concise form of `target: (to) => to.none()`.
4423
- *
4424
- * ```ts
4425
- * onElement: {
4426
- * target: Machine.targetless,
4427
- * resolve: ({ element }, enqueue) => {
4428
- * enqueue.raise(new MeasurementReceived({ value: element }))
4429
- * }
4430
- * }
4431
- *
4432
- * onDone: { target: Machine.targetless }
4433
- * ```
4434
- *
4435
- * @category constructors
4436
- * @since 0.16.0
4437
- */
4438
- export interface TargetlessSelector {
4439
- readonly "~effect/Machine/TargetlessSelector": true;
4440
- <const States extends Machine.StateSchemas, StateId extends Machine.StateNodeIdentifier<States>>(to: Machine.TargetSelector<States, StateId>): ReturnType<Machine.TargetSelector<States, StateId>["none"]>;
4441
- }
4442
- /**
4443
- * Selects no transition target while keeping enqueue operations explicit.
4444
- *
4445
- * Use as the `target` of a direct handler object when the handler should keep
4446
- * the current state configuration and only raise, emit, or send events.
4447
- *
4448
- * @category constructors
4449
- * @since 0.16.0
4450
- */
4451
- export declare const targetless: TargetlessSelector;
4452
- /**
4453
- * Machine-bound invocation constructor that preserves the owning machine's
4454
- * public input and parent protocols in every invocation callback.
4455
- *
4456
- * @category constructors
4457
- * @since 0.11.0
4458
- */
4459
- export interface Invoker<States extends Machine.StateSchemas, Events extends ReadonlyArray<Machine.TaggedSchema>, Emits extends ReadonlyArray<Machine.TaggedSchema>, InputEvents extends ReadonlyArray<Machine.TaggedSchema>, ParentEvents extends ReadonlyArray<Machine.TaggedSchema>> {
4460
- <StateId extends Machine.StateIdentifier<States>, const Source extends (context: Machine.InvokeContext<States, Events, Emits, StateId, InputEvents, ParentEvents>) => Effect.Effect<unknown, unknown, unknown>>(config: BoundEffectInvokeSource<States, Events, Emits, InputEvents, ParentEvents, StateId, Source> & {
4461
- readonly onDone: BoundEffectDoneHandler<States, Events, Emits, InputEvents, ParentEvents, StateId, Source>;
4462
- readonly onFailure: BoundEffectFailureHandler<States, Events, Emits, InputEvents, ParentEvents, StateId, Source>;
4463
- }, ..._validation: InvokeChannelIsNever<Effect.Success<ReturnType<Source>>> extends true ? [
4464
- "onDone must be omitted when the Effect output is never"
4465
- ] : InvokeChannelIsNever<Effect.Error<ReturnType<Source>>> extends true ? [
4466
- "onFailure must be omitted when the Effect error is never"
4467
- ] : []): BoundEffectInvokeResult<States, Events, Emits, InputEvents, ParentEvents, StateId, Source>;
4468
- <StateId extends Machine.StateIdentifier<States>, const Source extends (context: Machine.InvokeContext<States, Events, Emits, StateId, InputEvents, ParentEvents>) => Effect.Effect<unknown, never, unknown>>(config: BoundEffectInvokeSource<States, Events, Emits, InputEvents, ParentEvents, StateId, Source> & {
4469
- readonly onDone: BoundEffectDoneHandler<States, Events, Emits, InputEvents, ParentEvents, StateId, Source>;
4470
- readonly onFailure?: never;
4471
- }, ..._validation: InvokeChannelIsNever<Effect.Success<ReturnType<Source>>> extends true ? [
4472
- "onDone must be omitted when the Effect output is never"
4473
- ] : []): BoundEffectInvokeResult<States, Events, Emits, InputEvents, ParentEvents, StateId, Source>;
4474
- <StateId extends Machine.StateIdentifier<States>, const Source extends (context: Machine.InvokeContext<States, Events, Emits, StateId, InputEvents, ParentEvents>) => Effect.Effect<never, unknown, unknown>>(config: BoundEffectInvokeSource<States, Events, Emits, InputEvents, ParentEvents, StateId, Source> & {
4475
- readonly onDone?: never;
4476
- readonly onFailure: BoundEffectFailureHandler<States, Events, Emits, InputEvents, ParentEvents, StateId, Source>;
4477
- }, ..._validation: InvokeChannelIsNever<Effect.Error<ReturnType<Source>>> extends true ? [
4478
- "onFailure must be omitted when the Effect error is never"
4479
- ] : []): BoundEffectInvokeResult<States, Events, Emits, InputEvents, ParentEvents, StateId, Source>;
4480
- <StateId extends Machine.StateIdentifier<States>, const Source extends (context: Machine.InvokeContext<States, Events, Emits, StateId, InputEvents, ParentEvents>) => Effect.Effect<never, never, unknown>>(config: BoundEffectInvokeSource<States, Events, Emits, InputEvents, ParentEvents, StateId, Source> & {
4481
- readonly onDone?: never;
4482
- readonly onFailure?: never;
4483
- }): BoundEffectInvokeResult<States, Events, Emits, InputEvents, ParentEvents, StateId, Source>;
4484
- <StateId extends Machine.StateIdentifier<States>, const Source extends (context: Machine.InvokeContext<States, Events, Emits, StateId, InputEvents, ParentEvents>) => Stream.Stream<unknown, unknown, any>>(config: StreamInvokeSource<States, Events, Emits, InputEvents, ParentEvents, StateId, Source> & {
4485
- readonly onElement: StreamElementHandler<States, Events, Emits, InputEvents, ParentEvents, StateId, Source>;
4486
- readonly onDone: StreamDoneHandler<States, Events, Emits, InputEvents, ParentEvents, StateId>;
4487
- readonly onFailure: StreamFailureHandler<States, Events, Emits, InputEvents, ParentEvents, StateId, Source>;
4488
- }, ..._validation: InvokeChannelIsNever<Stream.Success<ReturnType<Source>>> extends true ? [
4489
- "onElement must be omitted when the Stream element is never"
4490
- ] : InvokeChannelIsNever<Stream.Error<ReturnType<Source>>> extends true ? [
4491
- "onFailure must be omitted when the Stream error is never"
4492
- ] : []): StreamInvokeResult<States, Events, Emits, InputEvents, ParentEvents, StateId, Source>;
4493
- <StateId extends Machine.StateIdentifier<States>, const Source extends (context: Machine.InvokeContext<States, Events, Emits, StateId, InputEvents, ParentEvents>) => Stream.Stream<never, unknown, any>>(config: StreamInvokeSource<States, Events, Emits, InputEvents, ParentEvents, StateId, Source> & {
4494
- readonly onElement?: never;
4495
- readonly onDone: StreamDoneHandler<States, Events, Emits, InputEvents, ParentEvents, StateId>;
4496
- readonly onFailure: StreamFailureHandler<States, Events, Emits, InputEvents, ParentEvents, StateId, Source>;
4497
- }, ..._validation: InvokeChannelIsNever<Stream.Error<ReturnType<Source>>> extends true ? [
4498
- "onFailure must be omitted when the Stream error is never"
4499
- ] : []): StreamInvokeResult<States, Events, Emits, InputEvents, ParentEvents, StateId, Source>;
4500
- <StateId extends Machine.StateIdentifier<States>, const Source extends (context: Machine.InvokeContext<States, Events, Emits, StateId, InputEvents, ParentEvents>) => Stream.Stream<never, never, any>>(config: StreamInvokeSource<States, Events, Emits, InputEvents, ParentEvents, StateId, Source> & {
4501
- readonly onElement?: never;
4502
- readonly onDone: StreamDoneHandler<States, Events, Emits, InputEvents, ParentEvents, StateId>;
4503
- readonly onFailure?: never;
4504
- }): StreamInvokeResult<States, Events, Emits, InputEvents, ParentEvents, StateId, Source>;
4505
- <StateId extends Machine.StateIdentifier<States>, const Source extends (context: Machine.InvokeContext<States, Events, Emits, StateId, InputEvents, ParentEvents>) => Stream.Stream<unknown, never, any>>(config: StreamInvokeSource<States, Events, Emits, InputEvents, ParentEvents, StateId, Source> & {
4506
- readonly onElement: StreamElementHandler<States, Events, Emits, InputEvents, ParentEvents, StateId, Source>;
4507
- readonly onDone: StreamDoneHandler<States, Events, Emits, InputEvents, ParentEvents, StateId>;
4508
- readonly onFailure?: never;
4509
- }): StreamInvokeResult<States, Events, Emits, InputEvents, ParentEvents, StateId, Source>;
4510
- <StateId extends Machine.StateIdentifier<States>, const Config extends object>(config: Config & Machine.TimerInvokeArgs<States, Events, Emits, StateId, InputEvents, ParentEvents>): Config & Machine.InvokeOwned<States, Events, Emits, StateId> & Machine.InvokeTyped<void, never, never, never>;
4511
- <StateId extends Machine.StateIdentifier<States>, const Source extends (context: Machine.InvokeContext<States, Events, Emits, StateId, InputEvents, ParentEvents>) => unknown, Address extends ChildAddress<never>>(config: {
4512
- readonly logic: Source;
4513
- } & Machine.LogicInvokeArgs<States, Events, Emits, StateId, Machine.LogicStateOf<ReturnType<Source>>, Machine.LogicEventOf<ReturnType<Source>>, Machine.LogicErrorOf<ReturnType<Source>>, Machine.LogicServicesOf<ReturnType<Source>>, Machine.LogicOutputOf<ReturnType<Source>>, Machine.LogicInitialErrorOf<ReturnType<Source>>, Address, Source, InputEvents, ParentEvents>, ..._validation: ReturnType<Source> extends {
4514
- readonly initial: unknown;
4515
- readonly run: unknown;
4516
- } ? [] : [
4517
- "logic factory must return Machine.Logic"
4518
- ]): Machine.InvokeConfig<States, Events, Emits, StateId, InputEvents, ParentEvents> & Machine.InvokeTyped<Machine.LogicOutputOf<ReturnType<Source>>, Machine.LogicErrorOf<ReturnType<Source>>, Machine.LogicServicesOf<ReturnType<Source>>, Machine.LogicInitialErrorOf<ReturnType<Source>>>;
4519
- <StateId extends Machine.StateIdentifier<States>, const Source, Address extends ChildAddress<never>>(config: {
4520
- readonly logic: Source;
4521
- } & Machine.LogicInvokeArgs<States, Events, Emits, StateId, Machine.LogicStateOf<Source>, Machine.LogicEventOf<Source>, Machine.LogicErrorOf<Source>, Machine.LogicServicesOf<Source>, Machine.LogicOutputOf<Source>, Machine.LogicInitialErrorOf<Source>, Address, Source, InputEvents, ParentEvents>, ..._validation: Source extends {
4522
- readonly initial: unknown;
4523
- readonly run: unknown;
4524
- } ? [] : [
4525
- "logic must implement Machine.Logic"
4526
- ]): Machine.InvokeConfig<States, Events, Emits, StateId, InputEvents, ParentEvents> & Machine.InvokeTyped<Machine.LogicOutputOf<Source>, Machine.LogicErrorOf<Source>, Machine.LogicServicesOf<Source>, Machine.LogicInitialErrorOf<Source>>;
4527
- <StateId extends Machine.StateIdentifier<States>, const Child extends ChildMachine.Any, const Config extends object>(config: Config & Machine.ChildInvokeArgs<States, Events, Emits, StateId, Child["machine"], Child, InputEvents, ParentEvents>): Config & Machine.InvokeOwned<States, Events, Emits, StateId> & Machine.InvokeTyped<Machine.Output<Child["machine"]>, Machine.Error<Child["machine"]> | ActionError<Machine.Services<Child["machine"]>>, Machine.Services<Child["machine"]>, Machine.InitialError<Child["machine"]>, Machine.Emit<Child["machine"]>, Machine.EventOf<Machine.ParentEvents<Child["machine"]>>>;
4528
- }
4529
4481
  /**
4530
4482
  * Preserves inference for a state-owned invocation configuration.
4531
4483
  *
@@ -4547,9 +4499,10 @@ export interface Invoker<States extends Machine.StateSchemas, Events extends Rea
4547
4499
  * `address` must not be repeated.
4548
4500
  *
4549
4501
  * Inside `handle(...)`, the owning definition contextually supplies its public
4550
- * input and `parentEvents` protocols. Invocation sources and lifecycle handlers
4502
+ * input and declared parent protocols. Invocation sources and lifecycle handlers
4551
4503
  * can therefore send through `self` and `parent` without naming the definition.
4552
- * The bound `definition.invoke(...)` constructor remains an equivalent form.
4504
+ * The standard `Machine.invoke(...)` constructor preserves these contexts
4505
+ * directly; no intermediate definition method is required.
4553
4506
  *
4554
4507
  * ```ts
4555
4508
  * invoke: Machine.invoke({
@@ -4559,14 +4512,12 @@ export interface Invoker<States extends Machine.StateSchemas, Events extends Rea
4559
4512
  * try: () => fetch("/api/data").then((response) => response.json()),
4560
4513
  * catch: (cause) => new LoadError({ cause })
4561
4514
  * }),
4562
- * onDone: Machine.transition({
4563
- * target: (to) => to.full.Ready(),
4564
- * resolve: ({ output, target }) => target.from({ data: output })
4565
- * }),
4566
- * onFailure: Machine.transition({
4567
- * target: (to) => to.full.Failed(),
4568
- * resolve: ({ error, target }) => target.from({ error })
4569
- * })
4515
+ * onDone: (to) =>
4516
+ * to.full.Ready().resolve(({ output, target }) =>
4517
+ * target.from({ data: output })),
4518
+ * onFailure: (to) =>
4519
+ * to.full.Failed().resolve(({ error, target }) =>
4520
+ * target.from({ error }))
4570
4521
  * })
4571
4522
  * ```
4572
4523
  *
@@ -4574,31 +4525,31 @@ export interface Invoker<States extends Machine.StateSchemas, Events extends Rea
4574
4525
  * @since 0.9.0
4575
4526
  */
4576
4527
  export declare const invoke: {
4577
- <const States extends Machine.StateSchemas, const Events extends ReadonlyArray<Machine.TaggedSchema>, const Emits extends ReadonlyArray<Machine.TaggedSchema>, StateId extends Machine.StateIdentifier<States>, const Source extends (context: Machine.InvokeContext<States, Events, Emits, StateId, InputEvents, ParentEvents>) => Effect.Effect<unknown, unknown, unknown>, const InputEvents extends ReadonlyArray<Machine.TaggedSchema> = readonly [], const ParentEvents extends ReadonlyArray<Machine.TaggedSchema> = readonly []>(config: EffectInvokeSource<States, Events, Emits, InputEvents, ParentEvents, StateId, Source> & {
4528
+ <const States extends Machine.StateSchemas, const Events extends ReadonlyArray<Machine.TaggedSchema>, const Emits extends ReadonlyArray<Machine.TaggedSchema>, StateId extends Machine.StateIdentifier<States>, const Source extends (context: Machine.InvokeContext<States, Events, Emits, StateId, InputEvents, ParentEvents>) => Effect.Effect<unknown, unknown, unknown>, const Config extends object, const InputEvents extends ReadonlyArray<Machine.TaggedSchema> = readonly [], const ParentEvents extends ReadonlyArray<Machine.TaggedSchema> = readonly []>(config: Config & EffectInvokeSource<States, Events, Emits, InputEvents, ParentEvents, StateId, Source> & {
4578
4529
  readonly onDone: EffectDoneHandler<States, Events, Emits, InputEvents, ParentEvents, StateId, Source>;
4579
4530
  readonly onFailure: EffectFailureHandler<States, Events, Emits, InputEvents, ParentEvents, StateId, Source>;
4580
4531
  }, ..._validation: InvokeChannelIsNever<Effect.Success<ReturnType<Source>>> extends true ? [
4581
4532
  "onDone must be omitted when the Effect output is never"
4582
4533
  ] : InvokeChannelIsNever<Effect.Error<ReturnType<Source>>> extends true ? [
4583
4534
  "onFailure must be omitted when the Effect error is never"
4584
- ] : []): EffectInvokeResult<States, Events, Emits, InputEvents, ParentEvents, StateId, Source>;
4585
- <const States extends Machine.StateSchemas, const Events extends ReadonlyArray<Machine.TaggedSchema>, const Emits extends ReadonlyArray<Machine.TaggedSchema>, StateId extends Machine.StateIdentifier<States>, const Source extends (context: Machine.InvokeContext<States, Events, Emits, StateId, InputEvents, ParentEvents>) => Effect.Effect<unknown, never, unknown>, const InputEvents extends ReadonlyArray<Machine.TaggedSchema> = readonly [], const ParentEvents extends ReadonlyArray<Machine.TaggedSchema> = readonly []>(config: EffectInvokeSource<States, Events, Emits, InputEvents, ParentEvents, StateId, Source> & {
4535
+ ] : []): NoInfer<Config> & EffectInvokeResult<States, Events, Emits, InputEvents, ParentEvents, StateId, Source>;
4536
+ <const States extends Machine.StateSchemas, const Events extends ReadonlyArray<Machine.TaggedSchema>, const Emits extends ReadonlyArray<Machine.TaggedSchema>, StateId extends Machine.StateIdentifier<States>, const Source extends (context: Machine.InvokeContext<States, Events, Emits, StateId, InputEvents, ParentEvents>) => Effect.Effect<unknown, never, unknown>, const Config extends object, const InputEvents extends ReadonlyArray<Machine.TaggedSchema> = readonly [], const ParentEvents extends ReadonlyArray<Machine.TaggedSchema> = readonly []>(config: Config & EffectInvokeSource<States, Events, Emits, InputEvents, ParentEvents, StateId, Source> & {
4586
4537
  readonly onDone: EffectDoneHandler<States, Events, Emits, InputEvents, ParentEvents, StateId, Source>;
4587
4538
  readonly onFailure?: never;
4588
4539
  }, ..._validation: InvokeChannelIsNever<Effect.Success<ReturnType<Source>>> extends true ? [
4589
4540
  "onDone must be omitted when the Effect output is never"
4590
- ] : []): EffectInvokeResult<States, Events, Emits, InputEvents, ParentEvents, StateId, Source>;
4591
- <const States extends Machine.StateSchemas, const Events extends ReadonlyArray<Machine.TaggedSchema>, const Emits extends ReadonlyArray<Machine.TaggedSchema>, StateId extends Machine.StateIdentifier<States>, const Source extends (context: Machine.InvokeContext<States, Events, Emits, StateId, InputEvents, ParentEvents>) => Effect.Effect<never, unknown, unknown>, const InputEvents extends ReadonlyArray<Machine.TaggedSchema> = readonly [], const ParentEvents extends ReadonlyArray<Machine.TaggedSchema> = readonly []>(config: EffectInvokeSource<States, Events, Emits, InputEvents, ParentEvents, StateId, Source> & {
4541
+ ] : []): NoInfer<Config> & EffectInvokeResult<States, Events, Emits, InputEvents, ParentEvents, StateId, Source>;
4542
+ <const States extends Machine.StateSchemas, const Events extends ReadonlyArray<Machine.TaggedSchema>, const Emits extends ReadonlyArray<Machine.TaggedSchema>, StateId extends Machine.StateIdentifier<States>, const Source extends (context: Machine.InvokeContext<States, Events, Emits, StateId, InputEvents, ParentEvents>) => Effect.Effect<never, unknown, unknown>, const Config extends object, const InputEvents extends ReadonlyArray<Machine.TaggedSchema> = readonly [], const ParentEvents extends ReadonlyArray<Machine.TaggedSchema> = readonly []>(config: Config & EffectInvokeSource<States, Events, Emits, InputEvents, ParentEvents, StateId, Source> & {
4592
4543
  readonly onDone?: never;
4593
4544
  readonly onFailure: EffectFailureHandler<States, Events, Emits, InputEvents, ParentEvents, StateId, Source>;
4594
4545
  }, ..._validation: InvokeChannelIsNever<Effect.Error<ReturnType<Source>>> extends true ? [
4595
4546
  "onFailure must be omitted when the Effect error is never"
4596
- ] : []): EffectInvokeResult<States, Events, Emits, InputEvents, ParentEvents, StateId, Source>;
4597
- <const States extends Machine.StateSchemas, const Events extends ReadonlyArray<Machine.TaggedSchema>, const Emits extends ReadonlyArray<Machine.TaggedSchema>, StateId extends Machine.StateIdentifier<States>, const Source extends (context: Machine.InvokeContext<States, Events, Emits, StateId, InputEvents, ParentEvents>) => Effect.Effect<never, never, unknown>, const InputEvents extends ReadonlyArray<Machine.TaggedSchema> = readonly [], const ParentEvents extends ReadonlyArray<Machine.TaggedSchema> = readonly []>(config: EffectInvokeSource<States, Events, Emits, InputEvents, ParentEvents, StateId, Source> & {
4547
+ ] : []): NoInfer<Config> & EffectInvokeResult<States, Events, Emits, InputEvents, ParentEvents, StateId, Source>;
4548
+ <const States extends Machine.StateSchemas, const Events extends ReadonlyArray<Machine.TaggedSchema>, const Emits extends ReadonlyArray<Machine.TaggedSchema>, StateId extends Machine.StateIdentifier<States>, const Source extends (context: Machine.InvokeContext<States, Events, Emits, StateId, InputEvents, ParentEvents>) => Effect.Effect<never, never, unknown>, const Config extends object, const InputEvents extends ReadonlyArray<Machine.TaggedSchema> = readonly [], const ParentEvents extends ReadonlyArray<Machine.TaggedSchema> = readonly []>(config: Config & EffectInvokeSource<States, Events, Emits, InputEvents, ParentEvents, StateId, Source> & {
4598
4549
  readonly onDone?: never;
4599
4550
  readonly onFailure?: never;
4600
- }): EffectInvokeResult<States, Events, Emits, InputEvents, ParentEvents, StateId, Source>;
4601
- <const States extends Machine.StateSchemas, const Events extends ReadonlyArray<Machine.TaggedSchema>, const Emits extends ReadonlyArray<Machine.TaggedSchema>, StateId extends Machine.StateIdentifier<States>, const Source extends (context: Machine.InvokeContext<States, Events, Emits, StateId, InputEvents, ParentEvents>) => Stream.Stream<unknown, unknown, any>, const InputEvents extends ReadonlyArray<Machine.TaggedSchema> = readonly [], const ParentEvents extends ReadonlyArray<Machine.TaggedSchema> = readonly []>(config: StreamInvokeSource<States, Events, Emits, InputEvents, ParentEvents, StateId, Source> & {
4551
+ }): NoInfer<Config> & EffectInvokeResult<States, Events, Emits, InputEvents, ParentEvents, StateId, Source>;
4552
+ <const States extends Machine.StateSchemas, const Events extends ReadonlyArray<Machine.TaggedSchema>, const Emits extends ReadonlyArray<Machine.TaggedSchema>, StateId extends Machine.StateIdentifier<States>, const Source extends (context: Machine.InvokeContext<States, Events, Emits, StateId, InputEvents, ParentEvents>) => Stream.Stream<unknown, unknown, any>, const Config extends object, const InputEvents extends ReadonlyArray<Machine.TaggedSchema> = readonly [], const ParentEvents extends ReadonlyArray<Machine.TaggedSchema> = readonly []>(config: Config & StreamInvokeSource<States, Events, Emits, InputEvents, ParentEvents, StateId, Source> & {
4602
4553
  readonly onElement: StreamElementHandler<States, Events, Emits, InputEvents, ParentEvents, StateId, Source>;
4603
4554
  readonly onDone: StreamDoneHandler<States, Events, Emits, InputEvents, ParentEvents, StateId>;
4604
4555
  readonly onFailure: StreamFailureHandler<States, Events, Emits, InputEvents, ParentEvents, StateId, Source>;
@@ -4606,28 +4557,42 @@ export declare const invoke: {
4606
4557
  "onElement must be omitted when the Stream element is never"
4607
4558
  ] : InvokeChannelIsNever<Stream.Error<ReturnType<Source>>> extends true ? [
4608
4559
  "onFailure must be omitted when the Stream error is never"
4609
- ] : []): StreamInvokeResult<States, Events, Emits, InputEvents, ParentEvents, StateId, Source>;
4610
- <const States extends Machine.StateSchemas, const Events extends ReadonlyArray<Machine.TaggedSchema>, const Emits extends ReadonlyArray<Machine.TaggedSchema>, StateId extends Machine.StateIdentifier<States>, const Source extends (context: Machine.InvokeContext<States, Events, Emits, StateId, InputEvents, ParentEvents>) => Stream.Stream<never, unknown, any>, const InputEvents extends ReadonlyArray<Machine.TaggedSchema> = readonly [], const ParentEvents extends ReadonlyArray<Machine.TaggedSchema> = readonly []>(config: StreamInvokeSource<States, Events, Emits, InputEvents, ParentEvents, StateId, Source> & {
4560
+ ] : []): NoInfer<Config> & StreamInvokeResult<States, Events, Emits, InputEvents, ParentEvents, StateId, Source>;
4561
+ <const States extends Machine.StateSchemas, const Events extends ReadonlyArray<Machine.TaggedSchema>, const Emits extends ReadonlyArray<Machine.TaggedSchema>, StateId extends Machine.StateIdentifier<States>, const Source extends (context: Machine.InvokeContext<States, Events, Emits, StateId, InputEvents, ParentEvents>) => Stream.Stream<never, unknown, any>, const Config extends object, const InputEvents extends ReadonlyArray<Machine.TaggedSchema> = readonly [], const ParentEvents extends ReadonlyArray<Machine.TaggedSchema> = readonly []>(config: Config & StreamInvokeSource<States, Events, Emits, InputEvents, ParentEvents, StateId, Source> & {
4611
4562
  readonly onElement?: never;
4612
4563
  readonly onDone: StreamDoneHandler<States, Events, Emits, InputEvents, ParentEvents, StateId>;
4613
4564
  readonly onFailure: StreamFailureHandler<States, Events, Emits, InputEvents, ParentEvents, StateId, Source>;
4614
4565
  }, ..._validation: InvokeChannelIsNever<Stream.Error<ReturnType<Source>>> extends true ? [
4615
4566
  "onFailure must be omitted when the Stream error is never"
4616
- ] : []): StreamInvokeResult<States, Events, Emits, InputEvents, ParentEvents, StateId, Source>;
4617
- <const States extends Machine.StateSchemas, const Events extends ReadonlyArray<Machine.TaggedSchema>, const Emits extends ReadonlyArray<Machine.TaggedSchema>, StateId extends Machine.StateIdentifier<States>, const Source extends (context: Machine.InvokeContext<States, Events, Emits, StateId, InputEvents, ParentEvents>) => Stream.Stream<never, never, any>, const InputEvents extends ReadonlyArray<Machine.TaggedSchema> = readonly [], const ParentEvents extends ReadonlyArray<Machine.TaggedSchema> = readonly []>(config: StreamInvokeSource<States, Events, Emits, InputEvents, ParentEvents, StateId, Source> & {
4567
+ ] : []): NoInfer<Config> & StreamInvokeResult<States, Events, Emits, InputEvents, ParentEvents, StateId, Source>;
4568
+ <const States extends Machine.StateSchemas, const Events extends ReadonlyArray<Machine.TaggedSchema>, const Emits extends ReadonlyArray<Machine.TaggedSchema>, StateId extends Machine.StateIdentifier<States>, const Source extends (context: Machine.InvokeContext<States, Events, Emits, StateId, InputEvents, ParentEvents>) => Stream.Stream<never, never, any>, const Config extends object, const InputEvents extends ReadonlyArray<Machine.TaggedSchema> = readonly [], const ParentEvents extends ReadonlyArray<Machine.TaggedSchema> = readonly []>(config: Config & StreamInvokeSource<States, Events, Emits, InputEvents, ParentEvents, StateId, Source> & {
4618
4569
  readonly onElement?: never;
4619
4570
  readonly onDone: StreamDoneHandler<States, Events, Emits, InputEvents, ParentEvents, StateId>;
4620
4571
  readonly onFailure?: never;
4621
- }): StreamInvokeResult<States, Events, Emits, InputEvents, ParentEvents, StateId, Source>;
4622
- <const States extends Machine.StateSchemas, const Events extends ReadonlyArray<Machine.TaggedSchema>, const Emits extends ReadonlyArray<Machine.TaggedSchema>, StateId extends Machine.StateIdentifier<States>, const Source extends (context: Machine.InvokeContext<States, Events, Emits, StateId, InputEvents, ParentEvents>) => Stream.Stream<unknown, never, any>, const InputEvents extends ReadonlyArray<Machine.TaggedSchema> = readonly [], const ParentEvents extends ReadonlyArray<Machine.TaggedSchema> = readonly []>(config: StreamInvokeSource<States, Events, Emits, InputEvents, ParentEvents, StateId, Source> & {
4572
+ }): NoInfer<Config> & StreamInvokeResult<States, Events, Emits, InputEvents, ParentEvents, StateId, Source>;
4573
+ <const States extends Machine.StateSchemas, const Events extends ReadonlyArray<Machine.TaggedSchema>, const Emits extends ReadonlyArray<Machine.TaggedSchema>, StateId extends Machine.StateIdentifier<States>, const Source extends (context: Machine.InvokeContext<States, Events, Emits, StateId, InputEvents, ParentEvents>) => Stream.Stream<unknown, never, any>, const Config extends object, const InputEvents extends ReadonlyArray<Machine.TaggedSchema> = readonly [], const ParentEvents extends ReadonlyArray<Machine.TaggedSchema> = readonly []>(config: Config & StreamInvokeSource<States, Events, Emits, InputEvents, ParentEvents, StateId, Source> & {
4623
4574
  readonly onElement: StreamElementHandler<States, Events, Emits, InputEvents, ParentEvents, StateId, Source>;
4624
4575
  readonly onDone: StreamDoneHandler<States, Events, Emits, InputEvents, ParentEvents, StateId>;
4625
4576
  readonly onFailure?: never;
4626
- }): StreamInvokeResult<States, Events, Emits, InputEvents, ParentEvents, StateId, Source>;
4627
- <const States extends Machine.StateSchemas, const Events extends ReadonlyArray<Machine.TaggedSchema>, const Emits extends ReadonlyArray<Machine.TaggedSchema>, StateId extends Machine.StateIdentifier<States>, const Config extends object, const InputEvents extends ReadonlyArray<Machine.TaggedSchema> = readonly [], const ParentEvents extends ReadonlyArray<Machine.TaggedSchema> = readonly []>(config: Config & Machine.TimerInvokeArgs<States, Events, Emits, StateId, InputEvents, ParentEvents>): Config & Machine.InvokeOwned<States, Events, Emits, StateId> & Machine.InvokeTyped<void, never, never, never>;
4628
- <const States extends Machine.StateSchemas, const Events extends ReadonlyArray<Machine.TaggedSchema>, const Emits extends ReadonlyArray<Machine.TaggedSchema>, StateId extends Machine.StateIdentifier<States>, ChildState, ChildEvent, ChildError, ChildRequirements, ChildOutput, ChildInitialError, Address extends ChildAddress<never>, const InputEvents extends ReadonlyArray<Machine.TaggedSchema> = readonly [], const ParentEvents extends ReadonlyArray<Machine.TaggedSchema> = readonly []>(config: Machine.LogicInvokeArgs<States, Events, Emits, StateId, ChildState, ChildEvent, ChildError, ChildRequirements, ChildOutput, ChildInitialError, Address, (context: Machine.InvokeContext<States, Events, Emits, StateId, InputEvents, ParentEvents>) => Logic<ChildState, ChildEvent, ChildError, ChildRequirements, ChildOutput, ChildInitialError>, InputEvents, ParentEvents>): Machine.InvokeConfig<States, Events, Emits, StateId, InputEvents, ParentEvents> & Machine.InvokeTyped<ChildOutput, ChildError, ChildRequirements, ChildInitialError>;
4629
- <const States extends Machine.StateSchemas, const Events extends ReadonlyArray<Machine.TaggedSchema>, const Emits extends ReadonlyArray<Machine.TaggedSchema>, StateId extends Machine.StateIdentifier<States>, ChildState, ChildEvent, ChildError, ChildRequirements, ChildOutput, ChildInitialError, Address extends ChildAddress<never>, const Config extends object, const InputEvents extends ReadonlyArray<Machine.TaggedSchema> = readonly [], const ParentEvents extends ReadonlyArray<Machine.TaggedSchema> = readonly []>(config: Config & Machine.LogicInvokeArgs<States, Events, Emits, StateId, ChildState, ChildEvent, ChildError, ChildRequirements, ChildOutput, ChildInitialError, Address, Logic<ChildState, ChildEvent, ChildError, ChildRequirements, ChildOutput, ChildInitialError>, InputEvents, ParentEvents>): Config & Machine.InvokeOwned<States, Events, Emits, StateId> & Machine.InvokeTyped<ChildOutput, ChildError, ChildRequirements, ChildInitialError>;
4630
- <const States extends Machine.StateSchemas, const Events extends ReadonlyArray<Machine.TaggedSchema>, const Emits extends ReadonlyArray<Machine.TaggedSchema>, StateId extends Machine.StateIdentifier<States>, const Child extends ChildMachine.Any, const Config extends object, const InputEvents extends ReadonlyArray<Machine.TaggedSchema> = readonly [], const ParentEvents extends ReadonlyArray<Machine.TaggedSchema> = readonly []>(config: Config & Machine.ChildInvokeArgs<States, Events, Emits, StateId, Child["machine"], Child, InputEvents, ParentEvents>): Config & Machine.InvokeOwned<States, Events, Emits, StateId> & Machine.InvokeTyped<Machine.Output<Child["machine"]>, Machine.Error<Child["machine"]> | ActionError<Machine.Services<Child["machine"]>>, Machine.Services<Child["machine"]>, Machine.InitialError<Child["machine"]>, Machine.Emit<Child["machine"]>, Machine.EventOf<Machine.ParentEvents<Child["machine"]>>>;
4577
+ }): NoInfer<Config> & StreamInvokeResult<States, Events, Emits, InputEvents, ParentEvents, StateId, Source>;
4578
+ <const States extends Machine.StateSchemas, const Events extends ReadonlyArray<Machine.TaggedSchema>, const Emits extends ReadonlyArray<Machine.TaggedSchema>, StateId extends Machine.StateIdentifier<States>, const Config extends object, const InputEvents extends ReadonlyArray<Machine.TaggedSchema> = readonly [], const ParentEvents extends ReadonlyArray<Machine.TaggedSchema> = readonly []>(config: Config & Machine.TimerInvokeArgs<States, Events, Emits, StateId, InputEvents, ParentEvents>): NoInfer<Config> & Machine.InvokeOwned<States, Events, Emits, StateId, InputEvents, ParentEvents> & Machine.InvokeTyped<void, never, never, never>;
4579
+ <const States extends Machine.StateSchemas, const Events extends ReadonlyArray<Machine.TaggedSchema>, const Emits extends ReadonlyArray<Machine.TaggedSchema>, StateId extends Machine.StateIdentifier<States>, const Source extends (context: Machine.InvokeContext<States, Events, Emits, StateId, InputEvents, ParentEvents>) => unknown, Address extends ChildAddress<never>, const Config extends object, const InputEvents extends ReadonlyArray<Machine.TaggedSchema> = readonly [], const ParentEvents extends ReadonlyArray<Machine.TaggedSchema> = readonly []>(config: Config & {
4580
+ readonly logic: Source;
4581
+ } & Machine.LogicInvokeArgs<States, Events, Emits, StateId, Machine.LogicStateOf<ReturnType<Source>>, Machine.LogicEventOf<ReturnType<Source>>, Machine.LogicErrorOf<ReturnType<Source>>, Machine.LogicServicesOf<ReturnType<Source>>, Machine.LogicOutputOf<ReturnType<Source>>, Machine.LogicInitialErrorOf<ReturnType<Source>>, Address, Source, InputEvents, ParentEvents>, ..._validation: ReturnType<Source> extends {
4582
+ readonly initial: unknown;
4583
+ readonly run: unknown;
4584
+ } ? [] : [
4585
+ "logic factory must return Machine.Logic"
4586
+ ]): NoInfer<Config> & Machine.InvokeOwned<States, Events, Emits, StateId, InputEvents, ParentEvents> & Machine.InvokeTyped<Machine.LogicOutputOf<ReturnType<Source>>, Machine.LogicErrorOf<ReturnType<Source>>, Machine.LogicServicesOf<ReturnType<Source>>, Machine.LogicInitialErrorOf<ReturnType<Source>>>;
4587
+ <const States extends Machine.StateSchemas, const Events extends ReadonlyArray<Machine.TaggedSchema>, const Emits extends ReadonlyArray<Machine.TaggedSchema>, StateId extends Machine.StateIdentifier<States>, const Source, Address extends ChildAddress<never>, const Config extends object, const InputEvents extends ReadonlyArray<Machine.TaggedSchema> = readonly [], const ParentEvents extends ReadonlyArray<Machine.TaggedSchema> = readonly []>(config: Config & {
4588
+ readonly logic: Source;
4589
+ } & Machine.LogicInvokeArgs<States, Events, Emits, StateId, Machine.LogicStateOf<Source>, Machine.LogicEventOf<Source>, Machine.LogicErrorOf<Source>, Machine.LogicServicesOf<Source>, Machine.LogicOutputOf<Source>, Machine.LogicInitialErrorOf<Source>, Address, Source, InputEvents, ParentEvents>, ..._validation: Source extends {
4590
+ readonly initial: unknown;
4591
+ readonly run: unknown;
4592
+ } ? [] : [
4593
+ "logic must implement Machine.Logic"
4594
+ ]): NoInfer<Config> & Machine.InvokeOwned<States, Events, Emits, StateId, InputEvents, ParentEvents> & Machine.InvokeTyped<Machine.LogicOutputOf<Source>, Machine.LogicErrorOf<Source>, Machine.LogicServicesOf<Source>, Machine.LogicInitialErrorOf<Source>>;
4595
+ <const States extends Machine.StateSchemas, const Events extends ReadonlyArray<Machine.TaggedSchema>, const Emits extends ReadonlyArray<Machine.TaggedSchema>, StateId extends Machine.StateIdentifier<States>, const Child extends ChildMachine.Any, const Config extends object, const InputEvents extends ReadonlyArray<Machine.TaggedSchema> = readonly [], const ParentEvents extends ReadonlyArray<Machine.TaggedSchema> = readonly []>(config: Config & Machine.ChildInvokeArgs<States, Events, Emits, StateId, Child["machine"], Child, InputEvents, ParentEvents>): Config & Machine.InvokeOwned<States, Events, Emits, StateId, InputEvents, ParentEvents> & Machine.InvokeTyped<Machine.Output<Child["machine"]>, Machine.Error<Child["machine"]> | ActionError<Machine.Services<Child["machine"]>>, Machine.Services<Child["machine"]>, Machine.InitialError<Child["machine"]>, Machine.Emit<Child["machine"]>, Machine.EventOf<Machine.ParentEvents<Child["machine"]>>>;
4631
4596
  };
4632
4597
  /**
4633
4598
  * Plans the initial state for a machine without executing machine commands.
@@ -4658,10 +4623,7 @@ export declare const invoke: {
4658
4623
  * const machine = Machine.make({
4659
4624
  * states: States.states,
4660
4625
  * events: Machine.events(),
4661
- * initial: {
4662
- * target: (to) => to.Idle(),
4663
- * resolve: ({ target }) => target.from()
4664
- * }
4626
+ * initial: (to) => to.Idle().resolve(({ target }) => target.from())
4665
4627
  * }).handle({ Idle: {} })
4666
4628
  *
4667
4629
  * const initialState = Effect.map(Machine.planInitial(machine), (plan) => plan.state)
@@ -4672,7 +4634,7 @@ export declare const invoke: {
4672
4634
  * @category constructors
4673
4635
  * @since 0.4.0
4674
4636
  */
4675
- export declare const planInitial: <const States extends Machine.StateSchemas, const Events extends ReadonlyArray<Machine.TaggedSchema>, const Emits extends ReadonlyArray<Machine.TaggedSchema> = readonly [], const Input extends Schema.Top = typeof Schema.Void, UnhandledStates extends Machine.StateIdentifier<States> = Machine.StateIdentifier<States>, E = never, R = never, InitialE = never, InitialR = never, FinalStates extends Machine.StateIdentifier<States> = never, Output = never, OutputStates extends Machine.StateIdentifier<States> = never, InputEvents extends ReadonlyArray<Machine.TaggedSchema> = Events, ParentEvents extends ReadonlyArray<Machine.TaggedSchema> = readonly []>(machine: Machine<States, Events, Input, UnhandledStates, E, R, InitialE, InitialR, FinalStates, Output, Emits, OutputStates, InputEvents, ParentEvents> & EnsureExecutable<States, UnhandledStates, OutputStates>, ...args: [...Machine.InputArgs<Input>]) => Effect.Effect<{
4637
+ export declare const planInitial: <const States extends Machine.StateSchemas, const Events extends ReadonlyArray<Machine.TaggedSchema>, const Emits extends ReadonlyArray<Machine.TaggedSchema> = readonly [], const Input extends Schema.Top = typeof Schema.Void, UnhandledStates extends Machine.StateIdentifier<States> = Machine.StateIdentifier<States>, E = never, R = never, InitialE = never, InitialR = never, FinalStates extends Machine.StateIdentifier<States> = never, Output = never, OutputStates extends Machine.StateIdentifier<States> = never, InputEvents extends ReadonlyArray<Machine.TaggedSchema> = Events, ParentEvents extends ReadonlyArray<Machine.TaggedSchema> = readonly []>(machine: Machine<States, Events, Input, UnhandledStates, E, R, InitialE, InitialR, FinalStates, Output, Emits, OutputStates, InputEvents, ParentEvents> & EnsureExecutable<States, UnhandledStates, OutputStates> & Machine.RootCompatible<ParentEvents>, ...args: [...Machine.InputArgs<Input>]) => Effect.Effect<{
4676
4638
  readonly startingState: Machine.Snapshot<States>;
4677
4639
  readonly initialEntryPaths: ReadonlyArray<Machine.StateIdentifier<States>>;
4678
4640
  readonly state: Machine.Snapshot<States>;
@@ -4730,7 +4692,8 @@ export declare const initialDefinition: <M extends Machine.Any>(machine: M) => M
4730
4692
  * Event handlers retain their handler-key order within each source state and
4731
4693
  * are followed by eventless and completion handlers. This function does not
4732
4694
  * execute resolvers. Every direct, named, and targetless branch exposes the
4733
- * destination selected by its required static `target` declaration.
4695
+ * destination selected by its required static `target` declaration, while
4696
+ * `acceptance` reports whether the resolver may decline the transition.
4734
4697
  *
4735
4698
  * @category getters
4736
4699
  * @since 0.4.0
@@ -4763,7 +4726,12 @@ export declare const activityDefinitions: <M extends Machine.Any>(machine: M) =>
4763
4726
  */
4764
4727
  export declare const configuration: <M extends Machine.Any>(machine: M, state: Machine.Snapshot<Machine.States<M>>) => ReadonlyArray<Machine.ActiveStateNode<Machine.StateIdentifier<Machine.States<M>>, Machine.ChoiceIdentifier<Machine.States<M>>>>;
4765
4728
  /**
4766
- * Returns the event tags handled by the current state snapshot.
4729
+ * Returns event tags with at least one structurally eligible handler in the
4730
+ * current state snapshot.
4731
+ *
4732
+ * A `declinable` handler may still reject a concrete event at planning time,
4733
+ * so this is a static candidate query rather than a guarantee that every value
4734
+ * with the returned tag will be handled.
4767
4735
  *
4768
4736
  * @category getters
4769
4737
  * @since 0.4.0
@@ -4799,17 +4767,12 @@ export declare const enabled: <const States extends Machine.StateSchemas, const
4799
4767
  * const machine = Machine.make({
4800
4768
  * states: States.states,
4801
4769
  * events: Machine.events(Toggle),
4802
- * initial: {
4803
- * target: (to) => to.Off(),
4804
- * resolve: ({ target }) => target.from()
4805
- * }
4770
+ * initial: (to) => to.Off().resolve(({ target }) => target.from())
4806
4771
  * }).handle({
4807
4772
  * Off: {
4808
4773
  * on: {
4809
- * Toggle: Machine.transition({
4810
- * target: (to) => to.full.On(),
4811
- * resolve: ({ target }) => target.from()
4812
- * })
4774
+ * Toggle: (to) =>
4775
+ * to.full.On().resolve(({ target }) => target.from())
4813
4776
  * }
4814
4777
  * },
4815
4778
  * On: {}
@@ -4826,7 +4789,7 @@ export declare const enabled: <const States extends Machine.StateSchemas, const
4826
4789
  * @category combinators
4827
4790
  * @since 0.4.0
4828
4791
  */
4829
- export declare const plan: <const States extends Machine.StateSchemas, const Events extends ReadonlyArray<Machine.TaggedSchema>, const Emits extends ReadonlyArray<Machine.TaggedSchema> = readonly [], const Input extends Schema.Top = typeof Schema.Void, UnhandledStates extends Machine.StateIdentifier<States> = Machine.StateIdentifier<States>, E = never, R = never, InitialE = never, InitialR = never, FinalStates extends Machine.StateIdentifier<States> = never, Output = never, OutputStates extends Machine.StateIdentifier<States> = never, InputEvents extends ReadonlyArray<Machine.TaggedSchema> = Events, ParentEvents extends ReadonlyArray<Machine.TaggedSchema> = readonly []>(machine: Machine<States, Events, Input, UnhandledStates, E, R, InitialE, InitialR, FinalStates, Output, Emits, OutputStates, InputEvents, ParentEvents> & EnsureExecutable<States, UnhandledStates, OutputStates>, state: Machine.Snapshot<States>, event: Machine.EventInputOf<InputEvents>) => Effect.Effect<{
4792
+ export declare const plan: <const States extends Machine.StateSchemas, const Events extends ReadonlyArray<Machine.TaggedSchema>, const Emits extends ReadonlyArray<Machine.TaggedSchema> = readonly [], const Input extends Schema.Top = typeof Schema.Void, UnhandledStates extends Machine.StateIdentifier<States> = Machine.StateIdentifier<States>, E = never, R = never, InitialE = never, InitialR = never, FinalStates extends Machine.StateIdentifier<States> = never, Output = never, OutputStates extends Machine.StateIdentifier<States> = never, InputEvents extends ReadonlyArray<Machine.TaggedSchema> = Events, ParentEvents extends ReadonlyArray<Machine.TaggedSchema> = readonly []>(machine: Machine<States, Events, Input, UnhandledStates, E, R, InitialE, InitialR, FinalStates, Output, Emits, OutputStates, InputEvents, ParentEvents> & EnsureExecutable<States, UnhandledStates, OutputStates> & Machine.RootCompatible<ParentEvents>, state: Machine.Snapshot<States>, event: Machine.EventInputOf<InputEvents>) => Effect.Effect<{
4830
4793
  readonly next: Machine.Snapshot<States>;
4831
4794
  readonly commands: ReadonlyArray<Command>;
4832
4795
  readonly emittedEvents: ReadonlyArray<Machine.EmitOf<Emits>>;
@@ -4972,7 +4935,7 @@ export declare const watch: <State, Event, Error = never, Output = never>(ref: M
4972
4935
  * @category constructors
4973
4936
  * @since 0.11.0
4974
4937
  */
4975
- export declare const prepare: <const States extends Machine.StateSchemas, const Events extends ReadonlyArray<Machine.TaggedSchema>, const Emits extends ReadonlyArray<Machine.TaggedSchema> = readonly [], const Input extends Schema.Top = typeof Schema.Void, UnhandledStates extends Machine.StateIdentifier<States> = Machine.StateIdentifier<States>, E = never, R = never, InitialE = never, InitialR = never, FinalStates extends Machine.StateIdentifier<States> = never, Output = never, OutputStates extends Machine.StateIdentifier<States> = never, InputEvents extends ReadonlyArray<Machine.TaggedSchema> = Events, ParentEvents extends ReadonlyArray<Machine.TaggedSchema> = readonly []>(machine: Machine<States, Events, Input, UnhandledStates, E, R, InitialE, InitialR, FinalStates, Output, Emits, OutputStates, InputEvents, ParentEvents> & EnsureExecutable<States, UnhandledStates, OutputStates>, ...args: [...Machine.InputArgs<Input>]) => Effect.Effect<Prepared<Machine.Snapshot<States>, Machine.EventInputOf<InputEvents>, E | ActionError<R> | InfiniteTransitionError | MachineSchemaDecodeError | StoppedError, Output, Machine.EmittedEventOf<Emits>, InitialE | E | ActionError<InitialR | R> | InfiniteTransitionError | MachineSchemaDecodeError | StartupError | StoppedError, ExcludeCompatibleRuntime<ExecutionServices<InitialR | R>, Machine.EventOf<Events>, Machine.EmitOf<Emits>>>>;
4938
+ export declare const prepare: <const States extends Machine.StateSchemas, const Events extends ReadonlyArray<Machine.TaggedSchema>, const Emits extends ReadonlyArray<Machine.TaggedSchema> = readonly [], const Input extends Schema.Top = typeof Schema.Void, UnhandledStates extends Machine.StateIdentifier<States> = Machine.StateIdentifier<States>, E = never, R = never, InitialE = never, InitialR = never, FinalStates extends Machine.StateIdentifier<States> = never, Output = never, OutputStates extends Machine.StateIdentifier<States> = never, InputEvents extends ReadonlyArray<Machine.TaggedSchema> = Events, ParentEvents extends ReadonlyArray<Machine.TaggedSchema> = readonly []>(machine: Machine<States, Events, Input, UnhandledStates, E, R, InitialE, InitialR, FinalStates, Output, Emits, OutputStates, InputEvents, ParentEvents> & EnsureExecutable<States, UnhandledStates, OutputStates> & Machine.RootCompatible<ParentEvents>, ...args: [...Machine.InputArgs<Input>]) => Effect.Effect<Prepared<Machine.Snapshot<States>, Machine.EventInputOf<InputEvents>, E | ActionError<R> | InfiniteTransitionError | MachineSchemaDecodeError | StoppedError, Output, Machine.EmittedEventOf<Emits>, InitialE | E | ActionError<InitialR | R> | InfiniteTransitionError | MachineSchemaDecodeError | StartupError | StoppedError, ExcludeCompatibleRuntime<ExecutionServices<InitialR | R>, Machine.EventOf<Events>, Machine.EmitOf<Emits>>>>;
4976
4939
  /**
4977
4940
  * Starts a machine.
4978
4941
  *
@@ -5006,10 +4969,7 @@ export declare const prepare: <const States extends Machine.StateSchemas, const
5006
4969
  * const machine = Machine.make({
5007
4970
  * states: States.states,
5008
4971
  * events: Machine.events(),
5009
- * initial: {
5010
- * target: (to) => to.Idle(),
5011
- * resolve: ({ target }) => target.from()
5012
- * }
4972
+ * initial: (to) => to.Idle().resolve(({ target }) => target.from())
5013
4973
  * }).handle({ Idle: {} })
5014
4974
  *
5015
4975
  * const state = Effect.gen(function*() {
@@ -5023,7 +4983,7 @@ export declare const prepare: <const States extends Machine.StateSchemas, const
5023
4983
  * @category constructors
5024
4984
  * @since 0.4.0
5025
4985
  */
5026
- export declare const start: <const States extends Machine.StateSchemas, const Events extends ReadonlyArray<Machine.TaggedSchema>, const Emits extends ReadonlyArray<Machine.TaggedSchema> = readonly [], const Input extends Schema.Top = typeof Schema.Void, UnhandledStates extends Machine.StateIdentifier<States> = Machine.StateIdentifier<States>, E = never, R = never, InitialE = never, InitialR = never, FinalStates extends Machine.StateIdentifier<States> = never, Output = never, OutputStates extends Machine.StateIdentifier<States> = never, InputEvents extends ReadonlyArray<Machine.TaggedSchema> = Events, ParentEvents extends ReadonlyArray<Machine.TaggedSchema> = readonly []>(machine: Machine<States, Events, Input, UnhandledStates, E, R, InitialE, InitialR, FinalStates, Output, Emits, OutputStates, InputEvents, ParentEvents> & EnsureExecutable<States, UnhandledStates, OutputStates>, ...args: [...Machine.InputArgs<Input>]) => Effect.Effect<MachineRef<Machine.Snapshot<States>, Machine.EventInputOf<InputEvents>, E | ActionError<R> | InfiniteTransitionError | MachineSchemaDecodeError | StoppedError, Output, Machine.EmittedEventOf<Emits>>, InitialE | E | ActionError<InitialR | R> | InfiniteTransitionError | MachineSchemaDecodeError | StartupError | StoppedError, ExcludeCompatibleRuntime<ExecutionServices<InitialR | R>, Machine.EventOf<Events>, Machine.EmitOf<Emits>>>;
4986
+ export declare const start: <const States extends Machine.StateSchemas, const Events extends ReadonlyArray<Machine.TaggedSchema>, const Emits extends ReadonlyArray<Machine.TaggedSchema> = readonly [], const Input extends Schema.Top = typeof Schema.Void, UnhandledStates extends Machine.StateIdentifier<States> = Machine.StateIdentifier<States>, E = never, R = never, InitialE = never, InitialR = never, FinalStates extends Machine.StateIdentifier<States> = never, Output = never, OutputStates extends Machine.StateIdentifier<States> = never, InputEvents extends ReadonlyArray<Machine.TaggedSchema> = Events, ParentEvents extends ReadonlyArray<Machine.TaggedSchema> = readonly []>(machine: Machine<States, Events, Input, UnhandledStates, E, R, InitialE, InitialR, FinalStates, Output, Emits, OutputStates, InputEvents, ParentEvents> & EnsureExecutable<States, UnhandledStates, OutputStates> & Machine.RootCompatible<ParentEvents>, ...args: [...Machine.InputArgs<Input>]) => Effect.Effect<MachineRef<Machine.Snapshot<States>, Machine.EventInputOf<InputEvents>, E | ActionError<R> | InfiniteTransitionError | MachineSchemaDecodeError | StoppedError, Output, Machine.EmittedEventOf<Emits>>, InitialE | E | ActionError<InitialR | R> | InfiniteTransitionError | MachineSchemaDecodeError | StartupError | StoppedError, ExcludeCompatibleRuntime<ExecutionServices<InitialR | R>, Machine.EventOf<Events>, Machine.EmitOf<Emits>>>;
5027
4987
  /**
5028
4988
  * Starts a fresh managed runtime from a decoded logical snapshot.
5029
4989
  *
@@ -5059,10 +5019,7 @@ export declare const start: <const States extends Machine.StateSchemas, const Ev
5059
5019
  * const machine = Machine.make({
5060
5020
  * states: States.states,
5061
5021
  * events: Machine.events(),
5062
- * initial: {
5063
- * target: (to) => to.Idle(),
5064
- * resolve: ({ target }) => target.from()
5065
- * }
5022
+ * initial: (to) => to.Idle().resolve(({ target }) => target.from())
5066
5023
  * }).handle({ Idle: {} })
5067
5024
  *
5068
5025
  * const resumed = Effect.gen(function*() {
@@ -5078,5 +5035,5 @@ export declare const start: <const States extends Machine.StateSchemas, const Ev
5078
5035
  * @category constructors
5079
5036
  * @since 0.4.0
5080
5037
  */
5081
- export declare const resume: <const States extends Machine.StateSchemas, const Events extends ReadonlyArray<Machine.TaggedSchema>, const Emits extends ReadonlyArray<Machine.TaggedSchema> = readonly [], const Input extends Schema.Top = typeof Schema.Void, UnhandledStates extends Machine.StateIdentifier<States> = Machine.StateIdentifier<States>, E = never, R = never, InitialE = never, InitialR = never, FinalStates extends Machine.StateIdentifier<States> = never, Output = never, OutputStates extends Machine.StateIdentifier<States> = never, InputEvents extends ReadonlyArray<Machine.TaggedSchema> = Events, ParentEvents extends ReadonlyArray<Machine.TaggedSchema> = readonly []>(machine: Machine<States, Events, Input, UnhandledStates, E, R, InitialE, InitialR, FinalStates, Output, Emits, OutputStates, InputEvents, ParentEvents> & EnsureExecutable<States, UnhandledStates, OutputStates>, snapshot: Machine.Snapshot<States>) => Effect.Effect<MachineRef<Machine.Snapshot<States>, Machine.EventInputOf<InputEvents>, E | ActionError<R> | InfiniteTransitionError | MachineSchemaDecodeError | StoppedError, Output, Machine.EmittedEventOf<Emits>>, MachineSchemaDecodeError, ExcludeCompatibleRuntime<ExecutionServices<R>, Machine.EventOf<Events>, Machine.EmitOf<Emits>>>;
5038
+ export declare const resume: <const States extends Machine.StateSchemas, const Events extends ReadonlyArray<Machine.TaggedSchema>, const Emits extends ReadonlyArray<Machine.TaggedSchema> = readonly [], const Input extends Schema.Top = typeof Schema.Void, UnhandledStates extends Machine.StateIdentifier<States> = Machine.StateIdentifier<States>, E = never, R = never, InitialE = never, InitialR = never, FinalStates extends Machine.StateIdentifier<States> = never, Output = never, OutputStates extends Machine.StateIdentifier<States> = never, InputEvents extends ReadonlyArray<Machine.TaggedSchema> = Events, ParentEvents extends ReadonlyArray<Machine.TaggedSchema> = readonly []>(machine: Machine<States, Events, Input, UnhandledStates, E, R, InitialE, InitialR, FinalStates, Output, Emits, OutputStates, InputEvents, ParentEvents> & EnsureExecutable<States, UnhandledStates, OutputStates> & Machine.RootCompatible<ParentEvents>, snapshot: Machine.Snapshot<States>) => Effect.Effect<MachineRef<Machine.Snapshot<States>, Machine.EventInputOf<InputEvents>, E | ActionError<R> | InfiniteTransitionError | MachineSchemaDecodeError | StoppedError, Output, Machine.EmittedEventOf<Emits>>, MachineSchemaDecodeError, ExcludeCompatibleRuntime<ExecutionServices<R>, Machine.EventOf<Events>, Machine.EmitOf<Emits>>>;
5082
5039
  //# sourceMappingURL=Machine.d.ts.map