xstate 5.0.0-beta.22 → 5.0.0-beta.23

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 (44) hide show
  1. package/actions/dist/xstate-actions.cjs.js +1 -1
  2. package/actions/dist/xstate-actions.development.cjs.js +1 -1
  3. package/actions/dist/xstate-actions.development.esm.js +1 -1
  4. package/actions/dist/xstate-actions.esm.js +1 -1
  5. package/actions/dist/xstate-actions.umd.min.js +1 -1
  6. package/actions/dist/xstate-actions.umd.min.js.map +1 -1
  7. package/actors/dist/xstate-actors.cjs.js +1 -1
  8. package/actors/dist/xstate-actors.development.cjs.js +1 -1
  9. package/actors/dist/xstate-actors.development.esm.js +1 -1
  10. package/actors/dist/xstate-actors.esm.js +1 -1
  11. package/actors/dist/xstate-actors.umd.min.js.map +1 -1
  12. package/dist/{actions-4b70fc8d.development.cjs.js → actions-0fcd4d15.development.cjs.js} +9 -10
  13. package/dist/{actions-fb7384f8.esm.js → actions-bf7f6679.esm.js} +9 -10
  14. package/dist/{actions-8f2e997e.cjs.js → actions-e83129c5.cjs.js} +9 -10
  15. package/dist/{actions-d4305983.development.esm.js → actions-f6b5002d.development.esm.js} +9 -10
  16. package/dist/declarations/src/Machine.d.ts +2 -2
  17. package/dist/declarations/src/State.d.ts +5 -5
  18. package/dist/declarations/src/StateMachine.d.ts +24 -18
  19. package/dist/declarations/src/StateNode.d.ts +8 -8
  20. package/dist/declarations/src/actions/assign.d.ts +6 -6
  21. package/dist/declarations/src/actions/cancel.d.ts +7 -7
  22. package/dist/declarations/src/actions/choose.d.ts +4 -10
  23. package/dist/declarations/src/actions/log.d.ts +7 -7
  24. package/dist/declarations/src/actions/pure.d.ts +5 -17
  25. package/dist/declarations/src/actions/raise.d.ts +3 -3
  26. package/dist/declarations/src/actions/send.d.ts +22 -22
  27. package/dist/declarations/src/actions/stop.d.ts +7 -7
  28. package/dist/declarations/src/interpreter.d.ts +1 -1
  29. package/dist/declarations/src/stateUtils.d.ts +12 -12
  30. package/dist/declarations/src/typegenTypes.d.ts +1 -1
  31. package/dist/declarations/src/types.d.ts +106 -132
  32. package/dist/declarations/src/utils.d.ts +8 -8
  33. package/dist/xstate.cjs.js +6 -5
  34. package/dist/xstate.development.cjs.js +6 -5
  35. package/dist/xstate.development.esm.js +7 -6
  36. package/dist/xstate.esm.js +7 -6
  37. package/dist/xstate.umd.min.js +1 -1
  38. package/dist/xstate.umd.min.js.map +1 -1
  39. package/guards/dist/xstate-guards.cjs.js +1 -1
  40. package/guards/dist/xstate-guards.development.cjs.js +1 -1
  41. package/guards/dist/xstate-guards.development.esm.js +1 -1
  42. package/guards/dist/xstate-guards.esm.js +1 -1
  43. package/guards/dist/xstate-guards.umd.min.js.map +1 -1
  44. package/package.json +1 -1
@@ -36,8 +36,6 @@ export type IsAny<T> = Equals<T, any>;
36
36
  export type Cast<A, B> = A extends B ? A : B;
37
37
  export type NoInfer<T> = [T][T extends any ? 0 : any];
38
38
  export type LowInfer<T> = T & {};
39
- export type EventType = string;
40
- export type ActionType = string;
41
39
  export type MetaObject = Record<string, any>;
42
40
  export type Lazy<T> = () => T;
43
41
  export type MaybeLazy<T> = T | Lazy<T>;
@@ -55,7 +53,7 @@ export interface AnyEventObject extends EventObject {
55
53
  }
56
54
  export interface ParameterizedObject {
57
55
  type: string;
58
- params?: Record<string, any>;
56
+ params?: Record<string, unknown>;
59
57
  }
60
58
  export interface UnifiedArg<TContext extends MachineContext, TEvent extends EventObject> {
61
59
  context: TContext;
@@ -64,10 +62,10 @@ export interface UnifiedArg<TContext extends MachineContext, TEvent extends Even
64
62
  system: ActorSystem<any>;
65
63
  }
66
64
  export type MachineContext = Record<string, any>;
67
- export interface ActionArgs<TContext extends MachineContext, TEvent extends EventObject, TAction extends ParameterizedObject = ParameterizedObject> extends UnifiedArg<TContext, TEvent> {
65
+ export interface ActionArgs<TContext extends MachineContext, TEvent extends EventObject, TAction extends ParameterizedObject | undefined> extends UnifiedArg<TContext, TEvent> {
68
66
  action: TAction;
69
67
  }
70
- export type InputFrom<T extends AnyActorLogic> = T extends StateMachine<infer _TContext, infer _TEvent, infer _TActions, infer _TActors, infer TInput, infer _TResolvedTypesMeta> ? TInput : T extends ActorLogic<infer _TEvent, infer _TSnapshot, infer _TInternalState, infer _TPersisted, infer _TSystem, infer TInput> ? TInput : never;
68
+ export type InputFrom<T extends AnyActorLogic> = T extends StateMachine<infer _TContext, infer _TEvent, infer _TAction, infer _TActor, infer TInput, infer _TResolvedTypesMeta> ? TInput : T extends ActorLogic<infer _TEvent, infer _TSnapshot, infer _TInternalState, infer _TPersisted, infer _TSystem, infer TInput> ? TInput : never;
71
69
  export type OutputFrom<T extends AnyActorLogic> = T extends ActorLogic<infer _TEvent, infer _TSnapshot, infer _TInternalState, infer _TPersisted, infer _TSystem, infer _TInput, infer TOutput> ? TOutput : never;
72
70
  export type Spawner = <T extends AnyActorLogic | string>(// TODO: read string from machine logic keys
73
71
  logic: T, options?: Partial<{
@@ -75,19 +73,24 @@ logic: T, options?: Partial<{
75
73
  systemId?: string;
76
74
  input: T extends AnyActorLogic ? InputFrom<T> : any;
77
75
  }>) => ActorRefFrom<T>;
78
- export interface AssignArgs<TContext extends MachineContext, TExpressionEvent extends EventObject> extends ActionArgs<TContext, TExpressionEvent> {
76
+ export interface AssignArgs<TContext extends MachineContext, TExpressionEvent extends EventObject, TExpressionAction extends ParameterizedObject | undefined> extends ActionArgs<TContext, TExpressionEvent, TExpressionAction> {
79
77
  spawn: Spawner;
80
78
  }
81
- export type ActionFunction<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject, TAction extends ParameterizedObject = ParameterizedObject> = {
82
- (args: ActionArgs<TContext, TExpressionEvent, TAction>): void;
79
+ export type ActionFunction<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject, TExpressionAction extends ParameterizedObject | undefined, TAction extends ParameterizedObject> = {
80
+ (args: ActionArgs<TContext, TExpressionEvent, TExpressionAction>): void;
83
81
  _out_TEvent?: TEvent;
82
+ _out_TAction?: TAction;
84
83
  };
85
- export interface ChooseBranch<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject = TExpressionEvent> {
84
+ export interface ChooseBranch<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject = TExpressionEvent, TAction extends ParameterizedObject = ParameterizedObject> {
86
85
  guard?: GuardConfig<TContext, TExpressionEvent>;
87
- actions: Actions<TContext, TExpressionEvent, TEvent>;
88
- }
89
- export type Action<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject = TExpressionEvent> = ActionType | ParameterizedObject | ActionFunction<TContext, TExpressionEvent, TEvent, ParameterizedObject>;
90
- export type Actions<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject = TExpressionEvent> = SingleOrArray<Action<TContext, TExpressionEvent, TEvent>>;
86
+ actions: Actions<TContext, TExpressionEvent, TEvent, undefined, TAction>;
87
+ }
88
+ type NoRequiredParams<T extends ParameterizedObject> = T extends any ? {
89
+ type: T['type'];
90
+ } extends T ? T['type'] : never : never;
91
+ export type Action<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject, TExpressionAction extends ParameterizedObject | undefined, TAction extends ParameterizedObject> = NoRequiredParams<TAction> | TAction | ActionFunction<TContext, TExpressionEvent, TEvent, TExpressionAction, TAction>;
92
+ export type UnknownAction = Action<MachineContext, EventObject, EventObject, ParameterizedObject | undefined, ParameterizedObject>;
93
+ export type Actions<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject, TExpressionAction extends ParameterizedObject | undefined, TAction extends ParameterizedObject> = SingleOrArray<Action<TContext, TExpressionEvent, TEvent, TExpressionAction, TAction>>;
91
94
  export type StateKey = string | AnyState;
92
95
  export interface StateValueMap {
93
96
  [key: string]: StateValue;
@@ -110,9 +113,9 @@ export interface DefaultGuardObject<TContext extends MachineContext, TEvent exte
110
113
  children?: Array<GuardObject<TContext, TEvent>>;
111
114
  predicate?: GuardPredicate<TContext, TEvent>;
112
115
  }
113
- export type GuardEvaluator<TContext extends MachineContext, TEvent extends EventObject> = (guard: GuardDefinition<TContext, TEvent>, context: TContext, event: TEvent, state: State<TContext, TEvent, TODO>) => boolean;
116
+ export type GuardEvaluator<TContext extends MachineContext, TEvent extends EventObject> = (guard: GuardDefinition<TContext, TEvent>, context: TContext, event: TEvent, state: State<TContext, TEvent, TODO, TODO>) => boolean;
114
117
  export interface GuardArgs<TContext extends MachineContext, TEvent extends EventObject> {
115
- state: State<TContext, TEvent, TODO>;
118
+ state: State<TContext, TEvent, TODO, TODO>;
116
119
  guard: GuardDefinition<TContext, TEvent>;
117
120
  evaluate: GuardEvaluator<TContext, TEvent>;
118
121
  }
@@ -141,28 +144,23 @@ export interface BooleanGuardDefinition<TContext extends MachineContext, TEvent
141
144
  };
142
145
  }
143
146
  export type TransitionTarget = SingleOrArray<string>;
144
- export interface TransitionConfig<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject = TExpressionEvent, TAction extends ParameterizedObject = ParameterizedObject> {
147
+ export interface TransitionConfig<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject, TAction extends ParameterizedObject> {
145
148
  guard?: GuardConfig<TContext, TExpressionEvent>;
146
- actions?: Actions<TContext, TExpressionEvent, TEvent>;
149
+ actions?: Actions<TContext, TExpressionEvent, TEvent, undefined, TAction>;
147
150
  reenter?: boolean;
148
151
  target?: TransitionTarget | undefined;
149
152
  meta?: Record<string, any>;
150
153
  description?: string;
151
154
  }
152
- export interface TargetTransitionConfig<TContext extends MachineContext, TEvent extends EventObject> extends TransitionConfig<TContext, TEvent> {
153
- target: TransitionTarget;
154
- }
155
- export type ConditionalTransitionConfig<TContext extends MachineContext, TEvent extends EventObject = EventObject> = Array<TransitionConfig<TContext, TEvent>>;
156
- export interface InitialTransitionConfig<TContext extends MachineContext, TEvent extends EventObject> extends TransitionConfig<TContext, TEvent> {
155
+ export interface InitialTransitionConfig<TContext extends MachineContext, TEvent extends EventObject, TAction extends ParameterizedObject> extends TransitionConfig<TContext, TEvent, TEvent, TAction> {
157
156
  guard?: never;
158
157
  target: TransitionTarget;
159
158
  }
160
- export type Transition<TContext extends MachineContext, TEvent extends EventObject = EventObject> = string | TransitionConfig<TContext, TEvent> | ConditionalTransitionConfig<TContext, TEvent>;
161
159
  export interface InvokeMeta {
162
160
  src: string;
163
161
  meta: MetaObject | undefined;
164
162
  }
165
- export interface InvokeDefinition<TContext extends MachineContext, TEvent extends EventObject> {
163
+ export interface InvokeDefinition<TContext extends MachineContext, TEvent extends EventObject, TAction extends ParameterizedObject> {
166
164
  id: string;
167
165
  systemId: string | undefined;
168
166
  /**
@@ -173,13 +171,13 @@ export interface InvokeDefinition<TContext extends MachineContext, TEvent extend
173
171
  /**
174
172
  * The transition to take upon the invoked child machine reaching its final top-level state.
175
173
  */
176
- onDone?: string | SingleOrArray<TransitionConfig<TContext, DoneInvokeEvent<any>>>;
174
+ onDone?: string | SingleOrArray<TransitionConfig<TContext, DoneInvokeEvent<any>, DoneInvokeEvent<any>, TAction>>;
177
175
  /**
178
176
  * The transition to take upon the invoked child machine sending an error event.
179
177
  */
180
- onError?: string | SingleOrArray<TransitionConfig<TContext, ErrorEvent<any>>>;
181
- onSnapshot?: string | SingleOrArray<TransitionConfig<TContext, SnapshotEvent<any>>>;
182
- toJSON: () => Omit<InvokeDefinition<TContext, TEvent>, 'onDone' | 'onError' | 'toJSON'>;
178
+ onError?: string | SingleOrArray<TransitionConfig<TContext, ErrorEvent<any>, ErrorEvent<any>, TAction>>;
179
+ onSnapshot?: string | SingleOrArray<TransitionConfig<TContext, SnapshotEvent<any>, SnapshotEvent<any>, TAction>>;
180
+ toJSON: () => Omit<InvokeDefinition<TContext, TEvent, TAction>, 'onDone' | 'onError' | 'toJSON'>;
183
181
  meta: MetaObject | undefined;
184
182
  }
185
183
  export interface Delay {
@@ -189,27 +187,27 @@ export interface Delay {
189
187
  */
190
188
  delay: number;
191
189
  }
192
- export type DelayedTransitions<TContext extends MachineContext, TEvent extends EventObject> = Record<string | number, string | SingleOrArray<TransitionConfig<TContext, TEvent>>> | Array<TransitionConfig<TContext, TEvent> & {
190
+ export type DelayedTransitions<TContext extends MachineContext, TEvent extends EventObject, TAction extends ParameterizedObject> = Record<string | number, string | SingleOrArray<TransitionConfig<TContext, TEvent, TEvent, TAction>>> | Array<TransitionConfig<TContext, TEvent, TEvent, TAction> & {
193
191
  delay: number | string | ((args: UnifiedArg<TContext, TEvent>) => number);
194
192
  }>;
195
193
  export type StateTypes = 'atomic' | 'compound' | 'parallel' | 'final' | 'history' | string;
196
- export type SingleOrArray<T> = T[] | T;
194
+ export type SingleOrArray<T> = readonly T[] | T;
197
195
  export type StateNodesConfig<TContext extends MachineContext, TEvent extends EventObject> = {
198
196
  [K in string]: StateNode<TContext, TEvent>;
199
197
  };
200
- export type StatesConfig<TContext extends MachineContext, TEvent extends EventObject, TAction extends ParameterizedObject, TActor extends ProvidedActor> = {
201
- [K in string]: StateNodeConfig<TContext, TEvent, TAction, TActor>;
198
+ export type StatesConfig<TContext extends MachineContext, TEvent extends EventObject, TAction extends ParameterizedObject, TActor extends ProvidedActor, TOutput> = {
199
+ [K in string]: StateNodeConfig<TContext, TEvent, TAction, TActor, TOutput>;
202
200
  };
203
201
  export type StatesDefinition<TContext extends MachineContext, TEvent extends EventObject> = {
204
202
  [K in string]: StateNodeDefinition<TContext, TEvent>;
205
203
  };
206
204
  export type TransitionConfigTarget = string | undefined;
207
- export type TransitionConfigOrTarget<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject = TExpressionEvent> = SingleOrArray<TransitionConfigTarget | TransitionConfig<TContext, TExpressionEvent, TEvent>>;
208
- export type TransitionsConfig<TContext extends MachineContext, TEvent extends EventObject> = {
209
- [K in TEvent['type'] | '*']?: K extends '*' ? TransitionConfigOrTarget<TContext, TEvent> : TransitionConfigOrTarget<TContext, ExtractEvent<TEvent, K>, TEvent>;
205
+ export type TransitionConfigOrTarget<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject, TAction extends ParameterizedObject> = SingleOrArray<TransitionConfigTarget | TransitionConfig<TContext, TExpressionEvent, TEvent, TAction>>;
206
+ export type TransitionsConfig<TContext extends MachineContext, TEvent extends EventObject, TAction extends ParameterizedObject> = {
207
+ [K in TEvent['type'] | '*']?: K extends '*' ? TransitionConfigOrTarget<TContext, TEvent, TEvent, TAction> : TransitionConfigOrTarget<TContext, ExtractEvent<TEvent, K>, TEvent, TAction>;
210
208
  };
211
209
  type IsLiteralString<T extends string> = string extends T ? false : true;
212
- type DistributeActors<TContext extends MachineContext, TEvent extends EventObject, TActor extends ProvidedActor> = TActor extends {
210
+ type DistributeActors<TContext extends MachineContext, TEvent extends EventObject, TActor extends ProvidedActor, TAction extends ParameterizedObject> = TActor extends {
213
211
  src: infer TSrc;
214
212
  } ? Compute<{
215
213
  systemId?: string;
@@ -221,12 +219,12 @@ type DistributeActors<TContext extends MachineContext, TEvent extends EventObjec
221
219
  /**
222
220
  * The transition to take upon the invoked child machine reaching its final top-level state.
223
221
  */
224
- onDone?: string | SingleOrArray<TransitionConfigOrTarget<TContext, DoneInvokeEvent<OutputFrom<TActor['logic']>>, TEvent>>;
222
+ onDone?: string | SingleOrArray<TransitionConfigOrTarget<TContext, DoneInvokeEvent<OutputFrom<TActor['logic']>>, TEvent, TAction>>;
225
223
  /**
226
224
  * The transition to take upon the invoked child machine sending an error event.
227
225
  */
228
- onError?: string | SingleOrArray<TransitionConfigOrTarget<TContext, ErrorEvent<any>, TEvent>>;
229
- onSnapshot?: string | SingleOrArray<TransitionConfigOrTarget<TContext, SnapshotEvent<any>, TEvent>>;
226
+ onError?: string | SingleOrArray<TransitionConfigOrTarget<TContext, ErrorEvent<any>, TEvent, TAction>>;
227
+ onSnapshot?: string | SingleOrArray<TransitionConfigOrTarget<TContext, SnapshotEvent<any>, TEvent, TAction>>;
230
228
  /**
231
229
  * Meta data related to this invocation
232
230
  */
@@ -244,7 +242,7 @@ type DistributeActors<TContext extends MachineContext, TEvent extends EventObjec
244
242
  */
245
243
  id?: string;
246
244
  })> : never;
247
- export type InvokeConfig<TContext extends MachineContext, TEvent extends EventObject, TActor extends ProvidedActor> = IsLiteralString<TActor['src']> extends true ? DistributeActors<TContext, TEvent, TActor> : {
245
+ export type InvokeConfig<TContext extends MachineContext, TEvent extends EventObject, TActor extends ProvidedActor, TAction extends ParameterizedObject> = IsLiteralString<TActor['src']> extends true ? DistributeActors<TContext, TEvent, TActor, TAction> : {
248
246
  /**
249
247
  * The unique identifier for the invoked machine. If not specified, this
250
248
  * will be the machine's own `id`, or the URL (from `src`).
@@ -259,22 +257,22 @@ export type InvokeConfig<TContext extends MachineContext, TEvent extends EventOb
259
257
  /**
260
258
  * The transition to take upon the invoked child machine reaching its final top-level state.
261
259
  */
262
- onDone?: string | SingleOrArray<TransitionConfigOrTarget<TContext, DoneInvokeEvent<any>, TEvent>>;
260
+ onDone?: string | SingleOrArray<TransitionConfigOrTarget<TContext, DoneInvokeEvent<any>, TEvent, TAction>>;
263
261
  /**
264
262
  * The transition to take upon the invoked child machine sending an error event.
265
263
  */
266
- onError?: string | SingleOrArray<TransitionConfigOrTarget<TContext, ErrorEvent<any>, TEvent>>;
267
- onSnapshot?: string | SingleOrArray<TransitionConfigOrTarget<TContext, SnapshotEvent<any>, TEvent>>;
264
+ onError?: string | SingleOrArray<TransitionConfigOrTarget<TContext, ErrorEvent<any>, TEvent, TAction>>;
265
+ onSnapshot?: string | SingleOrArray<TransitionConfigOrTarget<TContext, SnapshotEvent<any>, TEvent, TAction>>;
268
266
  /**
269
267
  * Meta data related to this invocation
270
268
  */
271
269
  meta?: MetaObject;
272
270
  };
273
- export interface StateNodeConfig<TContext extends MachineContext, TEvent extends EventObject, TAction extends ParameterizedObject, TActor extends ProvidedActor> {
271
+ export interface StateNodeConfig<TContext extends MachineContext, TEvent extends EventObject, TAction extends ParameterizedObject, TActor extends ProvidedActor, TOutput> {
274
272
  /**
275
273
  * The initial state transition.
276
274
  */
277
- initial?: InitialTransitionConfig<TContext, TEvent> | SingleOrArray<string> | undefined;
275
+ initial?: InitialTransitionConfig<TContext, TEvent, TAction> | SingleOrArray<string> | undefined;
278
276
  /**
279
277
  * The type of this state node:
280
278
  *
@@ -294,38 +292,38 @@ export interface StateNodeConfig<TContext extends MachineContext, TEvent extends
294
292
  /**
295
293
  * The mapping of state node keys to their state node configurations (recursive).
296
294
  */
297
- states?: StatesConfig<TContext, TEvent, TAction, TActor> | undefined;
295
+ states?: StatesConfig<TContext, TEvent, TAction, TActor, NonReducibleUnknown> | undefined;
298
296
  /**
299
297
  * The services to invoke upon entering this state node. These services will be stopped upon exiting this state node.
300
298
  */
301
- invoke?: SingleOrArray<TActor['src'] | InvokeConfig<TContext, TEvent, TActor>>;
299
+ invoke?: SingleOrArray<TActor['src'] | InvokeConfig<TContext, TEvent, TActor, TAction>>;
302
300
  /**
303
301
  * The mapping of event types to their potential transition(s).
304
302
  */
305
- on?: TransitionsConfig<TContext, TEvent>;
303
+ on?: TransitionsConfig<TContext, TEvent, TAction>;
306
304
  /**
307
305
  * The action(s) to be executed upon entering the state node.
308
306
  */
309
- entry?: Actions<TContext, TEvent, TEvent>;
307
+ entry?: Actions<TContext, TEvent, TEvent, undefined, TAction>;
310
308
  /**
311
309
  * The action(s) to be executed upon exiting the state node.
312
310
  */
313
- exit?: Actions<TContext, TEvent, TEvent>;
311
+ exit?: Actions<TContext, TEvent, TEvent, undefined, TAction>;
314
312
  /**
315
313
  * The potential transition(s) to be taken upon reaching a final child state node.
316
314
  *
317
315
  * This is equivalent to defining a `[done(id)]` transition on this state node's `on` property.
318
316
  */
319
- onDone?: string | SingleOrArray<TransitionConfig<TContext, DoneEventObject>> | undefined;
317
+ onDone?: string | SingleOrArray<TransitionConfig<TContext, DoneEventObject, DoneEventObject, TAction>> | undefined;
320
318
  /**
321
319
  * The mapping (or array) of delays (in milliseconds) to their potential transition(s).
322
320
  * The delayed transitions are taken after the specified delay in an interpreter.
323
321
  */
324
- after?: DelayedTransitions<TContext, TEvent>;
322
+ after?: DelayedTransitions<TContext, TEvent, TAction>;
325
323
  /**
326
324
  * An eventless transition that is always taken when this state node is active.
327
325
  */
328
- always?: TransitionConfigOrTarget<TContext, TEvent>;
326
+ always?: TransitionConfigOrTarget<TContext, TEvent, TEvent, TAction>;
329
327
  /**
330
328
  * @private
331
329
  */
@@ -340,7 +338,7 @@ export interface StateNodeConfig<TContext extends MachineContext, TEvent extends
340
338
  * The output data will be evaluated with the current `context` and placed on the `.data` property
341
339
  * of the event.
342
340
  */
343
- output?: Mapper<TContext, TEvent, any> | NonReducibleUnknown;
341
+ output?: Mapper<TContext, TEvent, TOutput> | TOutput;
344
342
  /**
345
343
  * The unique ID of the state node, which can be referenced as a transition target via the
346
344
  * `#id` syntax.
@@ -373,12 +371,12 @@ export interface StateNodeDefinition<TContext extends MachineContext, TEvent ext
373
371
  states: StatesDefinition<TContext, TEvent>;
374
372
  on: TransitionDefinitionMap<TContext, TEvent>;
375
373
  transitions: Array<TransitionDefinition<TContext, TEvent>>;
376
- entry: Action<any, any, any>[];
377
- exit: Action<any, any, any>[];
374
+ entry: UnknownAction[];
375
+ exit: UnknownAction[];
378
376
  meta: any;
379
377
  order: number;
380
378
  output?: FinalStateNodeConfig<TContext, TEvent>['output'];
381
- invoke: Array<InvokeDefinition<TContext, TEvent>>;
379
+ invoke: Array<InvokeDefinition<TContext, TEvent, TODO>>;
382
380
  description?: string;
383
381
  tags: string[];
384
382
  }
@@ -386,10 +384,10 @@ export interface StateMachineDefinition<TContext extends MachineContext, TEvent
386
384
  }
387
385
  export type AnyStateNode = StateNode<any, any>;
388
386
  export type AnyStateNodeDefinition = StateNodeDefinition<any, any>;
389
- export type AnyState = State<any, any, any, any>;
390
- export type AnyStateMachine = StateMachine<any, any, any, any, any, any>;
387
+ export type AnyState = State<any, any, any, any, any>;
388
+ export type AnyStateMachine = StateMachine<any, any, any, any, any, any, any>;
391
389
  export type AnyStateConfig = StateConfig<any, AnyEventObject>;
392
- export interface AtomicStateNodeConfig<TContext extends MachineContext, TEvent extends EventObject> extends StateNodeConfig<TContext, TEvent, TODO, TODO> {
390
+ export interface AtomicStateNodeConfig<TContext extends MachineContext, TEvent extends EventObject> extends StateNodeConfig<TContext, TEvent, TODO, TODO, TODO> {
393
391
  initial?: undefined;
394
392
  parallel?: false | undefined;
395
393
  states?: undefined;
@@ -407,14 +405,14 @@ export interface FinalStateNodeConfig<TContext extends MachineContext, TEvent ex
407
405
  */
408
406
  output?: Mapper<TContext, TEvent, any>;
409
407
  }
410
- export type SimpleOrStateNodeConfig<TContext extends MachineContext, TEvent extends EventObject> = AtomicStateNodeConfig<TContext, TEvent> | StateNodeConfig<TContext, TEvent, TODO, TODO>;
408
+ export type SimpleOrStateNodeConfig<TContext extends MachineContext, TEvent extends EventObject> = AtomicStateNodeConfig<TContext, TEvent> | StateNodeConfig<TContext, TEvent, TODO, TODO, TODO>;
411
409
  export type ActionFunctionMap<TContext extends MachineContext, TEvent extends EventObject, TAction extends ParameterizedObject = ParameterizedObject> = {
412
410
  [K in TAction['type']]?: ActionFunction<TContext, TEvent, TEvent, TAction extends {
413
411
  type: K;
414
- } ? TAction : never>;
412
+ } ? TAction : never, TAction>;
415
413
  };
416
- export type DelayFunctionMap<TContext extends MachineContext, TEvent extends EventObject> = Record<string, DelayConfig<TContext, TEvent>>;
417
- export type DelayConfig<TContext extends MachineContext, TEvent extends EventObject> = number | DelayExpr<TContext, TEvent>;
414
+ export type DelayFunctionMap<TContext extends MachineContext, TEvent extends EventObject, TAction extends ParameterizedObject> = Record<string, DelayConfig<TContext, TEvent, TAction>>;
415
+ export type DelayConfig<TContext extends MachineContext, TExpressionEvent extends EventObject, TExpressionAction extends ParameterizedObject | undefined> = number | DelayExpr<TContext, TExpressionEvent, TExpressionAction>;
418
416
  export interface MachineImplementationsSimplified<TContext extends MachineContext, TEvent extends EventObject, TAction extends ParameterizedObject = ParameterizedObject> {
419
417
  guards: Record<string, GuardPredicate<TContext, TEvent>>;
420
418
  actions: ActionFunctionMap<TContext, TEvent, TAction>;
@@ -422,19 +420,20 @@ export interface MachineImplementationsSimplified<TContext extends MachineContex
422
420
  src: AnyActorLogic;
423
421
  input: Mapper<TContext, TEvent, any> | any;
424
422
  }>;
425
- delays: DelayFunctionMap<TContext, TEvent>;
423
+ delays: DelayFunctionMap<TContext, TEvent, TAction>;
426
424
  }
427
- type MachineImplementationsActions<TContext extends MachineContext, TResolvedTypesMeta, TEventsCausingActions = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'eventsCausingActions'>, TIndexedEvents = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'indexedEvents'>> = {
428
- [K in keyof TEventsCausingActions]?: ActionFunction<TContext, Cast<Prop<TIndexedEvents, TEventsCausingActions[K]>, EventObject>, Cast<Prop<TIndexedEvents, keyof TIndexedEvents>, EventObject>, ParameterizedObject>;
425
+ type MaybeNarrowedEvent<TIndexedEvents, TCausingLookup, K> = Cast<Prop<TIndexedEvents, K extends keyof TCausingLookup ? TCausingLookup[K] : TIndexedEvents[keyof TIndexedEvents]>, EventObject>;
426
+ type MachineImplementationsActions<TContext extends MachineContext, TResolvedTypesMeta, TEventsCausingActions = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'eventsCausingActions'>, TIndexedEvents = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'indexedEvents'>, TIndexedActions = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'indexedActions'>> = {
427
+ [K in keyof TIndexedActions]?: ActionFunction<TContext, MaybeNarrowedEvent<TIndexedEvents, TEventsCausingActions, K>, Cast<Prop<TIndexedEvents, keyof TIndexedEvents>, EventObject>, Cast<TIndexedActions[K], ParameterizedObject>, Cast<Prop<TIndexedActions, keyof TIndexedActions>, ParameterizedObject>>;
429
428
  };
430
429
  type MachineImplementationsActors<TContext extends MachineContext, TResolvedTypesMeta, TEventsCausingActors = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'eventsCausingActors'>, TIndexedActors = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'indexedActors'>, TIndexedEvents = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'indexedEvents'>, _TInvokeSrcNameMap = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'invokeSrcNameMap'>> = {
431
430
  [K in keyof TIndexedActors]?: Cast<Prop<TIndexedActors[K], 'logic'>, AnyActorLogic> | {
432
431
  src: Cast<Prop<TIndexedActors[K], 'logic'>, AnyActorLogic>;
433
- input: Mapper<TContext, Cast<Prop<TIndexedEvents, K extends keyof TEventsCausingActors ? TEventsCausingActors[K] : TIndexedEvents[keyof TIndexedEvents]>, EventObject>, InputFrom<Cast<Prop<TIndexedActors[K], 'logic'>, AnyActorLogic>>> | InputFrom<Cast<Prop<TIndexedActors[K], 'logic'>, AnyActorLogic>>;
432
+ input: Mapper<TContext, MaybeNarrowedEvent<TIndexedEvents, TEventsCausingActors, K>, InputFrom<Cast<Prop<TIndexedActors[K], 'logic'>, AnyActorLogic>>> | InputFrom<Cast<Prop<TIndexedActors[K], 'logic'>, AnyActorLogic>>;
434
433
  };
435
434
  };
436
435
  type MachineImplementationsDelays<TContext extends MachineContext, TResolvedTypesMeta, TEventsCausingDelays = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'eventsCausingDelays'>, TIndexedEvents = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'indexedEvents'>> = {
437
- [K in keyof TEventsCausingDelays]?: DelayConfig<TContext, Cast<Prop<TIndexedEvents, TEventsCausingDelays[K]>, EventObject>>;
436
+ [K in keyof TEventsCausingDelays]?: DelayConfig<TContext, Cast<Prop<TIndexedEvents, TEventsCausingDelays[K]>, EventObject>, ParameterizedObject | undefined>;
438
437
  };
439
438
  type MachineImplementationsGuards<TContext extends MachineContext, TResolvedTypesMeta, TEventsCausingGuards = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'eventsCausingGuards'>, TIndexedEvents = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'indexedEvents'>> = {
440
439
  [K in keyof TEventsCausingGuards]?: GuardPredicate<TContext, Cast<Prop<TIndexedEvents, TEventsCausingGuards[K]>, EventObject>> | GuardConfig<TContext, Cast<Prop<TIndexedEvents, TEventsCausingGuards[K]>, EventObject>>;
@@ -464,7 +463,10 @@ export type ContextFactory<TContext extends MachineContext, TInput> = ({ spawn,
464
463
  spawn: Spawner;
465
464
  input: TInput;
466
465
  }) => TContext;
467
- export type MachineConfig<TContext extends MachineContext, TEvent extends EventObject, TAction extends ParameterizedObject = ParameterizedObject, TActor extends ProvidedActor = ProvidedActor, TInput = any, TTypesMeta = TypegenDisabled> = (StateNodeConfig<NoInfer<TContext>, NoInfer<TEvent>, NoInfer<TAction>, NoInfer<TActor>> & {
466
+ type RootStateNodeConfig<TContext extends MachineContext, TEvent extends EventObject, TAction extends ParameterizedObject, TActor extends ProvidedActor, TOutput> = Omit<StateNodeConfig<TContext, TEvent, TAction, TActor, TOutput>, 'states'> & {
467
+ states?: StatesConfig<TContext, TEvent, TAction, TActor, TOutput> | undefined;
468
+ };
469
+ export type MachineConfig<TContext extends MachineContext, TEvent extends EventObject, TAction extends ParameterizedObject = ParameterizedObject, TActor extends ProvidedActor = ProvidedActor, TInput = any, TOutput = unknown, TTypesMeta = TypegenDisabled> = (RootStateNodeConfig<NoInfer<TContext>, NoInfer<TEvent>, NoInfer<TAction>, NoInfer<TActor>, NoInfer<TOutput>> & {
468
470
  /**
469
471
  * The initial context (extended state)
470
472
  */
@@ -472,7 +474,7 @@ export type MachineConfig<TContext extends MachineContext, TEvent extends EventO
472
474
  * The machine's own version.
473
475
  */
474
476
  version?: string;
475
- types?: MachineTypes<TContext, TEvent, TActor, TInput, TTypesMeta>;
477
+ types?: MachineTypes<TContext, TEvent, TAction, TActor, TInput, TOutput, TTypesMeta>;
476
478
  }) & (Equals<TContext, MachineContext> extends true ? {
477
479
  context?: InitialContext<LowInfer<TContext>, TInput>;
478
480
  } : {
@@ -483,12 +485,9 @@ export interface ProvidedActor {
483
485
  logic: AnyActorLogic;
484
486
  id?: string;
485
487
  }
486
- export interface MachineTypes<TContext extends MachineContext, TEvent extends EventObject, TActor extends ProvidedActor, TInput, TTypesMeta = TypegenDisabled> {
488
+ export interface MachineTypes<TContext extends MachineContext, TEvent extends EventObject, TAction extends ParameterizedObject, TActor extends ProvidedActor, TInput, TOutput, TTypesMeta = TypegenDisabled> {
487
489
  context?: TContext;
488
- actions?: {
489
- type: string;
490
- [key: string]: any;
491
- };
490
+ actions?: TAction;
492
491
  actors?: TActor;
493
492
  events?: TEvent;
494
493
  guards?: {
@@ -497,6 +496,7 @@ export interface MachineTypes<TContext extends MachineContext, TEvent extends Ev
497
496
  };
498
497
  typegen?: TTypesMeta;
499
498
  input?: TInput;
499
+ output?: TOutput;
500
500
  }
501
501
  export interface HistoryStateNode<TContext extends MachineContext> extends StateNode<TContext> {
502
502
  history: 'shallow' | 'deep';
@@ -540,49 +540,49 @@ export interface DoneEventObject extends EventObject {
540
540
  toString(): string;
541
541
  }
542
542
  export type DoneEvent = DoneEventObject & string;
543
- export type DelayExpr<TContext extends MachineContext, TEvent extends EventObject> = (args: UnifiedArg<TContext, TEvent>) => number;
544
- export type LogExpr<TContext extends MachineContext, TEvent extends EventObject> = (args: UnifiedArg<TContext, TEvent>) => unknown;
545
- export type SendExpr<TContext extends MachineContext, TExpressionEvent extends EventObject, TSentEvent extends EventObject = AnyEventObject> = (args: UnifiedArg<TContext, TExpressionEvent>) => TSentEvent;
543
+ export type DelayExpr<TContext extends MachineContext, TExpressionEvent extends EventObject, TExpressionAction extends ParameterizedObject | undefined> = (args: ActionArgs<TContext, TExpressionEvent, TExpressionAction>) => number;
544
+ export type LogExpr<TContext extends MachineContext, TExpressionEvent extends EventObject, TExpressionAction extends ParameterizedObject | undefined> = (args: ActionArgs<TContext, TExpressionEvent, TExpressionAction>) => unknown;
545
+ export type SendExpr<TContext extends MachineContext, TExpressionEvent extends EventObject, TExpressionAction extends ParameterizedObject | undefined, TSentEvent extends EventObject> = (args: ActionArgs<TContext, TExpressionEvent, TExpressionAction>) => TSentEvent;
546
546
  export declare enum SpecialTargets {
547
547
  Parent = "#_parent",
548
548
  Internal = "#_internal"
549
549
  }
550
- export interface SendToActionOptions<TContext extends MachineContext, TEvent extends EventObject> extends RaiseActionOptions<TContext, TEvent> {
550
+ export interface SendToActionOptions<TContext extends MachineContext, TExpressionEvent extends EventObject, TExpressionAction extends ParameterizedObject | undefined> extends RaiseActionOptions<TContext, TExpressionEvent, TExpressionAction> {
551
551
  }
552
- export interface RaiseActionOptions<TContext extends MachineContext, TEvent extends EventObject> {
552
+ export interface RaiseActionOptions<TContext extends MachineContext, TExpressionEvent extends EventObject, TExpressionAction extends ParameterizedObject | undefined> {
553
553
  id?: string;
554
- delay?: number | string | DelayExpr<TContext, TEvent>;
554
+ delay?: number | string | DelayExpr<TContext, TExpressionEvent, TExpressionAction>;
555
555
  }
556
- export interface RaiseActionParams<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject> extends RaiseActionOptions<TContext, TExpressionEvent> {
557
- event: TEvent | SendExpr<TContext, TExpressionEvent, TEvent>;
556
+ export interface RaiseActionParams<TContext extends MachineContext, TExpressionEvent extends EventObject, TExpressionAction extends ParameterizedObject | undefined, TEvent extends EventObject> extends RaiseActionOptions<TContext, TExpressionEvent, TExpressionAction> {
557
+ event: TEvent | SendExpr<TContext, TExpressionEvent, TExpressionAction, TEvent>;
558
558
  }
559
- export interface SendToActionParams<TContext extends MachineContext, TEvent extends EventObject, TSentEvent extends EventObject = EventObject> extends SendToActionOptions<TContext, TEvent> {
560
- event: TSentEvent | SendExpr<TContext, TEvent, TSentEvent>;
559
+ export interface SendToActionParams<TContext extends MachineContext, TExpressionEvent extends EventObject, TExpressionAction extends ParameterizedObject | undefined, TSentEvent extends EventObject> extends SendToActionOptions<TContext, TExpressionEvent, TExpressionAction> {
560
+ event: TSentEvent | SendExpr<TContext, TExpressionEvent, TExpressionAction, TSentEvent>;
561
561
  }
562
- export type Assigner<TContext extends MachineContext, TExpressionEvent extends EventObject> = (args: AssignArgs<TContext, TExpressionEvent>) => Partial<TContext>;
563
- export type PartialAssigner<TContext extends MachineContext, TExpressionEvent extends EventObject, TKey extends keyof TContext> = (args: AssignArgs<TContext, TExpressionEvent>) => TContext[TKey];
564
- export type PropertyAssigner<TContext extends MachineContext, TExpressionEvent extends EventObject> = {
565
- [K in keyof TContext]?: PartialAssigner<TContext, TExpressionEvent, K> | TContext[K];
562
+ export type Assigner<TContext extends MachineContext, TExpressionEvent extends EventObject, TExpressionAction extends ParameterizedObject | undefined> = (args: AssignArgs<TContext, TExpressionEvent, TExpressionAction>) => Partial<TContext>;
563
+ export type PartialAssigner<TContext extends MachineContext, TExpressionEvent extends EventObject, TExpressionAction extends ParameterizedObject | undefined, TKey extends keyof TContext> = (args: AssignArgs<TContext, TExpressionEvent, TExpressionAction>) => TContext[TKey];
564
+ export type PropertyAssigner<TContext extends MachineContext, TExpressionEvent extends EventObject, TExpressionAction extends ParameterizedObject | undefined> = {
565
+ [K in keyof TContext]?: PartialAssigner<TContext, TExpressionEvent, TExpressionAction, K> | TContext[K];
566
566
  };
567
- export type Mapper<TContext extends MachineContext, TEvent extends EventObject, TParams> = (args: {
567
+ export type Mapper<TContext extends MachineContext, TEvent extends EventObject, TResult> = (args: {
568
568
  context: TContext;
569
569
  event: TEvent;
570
570
  self: ActorRef<TEvent>;
571
- }) => TParams;
571
+ }) => TResult;
572
572
  export type PropertyMapper<TContext extends MachineContext, TEvent extends EventObject, TParams extends {}> = {
573
573
  [K in keyof TParams]?: Mapper<TContext, TEvent, TParams[K]> | TParams[K];
574
574
  };
575
- export interface TransitionDefinition<TContext extends MachineContext, TEvent extends EventObject> extends Omit<TransitionConfig<TContext, TEvent>, 'target'> {
576
- target: Array<StateNode<TContext, TEvent>> | undefined;
575
+ export interface TransitionDefinition<TContext extends MachineContext, TEvent extends EventObject> extends Omit<TransitionConfig<TContext, TEvent, TEvent, TODO>, 'target'> {
576
+ target: ReadonlyArray<StateNode<TContext, TEvent>> | undefined;
577
577
  source: StateNode<TContext, TEvent>;
578
- actions: Action<any, any, any>[];
578
+ actions: readonly UnknownAction[];
579
579
  reenter: boolean;
580
580
  guard?: GuardDefinition<TContext, TEvent>;
581
581
  eventType: TEvent['type'] | '*';
582
582
  toJSON: () => {
583
583
  target: string[] | undefined;
584
584
  source: string;
585
- actions: Action<any, any, any>[];
585
+ actions: readonly UnknownAction[];
586
586
  guard?: GuardDefinition<TContext, TEvent>;
587
587
  eventType: TEvent['type'] | '*';
588
588
  meta?: Record<string, any>;
@@ -590,7 +590,7 @@ export interface TransitionDefinition<TContext extends MachineContext, TEvent ex
590
590
  }
591
591
  export type AnyTransitionDefinition = TransitionDefinition<any, any>;
592
592
  export interface InitialTransitionDefinition<TContext extends MachineContext, TEvent extends EventObject> extends TransitionDefinition<TContext, TEvent> {
593
- target: Array<StateNode<TContext, TEvent>>;
593
+ target: ReadonlyArray<StateNode<TContext, TEvent>>;
594
594
  guard?: never;
595
595
  }
596
596
  export type TransitionDefinitionMap<TContext extends MachineContext, TEvent extends EventObject> = {
@@ -599,32 +599,7 @@ export type TransitionDefinitionMap<TContext extends MachineContext, TEvent exte
599
599
  }> : EventObject>>;
600
600
  };
601
601
  export interface DelayedTransitionDefinition<TContext extends MachineContext, TEvent extends EventObject> extends TransitionDefinition<TContext, TEvent> {
602
- delay: number | string | DelayExpr<TContext, TEvent>;
603
- }
604
- export interface Edge<TContext extends MachineContext, TEvent extends EventObject, TEventType extends TEvent['type'] = string> {
605
- event: TEventType;
606
- source: StateNode<TContext, TEvent>;
607
- target: StateNode<TContext, TEvent>;
608
- cond?: GuardConfig<TContext, TEvent & {
609
- type: TEventType;
610
- }>;
611
- actions: Array<Action<TContext, TEvent>>;
612
- meta?: MetaObject;
613
- transition: TransitionDefinition<TContext, TEvent>;
614
- }
615
- export interface NodesAndEdges<TContext extends MachineContext, TEvent extends EventObject> {
616
- nodes: StateNode[];
617
- edges: Array<Edge<TContext, TEvent, TEvent['type']>>;
618
- }
619
- export interface Segment<TContext extends MachineContext, TEvent extends EventObject> {
620
- /**
621
- * From state.
622
- */
623
- state: State<TContext, TEvent, TODO>;
624
- /**
625
- * Event from state.
626
- */
627
- event: TEvent;
602
+ delay: number | string | DelayExpr<TContext, TEvent, undefined>;
628
603
  }
629
604
  export interface StateLike<TContext extends MachineContext> {
630
605
  value: StateValue;
@@ -734,16 +709,15 @@ export interface ActorRef<TEvent extends EventObject, TSnapshot = any> extends S
734
709
  src?: string;
735
710
  }
736
711
  export type AnyActorRef = ActorRef<any, any>;
737
- export type ActorLogicFrom<T> = ReturnTypeOrValue<T> extends infer R ? R extends StateMachine<any, any, any, any, any> ? R : R extends Promise<infer U> ? PromiseActorLogic<U> : never : never;
738
- export type ActorRefFrom<T> = ReturnTypeOrValue<T> extends infer R ? R extends StateMachine<infer TContext, infer TEvent, any, any, any, infer TResolvedTypesMeta> ? ActorRef<TEvent, State<TContext, TEvent, TODO, AreAllImplementationsAssumedToBeProvided<TResolvedTypesMeta> extends false ? MarkAllImplementationsAsProvided<TResolvedTypesMeta> : TResolvedTypesMeta>> : R extends Promise<infer U> ? ActorRefFrom<PromiseActorLogic<U>> : R extends ActorLogic<infer TEvent, infer TSnapshot, infer _, infer __, infer ___, infer ____, infer _____> ? ActorRef<TEvent, TSnapshot> : never : never;
712
+ export type ActorLogicFrom<T> = ReturnTypeOrValue<T> extends infer R ? R extends StateMachine<any, any, any, any, any, any, any> ? R : R extends Promise<infer U> ? PromiseActorLogic<U> : never : never;
713
+ export type ActorRefFrom<T> = ReturnTypeOrValue<T> extends infer R ? R extends StateMachine<infer TContext, infer TEvent, infer _TAction, infer TActor, infer _Tinput, infer TOutput, infer TResolvedTypesMeta> ? ActorRef<TEvent, State<TContext, TEvent, TActor, TOutput, AreAllImplementationsAssumedToBeProvided<TResolvedTypesMeta> extends false ? MarkAllImplementationsAsProvided<TResolvedTypesMeta> : TResolvedTypesMeta>> : R extends Promise<infer U> ? ActorRefFrom<PromiseActorLogic<U>> : R extends ActorLogic<infer TEvent, infer TSnapshot, infer _, infer __, infer ___, infer ____, infer _____> ? ActorRef<TEvent, TSnapshot> : never : never;
739
714
  export type DevToolsAdapter = (service: AnyActor) => void;
740
715
  /**
741
716
  * @deprecated Use `Actor<T>` instead.
742
717
  */
743
- export type InterpreterFrom<T extends AnyStateMachine | ((...args: any[]) => AnyStateMachine)> = ReturnTypeOrValue<T> extends StateMachine<infer TContext, infer TEvent, infer _TAction, infer TActor, infer TInput, infer TResolvedTypesMeta> ? Actor<ActorLogic<TEvent, State<TContext, TEvent, TActor, TResolvedTypesMeta>, State<TContext, TEvent, TActor, TResolvedTypesMeta>, PersistedMachineState<State<TContext, TEvent, TActor, TResolvedTypesMeta>>, ActorSystem<any>, TInput>> : never;
744
- export type MachineImplementationsFrom<T extends AnyStateMachine | ((...args: any[]) => AnyStateMachine), TRequireMissingImplementations extends boolean = false> = ReturnTypeOrValue<T> extends StateMachine<infer TContext, infer TEvent, infer TAction, infer TActor, infer _TInput, infer TResolvedTypesMeta> ? InternalMachineImplementations<TContext, TEvent, TAction, TActor, TResolvedTypesMeta, TRequireMissingImplementations> : never;
745
- export type __ResolvedTypesMetaFrom<T> = T extends StateMachine<any, any, any, any, any, infer TResolvedTypesMeta> ? TResolvedTypesMeta : never;
746
- export type EventOfMachine<TMachine extends AnyStateMachine> = TMachine extends StateMachine<any, infer E, any, any, any, any> ? E : never;
718
+ export type InterpreterFrom<T extends AnyStateMachine | ((...args: any[]) => AnyStateMachine)> = ReturnTypeOrValue<T> extends StateMachine<infer TContext, infer TEvent, infer _TAction, infer TActor, infer TInput, infer TOutput, infer TResolvedTypesMeta> ? Actor<ActorLogic<TEvent, State<TContext, TEvent, TActor, TOutput, TResolvedTypesMeta>, State<TContext, TEvent, TActor, TOutput, TResolvedTypesMeta>, PersistedMachineState<State<TContext, TEvent, TActor, TOutput, TResolvedTypesMeta>>, ActorSystem<any>, TInput>> : never;
719
+ export type MachineImplementationsFrom<T extends AnyStateMachine | ((...args: any[]) => AnyStateMachine), TRequireMissingImplementations extends boolean = false> = ReturnTypeOrValue<T> extends StateMachine<infer TContext, infer TEvent, infer TAction, infer TActor, infer _TInput, infer _TOutput, infer TResolvedTypesMeta> ? InternalMachineImplementations<TContext, TEvent, TAction, TActor, TResolvedTypesMeta, TRequireMissingImplementations> : never;
720
+ export type __ResolvedTypesMetaFrom<T> = T extends StateMachine<any, any, any, any, any, any, infer TResolvedTypesMeta> ? TResolvedTypesMeta : never;
747
721
  export interface ActorContext<TEvent extends EventObject, TSnapshot, TSystem extends ActorSystem<any> = ActorSystem<any>> {
748
722
  self: ActorRef<TEvent, TSnapshot>;
749
723
  id: string;
@@ -782,13 +756,13 @@ any, // persisted state
782
756
  any, // system
783
757
  any, // input
784
758
  any>;
785
- export type SnapshotFrom<T> = ReturnTypeOrValue<T> extends infer R ? R extends ActorRef<infer _, infer TSnapshot> ? TSnapshot : R extends Actor<infer TLogic> ? SnapshotFrom<TLogic> : R extends StateMachine<infer _, infer __, infer ___, infer ____, infer _____, infer ______> ? StateFrom<R> : R extends ActorLogic<infer _, infer TSnapshot, infer __, infer ___, infer ____> ? TSnapshot : R extends ActorContext<infer _, infer TSnapshot, infer __> ? TSnapshot : never : never;
759
+ export type SnapshotFrom<T> = ReturnTypeOrValue<T> extends infer R ? R extends ActorRef<infer _, infer TSnapshot> ? TSnapshot : R extends Actor<infer TLogic> ? SnapshotFrom<TLogic> : R extends StateMachine<infer _, infer __, infer ___, infer ____, infer _____, infer ______, infer _______> ? StateFrom<R> : R extends ActorLogic<infer _, infer TSnapshot, infer __, infer ___, infer ____> ? TSnapshot : R extends ActorContext<infer _, infer TSnapshot, infer __> ? TSnapshot : never : never;
786
760
  export type EventFromLogic<TLogic extends ActorLogic<any, any>> = TLogic extends ActorLogic<infer TEvent, infer _, infer __, infer ___, infer ____> ? TEvent : never;
787
761
  export type PersistedStateFrom<TLogic extends ActorLogic<any, any>> = TLogic extends ActorLogic<infer _TEvent, infer _TSnapshot, infer _TInternalState, infer TPersisted> ? TPersisted : never;
788
762
  export type InternalStateFrom<TLogic extends ActorLogic<any, any>> = TLogic extends ActorLogic<infer _TEvent, infer _TSnapshot, infer TInternalState, infer _TPersisted> ? TInternalState : never;
789
- type ResolveEventType<T> = ReturnTypeOrValue<T> extends infer R ? R extends StateMachine<infer _, infer TEvent, infer __, infer ___, infer ____, infer _____> ? TEvent : R extends State<infer _TContext, infer TEvent, infer _TAction, infer _TActor> ? TEvent : R extends ActorRef<infer TEvent, infer _> ? TEvent : never : never;
763
+ type ResolveEventType<T> = ReturnTypeOrValue<T> extends infer R ? R extends StateMachine<infer _TContext, infer TEvent, infer _TAction, infer _TActor, infer _TInput, infer _TOutput, infer _TResolvedTypesMeta> ? TEvent : R extends State<infer _TContext, infer TEvent, infer _TActor, infer _TOutput, infer _TResolvedTypesMeta> ? TEvent : R extends ActorRef<infer TEvent, infer _> ? TEvent : never : never;
790
764
  export type EventFrom<T, K extends Prop<TEvent, 'type'> = never, TEvent extends EventObject = ResolveEventType<T>> = IsNever<K> extends true ? TEvent : ExtractEvent<TEvent, K>;
791
- export type ContextFrom<T> = ReturnTypeOrValue<T> extends infer R ? R extends StateMachine<infer TContext, infer _, infer __, infer ___, infer ____, infer _____> ? TContext : R extends State<infer TContext, infer _TEvent, infer _TAction, infer _TActor> ? TContext : R extends Actor<infer TActorLogic> ? TActorLogic extends StateMachine<infer TContext, infer _TEvent, infer _TActions, infer _TActors, infer _TInput, infer _TTypesMeta> ? TContext : never : never : never;
765
+ export type ContextFrom<T> = ReturnTypeOrValue<T> extends infer R ? R extends StateMachine<infer TContext, infer _, infer __, infer ___, infer ____, infer _____, infer ______> ? TContext : R extends State<infer TContext, infer _TEvent, infer _TActor, infer _TOutput, infer _TResolvedTypesMeta> ? TContext : R extends Actor<infer TActorLogic> ? TActorLogic extends StateMachine<infer TContext, infer _TEvent, infer _TAction, infer _TActor, infer _TInput, infer _TOutput, infer _TTypesMeta> ? TContext : never : never : never;
792
766
  export type InferEvent<E extends EventObject> = {
793
767
  [T in E['type']]: {
794
768
  type: T;
@@ -1,6 +1,6 @@
1
1
  import { AnyActorLogic, AnyState } from "./index.js";
2
2
  import type { StateNode } from "./StateNode.js";
3
- import type { ActorLogic, AnyEventObject, EventObject, EventType, InvokeConfig, MachineContext, Mapper, Observer, ErrorEvent, SingleOrArray, StateLike, StateValue, Subscribable, TransitionConfig, TransitionConfigTarget, TODO, AnyActorRef } from "./types.js";
3
+ import type { ActorLogic, AnyEventObject, EventObject, InvokeConfig, MachineContext, Mapper, Observer, ErrorEvent, SingleOrArray, StateLike, StateValue, Subscribable, TransitionConfig, TransitionConfigTarget, TODO, AnyActorRef } from "./types.js";
4
4
  export declare function keys<T extends object>(value: T): Array<keyof T & string>;
5
5
  export declare function matchesState(parentStateId: StateValue, childStateId: StateValue): boolean;
6
6
  export declare function toStatePath(stateId: string | string[]): string[];
@@ -24,21 +24,21 @@ export declare function mapFilterValues<T, P>(collection: {
24
24
  export declare function path<T extends Record<string, any>>(props: string[]): any;
25
25
  export declare function toStatePaths(stateValue: StateValue | undefined): string[][];
26
26
  export declare function flatten<T>(array: Array<T | T[]>): T[];
27
- export declare function toArrayStrict<T>(value: T[] | T): T[];
28
- export declare function toArray<T>(value: T[] | T | undefined): T[];
27
+ export declare function toArrayStrict<T>(value: readonly T[] | T): readonly T[];
28
+ export declare function toArray<T>(value: readonly T[] | T | undefined): readonly T[];
29
29
  export declare function mapContext<TContext extends MachineContext, TEvent extends EventObject>(mapper: Mapper<TContext, TEvent, any>, context: TContext, event: TEvent, self: AnyActorRef): any;
30
- export declare function isBuiltInEvent(eventType: EventType): boolean;
30
+ export declare function isBuiltInEvent(eventType: string): boolean;
31
31
  export declare function isPromiseLike(value: any): value is PromiseLike<any>;
32
32
  export declare function isActorLogic(value: any): value is ActorLogic<any, any>;
33
33
  export declare function partition<T, A extends T, B extends T>(items: T[], predicate: (item: T) => item is A): [A[], B[]];
34
- export declare function isArray(value: any): value is any[];
34
+ export declare function isArray(value: any): value is readonly any[];
35
35
  export declare function isObservable<T>(value: any): value is Subscribable<T>;
36
36
  export declare const uniqueId: () => string;
37
37
  export declare function isErrorEvent(event: AnyEventObject): event is ErrorEvent<any>;
38
- export declare function toTransitionConfigArray<TContext extends MachineContext, TEvent extends EventObject>(configLike: SingleOrArray<TransitionConfig<TContext, TEvent> | TransitionConfigTarget>): Array<TransitionConfig<TContext, TEvent>>;
39
- export declare function normalizeTarget<TContext extends MachineContext, TEvent extends EventObject>(target: SingleOrArray<string | StateNode<TContext, TEvent>> | undefined): Array<string | StateNode<TContext, TEvent>> | undefined;
38
+ export declare function toTransitionConfigArray<TContext extends MachineContext, TEvent extends EventObject>(configLike: SingleOrArray<TransitionConfig<TContext, TEvent, TEvent, TODO> | TransitionConfigTarget>): Array<TransitionConfig<TContext, TEvent, TEvent, TODO>>;
39
+ export declare function normalizeTarget<TContext extends MachineContext, TEvent extends EventObject>(target: SingleOrArray<string | StateNode<TContext, TEvent>> | undefined): ReadonlyArray<string | StateNode<TContext, TEvent>> | undefined;
40
40
  export declare function reportUnhandledExceptionOnInvocation(originalError: any, currentError: any, id: string): void;
41
- export declare function toInvokeConfig<TContext extends MachineContext, TEvent extends EventObject>(invocable: InvokeConfig<TContext, TEvent, TODO> | string | AnyActorLogic, id: string): InvokeConfig<TContext, TEvent, TODO>;
41
+ export declare function toInvokeConfig<TContext extends MachineContext, TEvent extends EventObject>(invocable: InvokeConfig<TContext, TEvent, TODO, TODO> | string | AnyActorLogic, id: string): InvokeConfig<TContext, TEvent, TODO, TODO>;
42
42
  export declare function toObserver<T>(nextHandler?: Observer<T> | ((value: T) => void), errorHandler?: (error: any) => void, completionHandler?: () => void): Observer<T>;
43
43
  export declare function createInvokeId(stateNodeId: string, index: number): string;
44
44
  export declare function resolveReferencedActor(referenced: AnyActorLogic | {