xstate 5.14.0 → 5.15.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 (58) hide show
  1. package/actions/dist/xstate-actions.cjs.js +2 -2
  2. package/actions/dist/xstate-actions.development.cjs.js +2 -2
  3. package/actions/dist/xstate-actions.development.esm.js +2 -2
  4. package/actions/dist/xstate-actions.esm.js +2 -2
  5. package/actions/dist/xstate-actions.umd.min.js.map +1 -1
  6. package/actors/dist/xstate-actors.cjs.js +272 -65
  7. package/actors/dist/xstate-actors.development.cjs.js +272 -65
  8. package/actors/dist/xstate-actors.development.esm.js +272 -65
  9. package/actors/dist/xstate-actors.esm.js +272 -65
  10. package/actors/dist/xstate-actors.umd.min.js.map +1 -1
  11. package/dist/declarations/src/State.d.ts +21 -25
  12. package/dist/declarations/src/StateMachine.d.ts +18 -30
  13. package/dist/declarations/src/StateNode.d.ts +29 -51
  14. package/dist/declarations/src/actions/assign.d.ts +29 -27
  15. package/dist/declarations/src/actions/cancel.d.ts +28 -22
  16. package/dist/declarations/src/actions/emit.d.ts +33 -33
  17. package/dist/declarations/src/actions/enqueueActions.d.ts +18 -16
  18. package/dist/declarations/src/actions/log.d.ts +5 -4
  19. package/dist/declarations/src/actions/send.d.ts +5 -3
  20. package/dist/declarations/src/actors/callback.d.ts +65 -26
  21. package/dist/declarations/src/actors/index.d.ts +4 -4
  22. package/dist/declarations/src/actors/observable.d.ts +65 -22
  23. package/dist/declarations/src/actors/promise.d.ts +86 -9
  24. package/dist/declarations/src/actors/transition.d.ts +89 -15
  25. package/dist/declarations/src/assert.d.ts +21 -20
  26. package/dist/declarations/src/createActor.d.ts +51 -42
  27. package/dist/declarations/src/createMachine.d.ts +40 -54
  28. package/dist/declarations/src/getNextSnapshot.d.ts +27 -24
  29. package/dist/declarations/src/guards.d.ts +67 -66
  30. package/dist/declarations/src/index.d.ts +0 -1
  31. package/dist/declarations/src/inspection.d.ts +1 -0
  32. package/dist/declarations/src/setup.d.ts +1 -2
  33. package/dist/declarations/src/spawn.d.ts +2 -5
  34. package/dist/declarations/src/stateUtils.d.ts +5 -10
  35. package/dist/declarations/src/toPromise.d.ts +1 -0
  36. package/dist/declarations/src/types.d.ts +162 -188
  37. package/dist/declarations/src/waitFor.d.ts +9 -9
  38. package/dist/{log-b87cb6bd.esm.js → log-63de2429.esm.js} +112 -117
  39. package/dist/{log-7ae0ddf8.cjs.js → log-b8c93ee3.cjs.js} +112 -117
  40. package/dist/{log-505687fd.development.cjs.js → log-d2c282d6.development.cjs.js} +112 -117
  41. package/dist/{log-c943e6aa.development.esm.js → log-e9953143.development.esm.js} +112 -117
  42. package/dist/{raise-4e39e875.esm.js → raise-2cfe6b8f.esm.js} +164 -154
  43. package/dist/{raise-0f400094.development.esm.js → raise-7d030497.development.esm.js} +164 -154
  44. package/dist/{raise-f79d2832.cjs.js → raise-a6298350.cjs.js} +164 -154
  45. package/dist/{raise-0cd7e521.development.cjs.js → raise-bad6a97b.development.cjs.js} +164 -154
  46. package/dist/xstate.cjs.js +134 -157
  47. package/dist/xstate.development.cjs.js +134 -157
  48. package/dist/xstate.development.esm.js +136 -159
  49. package/dist/xstate.esm.js +136 -159
  50. package/dist/xstate.umd.min.js +1 -1
  51. package/dist/xstate.umd.min.js.map +1 -1
  52. package/guards/dist/xstate-guards.cjs.js +1 -1
  53. package/guards/dist/xstate-guards.development.cjs.js +1 -1
  54. package/guards/dist/xstate-guards.development.esm.js +1 -1
  55. package/guards/dist/xstate-guards.esm.js +1 -1
  56. package/guards/dist/xstate-guards.umd.min.js.map +1 -1
  57. package/package.json +1 -1
  58. package/dist/declarations/src/typegenTypes.d.ts +0 -168
@@ -8,7 +8,6 @@ import type { Actor } from "./createActor.js";
8
8
  import { Spawner } from "./spawn.js";
9
9
  import { AnyActorSystem, Clock } from './system.js';
10
10
  import { InspectionEvent } from "./inspection.js";
11
- import { ResolveTypegenMeta, TypegenConstraint, TypegenDisabled } from "./typegenTypes.js";
12
11
  export type Identity<T> = {
13
12
  [K in keyof T]: T[K];
14
13
  };
@@ -23,18 +22,20 @@ export type Invert<T extends Record<PropertyKey, PropertyKey>> = {
23
22
  };
24
23
  export type GetParameterizedParams<T extends ParameterizedObject | undefined> = T extends any ? ('params' extends keyof T ? T['params'] : undefined) : never;
25
24
  /**
26
- *
27
25
  * @remarks
28
- *
29
- * `T | unknown` reduces to `unknown` and that can be problematic when it comes to contextual typing.
30
- * It especially is a problem when the union has a function member, like here:
26
+ * `T | unknown` reduces to `unknown` and that can be problematic when it comes
27
+ * to contextual typing. It especially is a problem when the union has a
28
+ * function member, like here:
31
29
  *
32
30
  * ```ts
33
- * declare function test(cbOrVal: ((arg: number) => unknown) | unknown): void;
34
- * test((arg) => {}) // oops, implicit any
31
+ * declare function test(
32
+ * cbOrVal: ((arg: number) => unknown) | unknown
33
+ * ): void;
34
+ * test((arg) => {}); // oops, implicit any
35
35
  * ```
36
36
  *
37
- * This type can be used to avoid this problem. This union represents the same value space as `unknown`.
37
+ * This type can be used to avoid this problem. This union represents the same
38
+ * value space as `unknown`.
38
39
  */
39
40
  export type NonReducibleUnknown = {} | null | undefined;
40
41
  export type AnyFunction = (...args: any[]) => any;
@@ -58,21 +59,15 @@ export type Equals<A1 extends any, A2 extends any> = (<A>() => A extends A2 ? tr
58
59
  export type IsAny<T> = Equals<T, any>;
59
60
  export type Cast<A, B> = A extends B ? A : B;
60
61
  export type DoNotInfer<T> = [T][T extends any ? 0 : any];
61
- /**
62
- * @deprecated Use the built-in `NoInfer` type instead
63
- */
62
+ /** @deprecated Use the built-in `NoInfer` type instead */
64
63
  export type NoInfer<T> = DoNotInfer<T>;
65
64
  export type LowInfer<T> = T & {};
66
65
  export type MetaObject = Record<string, any>;
67
66
  export type Lazy<T> = () => T;
68
67
  export type MaybeLazy<T> = T | Lazy<T>;
69
- /**
70
- * The full definition of an event, with a string `type`.
71
- */
68
+ /** The full definition of an event, with a string `type`. */
72
69
  export type EventObject = {
73
- /**
74
- * The type of event that is sent.
75
- */
70
+ /** The type of event that is sent. */
76
71
  type: string;
77
72
  };
78
73
  export interface AnyEventObject extends EventObject {
@@ -92,7 +87,7 @@ export interface UnifiedArg<TContext extends MachineContext, TExpressionEvent ex
92
87
  export type MachineContext = Record<string, any>;
93
88
  export interface ActionArgs<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject> extends UnifiedArg<TContext, TExpressionEvent, TEvent> {
94
89
  }
95
- export type InputFrom<T> = T extends StateMachine<infer _TContext, infer _TEvent, infer _TChildren, infer _TActor, infer _TAction, infer _TGuard, infer _TDelay, infer _TStateValue, infer _TTag, infer TInput, infer _TOutput, infer _TEmitted, infer _TMeta, infer _TResolvedTypesMeta> ? TInput : T extends ActorLogic<infer _TSnapshot, infer _TEvent, infer TInput, infer _TSystem, infer _TEmitted> ? TInput : never;
90
+ export type InputFrom<T> = T extends StateMachine<infer _TContext, infer _TEvent, infer _TChildren, infer _TActor, infer _TAction, infer _TGuard, infer _TDelay, infer _TStateValue, infer _TTag, infer TInput, infer _TOutput, infer _TEmitted, infer _TMeta> ? TInput : T extends ActorLogic<infer _TSnapshot, infer _TEvent, infer TInput, infer _TSystem, infer _TEmitted> ? TInput : never;
96
91
  export type OutputFrom<T> = T extends ActorLogic<infer TSnapshot, infer _TEvent, infer _TInput, infer _TSystem, infer _TEmitted> ? (TSnapshot & {
97
92
  status: 'done';
98
93
  })['output'] : T extends ActorRef<infer TSnapshot, infer _TEvent, infer _TEmitted> ? (TSnapshot & {
@@ -124,13 +119,13 @@ export interface StateValueMap {
124
119
  [key: string]: StateValue | undefined;
125
120
  }
126
121
  /**
127
- * The string or object representing the state value relative to the parent state node.
122
+ * The string or object representing the state value relative to the parent
123
+ * state node.
128
124
  *
129
125
  * @remarks
130
- *
131
126
  * - For a child atomic state node, this is a string, e.g., `"pending"`.
132
- *
133
- * - For complex state nodes, this is an object, e.g., `{ success: "someChildState" }`.
127
+ * - For complex state nodes, this is an object, e.g., `{ success:
128
+ * "someChildState" }`.
134
129
  */
135
130
  export type StateValue = string | StateValueMap;
136
131
  export type TransitionTarget = SingleOrArray<string>;
@@ -158,17 +153,17 @@ any>;
158
153
  export interface InvokeDefinition<TContext extends MachineContext, TEvent extends EventObject, TActor extends ProvidedActor, TAction extends ParameterizedObject, TGuard extends ParameterizedObject, TDelay extends string, TEmitted extends EventObject, TMeta extends MetaObject> {
159
154
  id: string;
160
155
  systemId: string | undefined;
161
- /**
162
- * The source of the actor logic to be invoked
163
- */
156
+ /** The source of the actor logic to be invoked */
164
157
  src: AnyActorLogic | string;
165
158
  input?: Mapper<TContext, TEvent, NonReducibleUnknown, TEvent> | NonReducibleUnknown;
166
159
  /**
167
- * The transition to take upon the invoked child machine reaching its final top-level state.
160
+ * The transition to take upon the invoked child machine reaching its final
161
+ * top-level state.
168
162
  */
169
163
  onDone?: string | SingleOrArray<TransitionConfig<TContext, DoneActorEvent<unknown>, TEvent, TActor, TAction, TGuard, TDelay, TEmitted, TMeta>>;
170
164
  /**
171
- * The transition to take upon the invoked child machine sending an error event.
165
+ * The transition to take upon the invoked child machine sending an error
166
+ * event.
172
167
  */
173
168
  onError?: string | SingleOrArray<TransitionConfig<TContext, ErrorActorEvent, TEvent, TActor, TAction, TGuard, TDelay, TEmitted, TMeta>>;
174
169
  onSnapshot?: string | SingleOrArray<TransitionConfig<TContext, SnapshotEvent, TEvent, TActor, TAction, TGuard, TDelay, TEmitted, TMeta>>;
@@ -203,22 +198,22 @@ type DistributeActors<TContext extends MachineContext, TEvent extends EventObjec
203
198
  src: infer TSrc;
204
199
  } ? Compute<{
205
200
  systemId?: string;
206
- /**
207
- * The source of the machine to be invoked, or the machine itself.
208
- */
201
+ /** The source of the machine to be invoked, or the machine itself. */
209
202
  src: TSrc;
210
203
  /**
211
- * The unique identifier for the invoked machine. If not specified, this
212
- * will be the machine's own `id`, or the URL (from `src`).
204
+ * The unique identifier for the invoked machine. If not specified,
205
+ * this will be the machine's own `id`, or the URL (from `src`).
213
206
  */
214
207
  id?: TSpecificActor['id'];
215
208
  input?: Mapper<TContext, TEvent, InputFrom<TSpecificActor['logic']>, TEvent> | InputFrom<TSpecificActor['logic']>;
216
209
  /**
217
- * The transition to take upon the invoked child machine reaching its final top-level state.
210
+ * The transition to take upon the invoked child machine reaching
211
+ * its final top-level state.
218
212
  */
219
213
  onDone?: string | SingleOrArray<TransitionConfigOrTarget<TContext, DoneActorEvent<OutputFrom<TSpecificActor['logic']>>, TEvent, TActor, TAction, TGuard, TDelay, TEmitted, TMeta>>;
220
214
  /**
221
- * The transition to take upon the invoked child machine sending an error event.
215
+ * The transition to take upon the invoked child machine sending an
216
+ * error event.
222
217
  */
223
218
  onError?: string | SingleOrArray<TransitionConfigOrTarget<TContext, ErrorActorEvent, TEvent, TActor, TAction, TGuard, TDelay, TEmitted, TMeta>>;
224
219
  onSnapshot?: string | SingleOrArray<TransitionConfigOrTarget<TContext, SnapshotEvent<SnapshotFrom<TSpecificActor['logic']>>, TEvent, TActor, TAction, TGuard, TDelay, TEmitted, TMeta>>;
@@ -240,111 +235,108 @@ export type InvokeConfig<TContext extends MachineContext, TEvent extends EventOb
240
235
  */
241
236
  id?: string;
242
237
  systemId?: string;
243
- /**
244
- * The source of the machine to be invoked, or the machine itself.
245
- */
238
+ /** The source of the machine to be invoked, or the machine itself. */
246
239
  src: AnyActorLogic | string;
247
240
  input?: Mapper<TContext, TEvent, NonReducibleUnknown, TEvent> | NonReducibleUnknown;
248
241
  /**
249
- * The transition to take upon the invoked child machine reaching its final top-level state.
242
+ * The transition to take upon the invoked child machine reaching its
243
+ * final top-level state.
250
244
  */
251
245
  onDone?: string | SingleOrArray<TransitionConfigOrTarget<TContext, DoneActorEvent<any>, // TODO: consider replacing with `unknown`
252
246
  TEvent, TActor, TAction, TGuard, TDelay, TEmitted, TMeta>>;
253
247
  /**
254
- * The transition to take upon the invoked child machine sending an error event.
248
+ * The transition to take upon the invoked child machine sending an error
249
+ * event.
255
250
  */
256
251
  onError?: string | SingleOrArray<TransitionConfigOrTarget<TContext, ErrorActorEvent, TEvent, TActor, TAction, TGuard, TDelay, TEmitted, TMeta>>;
257
252
  onSnapshot?: string | SingleOrArray<TransitionConfigOrTarget<TContext, SnapshotEvent, TEvent, TActor, TAction, TGuard, TDelay, TEmitted, TMeta>>;
258
253
  };
259
254
  export type AnyInvokeConfig = InvokeConfig<any, any, any, any, any, any, any, any>;
260
255
  export interface StateNodeConfig<TContext extends MachineContext, TEvent extends EventObject, TActor extends ProvidedActor, TAction extends ParameterizedObject, TGuard extends ParameterizedObject, TDelay extends string, TTag extends string, TOutput, TEmitted extends EventObject, TMeta extends MetaObject> {
261
- /**
262
- * The initial state transition.
263
- */
256
+ /** The initial state transition. */
264
257
  initial?: InitialTransitionConfig<TContext, TEvent, TActor, TAction, TGuard, TDelay> | string | undefined;
265
258
  /**
266
259
  * The type of this state node:
267
260
  *
268
- * - `'atomic'` - no child state nodes
269
- * - `'compound'` - nested child state nodes (XOR)
270
- * - `'parallel'` - orthogonal nested child state nodes (AND)
271
- * - `'history'` - history state node
272
- * - `'final'` - final state node
261
+ * - `'atomic'` - no child state nodes
262
+ * - `'compound'` - nested child state nodes (XOR)
263
+ * - `'parallel'` - orthogonal nested child state nodes (AND)
264
+ * - `'history'` - history state node
265
+ * - `'final'` - final state node
273
266
  */
274
267
  type?: 'atomic' | 'compound' | 'parallel' | 'final' | 'history';
275
268
  /**
276
- * Indicates whether the state node is a history state node, and what
277
- * type of history:
278
- * shallow, deep, true (shallow), false (none), undefined (none)
269
+ * Indicates whether the state node is a history state node, and what type of
270
+ * history: shallow, deep, true (shallow), false (none), undefined (none)
279
271
  */
280
272
  history?: 'shallow' | 'deep' | boolean | undefined;
281
273
  /**
282
- * The mapping of state node keys to their state node configurations (recursive).
274
+ * The mapping of state node keys to their state node configurations
275
+ * (recursive).
283
276
  */
284
277
  states?: StatesConfig<TContext, TEvent, TActor, TAction, TGuard, TDelay, TTag, NonReducibleUnknown, TEmitted, TMeta> | undefined;
285
278
  /**
286
- * The services to invoke upon entering this state node. These services will be stopped upon exiting this state node.
279
+ * The services to invoke upon entering this state node. These services will
280
+ * be stopped upon exiting this state node.
287
281
  */
288
282
  invoke?: SingleOrArray<InvokeConfig<TContext, TEvent, TActor, TAction, TGuard, TDelay, TEmitted, TMeta>>;
289
- /**
290
- * The mapping of event types to their potential transition(s).
291
- */
283
+ /** The mapping of event types to their potential transition(s). */
292
284
  on?: TransitionsConfig<TContext, TEvent, TActor, TAction, TGuard, TDelay, TEmitted, TMeta>;
293
- /**
294
- * The action(s) to be executed upon entering the state node.
295
- */
285
+ /** The action(s) to be executed upon entering the state node. */
296
286
  entry?: Actions<TContext, TEvent, TEvent, undefined, TActor, TAction, TGuard, TDelay, TEmitted>;
297
- /**
298
- * The action(s) to be executed upon exiting the state node.
299
- */
287
+ /** The action(s) to be executed upon exiting the state node. */
300
288
  exit?: Actions<TContext, TEvent, TEvent, undefined, TActor, TAction, TGuard, TDelay, TEmitted>;
301
289
  /**
302
- * The potential transition(s) to be taken upon reaching a final child state node.
290
+ * The potential transition(s) to be taken upon reaching a final child state
291
+ * node.
303
292
  *
304
- * This is equivalent to defining a `[done(id)]` transition on this state node's `on` property.
293
+ * This is equivalent to defining a `[done(id)]` transition on this state
294
+ * node's `on` property.
305
295
  */
306
296
  onDone?: string | SingleOrArray<TransitionConfig<TContext, DoneStateEvent, TEvent, TActor, TAction, TGuard, TDelay, TEmitted, TMeta>> | undefined;
307
297
  /**
308
- * The mapping (or array) of delays (in milliseconds) to their potential transition(s).
309
- * The delayed transitions are taken after the specified delay in an interpreter.
298
+ * The mapping (or array) of delays (in milliseconds) to their potential
299
+ * transition(s). The delayed transitions are taken after the specified delay
300
+ * in an interpreter.
310
301
  */
311
302
  after?: DelayedTransitions<TContext, TEvent, TActor, TAction, TGuard, TDelay>;
312
303
  /**
313
- * An eventless transition that is always taken when this state node is active.
304
+ * An eventless transition that is always taken when this state node is
305
+ * active.
314
306
  */
315
307
  always?: TransitionConfigOrTarget<TContext, TEvent, TEvent, TActor, TAction, TGuard, TDelay, TEmitted, TMeta>;
316
308
  parent?: StateNode<TContext, TEvent>;
317
309
  /**
318
- * The meta data associated with this state node, which will be returned in State instances.
310
+ * The meta data associated with this state node, which will be returned in
311
+ * State instances.
319
312
  */
320
313
  meta?: TMeta;
321
314
  /**
322
- * The output data sent with the "xstate.done.state._id_" event if this is a final state node.
315
+ * The output data sent with the "xstate.done.state._id_" event if this is a
316
+ * final state node.
323
317
  *
324
- * The output data will be evaluated with the current `context` and placed on the `.data` property
325
- * of the event.
318
+ * The output data will be evaluated with the current `context` and placed on
319
+ * the `.data` property of the event.
326
320
  */
327
321
  output?: Mapper<TContext, TEvent, unknown, TEvent> | NonReducibleUnknown;
328
322
  /**
329
- * The unique ID of the state node, which can be referenced as a transition target via the
330
- * `#id` syntax.
323
+ * The unique ID of the state node, which can be referenced as a transition
324
+ * target via the `#id` syntax.
331
325
  */
332
326
  id?: string | undefined;
333
327
  /**
334
- * The order this state node appears. Corresponds to the implicit document order.
328
+ * The order this state node appears. Corresponds to the implicit document
329
+ * order.
335
330
  */
336
331
  order?: number;
337
332
  /**
338
- * The tags for this state node, which are accumulated into the `state.tags` property.
333
+ * The tags for this state node, which are accumulated into the `state.tags`
334
+ * property.
339
335
  */
340
336
  tags?: SingleOrArray<TTag>;
341
- /**
342
- * A text description of the state node
343
- */
337
+ /** A text description of the state node */
344
338
  description?: string;
345
- /**
346
- * A default target for a history state
347
- */
339
+ /** A default target for a history state */
348
340
  target?: string;
349
341
  }
350
342
  export type AnyStateNodeConfig = StateNodeConfig<any, any, any, any, any, any, any, any, any, // emitted
@@ -375,7 +367,7 @@ export interface StateMachineDefinition<TContext extends MachineContext, TEvent
375
367
  export type AnyStateNode = StateNode<any, any>;
376
368
  export type AnyStateNodeDefinition = StateNodeDefinition<any, any>;
377
369
  export type AnyMachineSnapshot = MachineSnapshot<any, any, any, any, any, any, any>;
378
- /** @deprecated use `AnyMachineSnapshot` instead */
370
+ /** @deprecated Use `AnyMachineSnapshot` instead */
379
371
  export type AnyState = AnyMachineSnapshot;
380
372
  export type AnyStateMachine = StateMachine<any, // context
381
373
  any, // event
@@ -389,7 +381,6 @@ any, // tag
389
381
  any, // input
390
382
  any, // output
391
383
  any, // emitted
392
- any, // TMeta
393
384
  any>;
394
385
  export type AnyStateConfig = StateConfig<any, AnyEventObject>;
395
386
  export interface AtomicStateNodeConfig<TContext extends MachineContext, TEvent extends EventObject> extends StateNodeConfig<TContext, TEvent, TODO, TODO, TODO, TODO, TODO, TODO, TODO, // emitted
@@ -417,9 +408,7 @@ type GuardMap<TContext extends MachineContext, TEvent extends EventObject, TGuar
417
408
  };
418
409
  export type DelayFunctionMap<TContext extends MachineContext, TEvent extends EventObject, TAction extends ParameterizedObject> = Record<string, DelayConfig<TContext, TEvent, TAction['params'], TEvent>>;
419
410
  export type DelayConfig<TContext extends MachineContext, TExpressionEvent extends EventObject, TParams extends ParameterizedObject['params'] | undefined, TEvent extends EventObject> = number | DelayExpr<TContext, TExpressionEvent, TParams, TEvent>;
420
- /**
421
- * @hidden
422
- */
411
+ /** @ignore */
423
412
  export interface MachineImplementationsSimplified<TContext extends MachineContext, TEvent extends EventObject, TActor extends ProvidedActor = ProvidedActor, TAction extends ParameterizedObject = ParameterizedObject, TGuard extends ParameterizedObject = ParameterizedObject> {
424
413
  guards: GuardMap<TContext, TEvent, TGuard>;
425
414
  actions: ActionFunctionMap<TContext, TEvent, TActor, TAction>;
@@ -429,39 +418,24 @@ export interface MachineImplementationsSimplified<TContext extends MachineContex
429
418
  }>;
430
419
  delays: DelayFunctionMap<TContext, TEvent, TAction>;
431
420
  }
432
- type MaybeNarrowedEvent<TIndexedEvents, TCausingLookup, K> = Cast<Prop<TIndexedEvents, K extends keyof TCausingLookup ? TCausingLookup[K] : TIndexedEvents[keyof TIndexedEvents]>, EventObject>;
433
- type MachineImplementationsActions<TContext extends MachineContext, TResolvedTypesMeta, TEventsCausingActions = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'eventsCausingActions'>, TIndexedEvents = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'indexedEvents'>, TIndexedActors = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'indexedActors'>, TIndexedActions = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'indexedActions'>, TIndexedGuards = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'indexedGuards'>, TIndexedDelays = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'indexedDelays'>, TEmitted = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'emitted'>> = {
434
- [K in keyof TIndexedActions]?: ActionFunction<TContext, MaybeNarrowedEvent<TIndexedEvents, TEventsCausingActions, K>, Cast<Prop<TIndexedEvents, keyof TIndexedEvents>, EventObject>, GetParameterizedParams<Cast<TIndexedActions[K], ParameterizedObject>>, Cast<Prop<TIndexedActors, keyof TIndexedActors>, ProvidedActor>, Cast<Prop<TIndexedActions, keyof TIndexedActions>, ParameterizedObject>, Cast<Prop<TIndexedGuards, keyof TIndexedGuards>, ParameterizedObject>, Cast<Prop<TIndexedDelays, keyof TIndexedDelays>, ParameterizedObject>['type'], Cast<TEmitted, EventObject>>;
421
+ type MachineImplementationsActions<TTypes extends StateMachineTypes> = {
422
+ [K in TTypes['actions']['type']]?: ActionFunction<TTypes['context'], TTypes['events'], TTypes['events'], GetConcreteByKey<TTypes['actions'], 'type', K>['params'], TTypes['actors'], TTypes['actions'], TTypes['guards'], TTypes['delays'], TTypes['emitted']>;
435
423
  };
436
- type MachineImplementationsActors<_TContext extends MachineContext, TResolvedTypesMeta, TIndexedActors = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'indexedActors'>, _TInvokeSrcNameMap = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'invokeSrcNameMap'>> = {
437
- [K in keyof TIndexedActors]?: Cast<Prop<TIndexedActors[K], 'logic'>, AnyActorLogic>;
424
+ type MachineImplementationsActors<TTypes extends StateMachineTypes> = {
425
+ [K in TTypes['actors']['src']]?: GetConcreteByKey<TTypes['actors'], 'src', K>['logic'];
438
426
  };
439
- type MachineImplementationsDelays<TContext extends MachineContext, TResolvedTypesMeta, TEventsCausingDelays = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'eventsCausingDelays'>, TIndexedEvents = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'indexedEvents'>, TIndexedActions = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'indexedActions'>, TIndexedDelays = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'indexedDelays'>> = {
440
- [K in keyof TIndexedDelays]?: DelayConfig<TContext, MaybeNarrowedEvent<TIndexedEvents, TEventsCausingDelays, K>, Cast<Prop<Prop<TIndexedActions, keyof TIndexedActions>, 'params'>, ParameterizedObject['params'] | undefined> | undefined, Cast<Prop<TIndexedEvents, keyof TIndexedEvents>, EventObject>>;
427
+ type MachineImplementationsDelays<TTypes extends StateMachineTypes> = {
428
+ [K in TTypes['delays']]?: DelayConfig<TTypes['context'], TTypes['events'], undefined, TTypes['events']>;
441
429
  };
442
- type MachineImplementationsGuards<TContext extends MachineContext, TResolvedTypesMeta, TEventsCausingGuards = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'eventsCausingGuards'>, TIndexedEvents = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'indexedEvents'>, TIndexedGuards = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'indexedGuards'>> = {
443
- [K in keyof TIndexedGuards]?: Guard<TContext, MaybeNarrowedEvent<TIndexedEvents, TEventsCausingGuards, K>, GetParameterizedParams<Cast<TIndexedGuards[K], ParameterizedObject | undefined>>, Cast<Prop<TIndexedGuards, keyof TIndexedGuards>, ParameterizedObject>>;
430
+ type MachineImplementationsGuards<TTypes extends StateMachineTypes> = {
431
+ [K in TTypes['guards']['type']]?: Guard<TTypes['context'], TTypes['events'], GetConcreteByKey<TTypes['guards'], 'type', K>['params'], TTypes['guards']>;
444
432
  };
445
- type MakeKeysRequired<T extends string> = {
446
- [K in T]: unknown;
433
+ export type InternalMachineImplementations<TTypes extends StateMachineTypes> = {
434
+ actions?: MachineImplementationsActions<TTypes>;
435
+ actors?: MachineImplementationsActors<TTypes>;
436
+ delays?: MachineImplementationsDelays<TTypes>;
437
+ guards?: MachineImplementationsGuards<TTypes>;
447
438
  };
448
- type MaybeMakeMissingImplementationsRequired<TImplementationType, TMissingImplementationsForType, TRequireMissingImplementations> = TRequireMissingImplementations extends true ? IsNever<TMissingImplementationsForType> extends true ? {} : {
449
- [K in Cast<TImplementationType, string>]: MakeKeysRequired<Cast<TMissingImplementationsForType, string>>;
450
- } : {};
451
- type GenerateActionsImplementationsPart<TContext extends MachineContext, TResolvedTypesMeta, TRequireMissingImplementations, TMissingImplementations> = Compute<MaybeMakeMissingImplementationsRequired<'actions', Prop<TMissingImplementations, 'actions'>, TRequireMissingImplementations> & {
452
- actions?: MachineImplementationsActions<TContext, TResolvedTypesMeta>;
453
- }>;
454
- type GenerateActorsImplementationsPart<TContext extends MachineContext, TResolvedTypesMeta, TRequireMissingImplementations, TMissingImplementations> = Compute<MaybeMakeMissingImplementationsRequired<'actors', Prop<TMissingImplementations, 'actors'>, TRequireMissingImplementations> & {
455
- actors?: MachineImplementationsActors<TContext, TResolvedTypesMeta>;
456
- }>;
457
- type GenerateDelaysImplementationsPart<TContext extends MachineContext, TResolvedTypesMeta, TRequireMissingImplementations, TMissingImplementations> = Compute<MaybeMakeMissingImplementationsRequired<'delays', Prop<TMissingImplementations, 'delays'>, TRequireMissingImplementations> & {
458
- delays?: MachineImplementationsDelays<TContext, TResolvedTypesMeta>;
459
- }>;
460
- type GenerateGuardsImplementationsPart<TContext extends MachineContext, TResolvedTypesMeta, TRequireMissingImplementations, TMissingImplementations> = Compute<MaybeMakeMissingImplementationsRequired<'guards', Prop<TMissingImplementations, 'guards'>, TRequireMissingImplementations> & {
461
- guards?: MachineImplementationsGuards<TContext, TResolvedTypesMeta>;
462
- }>;
463
- export type InternalMachineImplementations<TContext extends MachineContext, TResolvedTypesMeta, TRequireMissingImplementations extends boolean = false, TMissingImplementations = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'missingImplementations'>> = Compute<GenerateActionsImplementationsPart<TContext, TResolvedTypesMeta, TRequireMissingImplementations, TMissingImplementations> & GenerateActorsImplementationsPart<TContext, TResolvedTypesMeta, TRequireMissingImplementations, TMissingImplementations> & GenerateDelaysImplementationsPart<TContext, TResolvedTypesMeta, TRequireMissingImplementations, TMissingImplementations> & GenerateGuardsImplementationsPart<TContext, TResolvedTypesMeta, TRequireMissingImplementations, TMissingImplementations>>;
464
- export type MachineImplementations<TContext extends MachineContext, TEvent extends EventObject, TActor extends ProvidedActor = ProvidedActor, TAction extends ParameterizedObject = ParameterizedObject, TGuard extends ParameterizedObject = ParameterizedObject, TDelay extends string = string, TTag extends string = string, TTypesMeta extends TypegenConstraint = TypegenDisabled> = InternalMachineImplementations<TContext, ResolveTypegenMeta<TTypesMeta, TEvent, TActor, TAction, TGuard, TDelay, TTag>>;
465
439
  type InitialContext<TContext extends MachineContext, TActor extends ProvidedActor, TInput, TEvent extends EventObject> = TContext | ContextFactory<TContext, TActor, TInput, TEvent>;
466
440
  export type ContextFactory<TContext extends MachineContext, TActor extends ProvidedActor, TInput, TEvent extends EventObject = EventObject> = ({ spawn, input, self }: {
467
441
  spawn: Spawner<TActor>;
@@ -469,13 +443,9 @@ export type ContextFactory<TContext extends MachineContext, TActor extends Provi
469
443
  self: ActorRef<MachineSnapshot<TContext, TEvent, Record<string, AnyActorRef | undefined>, // TODO: this should be replaced with `TChildren`
470
444
  StateValue, string, unknown, TODO>, TEvent, AnyEventObject>;
471
445
  }) => TContext;
472
- export type MachineConfig<TContext extends MachineContext, TEvent extends EventObject, TActor extends ProvidedActor = ProvidedActor, TAction extends ParameterizedObject = ParameterizedObject, TGuard extends ParameterizedObject = ParameterizedObject, TDelay extends string = string, TTag extends string = string, TInput = any, TOutput = unknown, TEmitted extends EventObject = EventObject, TMeta extends MetaObject = MetaObject, TTypesMeta = TypegenDisabled> = (Omit<StateNodeConfig<DoNotInfer<TContext>, DoNotInfer<TEvent>, DoNotInfer<TActor>, DoNotInfer<TAction>, DoNotInfer<TGuard>, DoNotInfer<TDelay>, DoNotInfer<TTag>, DoNotInfer<TOutput>, DoNotInfer<TEmitted>, DoNotInfer<TMeta>>, 'output'> & {
473
- /**
474
- * The initial context (extended state)
475
- */
476
- /**
477
- * The machine's own version.
478
- */
446
+ export type MachineConfig<TContext extends MachineContext, TEvent extends EventObject, TActor extends ProvidedActor = ProvidedActor, TAction extends ParameterizedObject = ParameterizedObject, TGuard extends ParameterizedObject = ParameterizedObject, TDelay extends string = string, TTag extends string = string, TInput = any, TOutput = unknown, TEmitted extends EventObject = EventObject, TMeta extends MetaObject = MetaObject> = (Omit<StateNodeConfig<DoNotInfer<TContext>, DoNotInfer<TEvent>, DoNotInfer<TActor>, DoNotInfer<TAction>, DoNotInfer<TGuard>, DoNotInfer<TDelay>, DoNotInfer<TTag>, DoNotInfer<TOutput>, DoNotInfer<TEmitted>, DoNotInfer<TMeta>>, 'output'> & {
447
+ /** The initial context (extended state) */
448
+ /** The machine's own version. */
479
449
  version?: string;
480
450
  output?: Mapper<TContext, DoneStateEvent, TOutput, TEvent> | TOutput;
481
451
  }) & (MachineContext extends TContext ? {
@@ -499,12 +469,11 @@ export interface SetupTypes<TContext extends MachineContext, TEvent extends Even
499
469
  emitted?: TEmitted;
500
470
  meta?: TMeta;
501
471
  }
502
- export interface MachineTypes<TContext extends MachineContext, TEvent extends EventObject, TActor extends ProvidedActor, TAction extends ParameterizedObject, TGuard extends ParameterizedObject, TDelay extends string, TTag extends string, TInput, TOutput, TEmitted extends EventObject, TMeta extends MetaObject, TTypesMeta = TypegenDisabled> extends SetupTypes<TContext, TEvent, never, TTag, TInput, TOutput, TEmitted, TMeta> {
472
+ export interface MachineTypes<TContext extends MachineContext, TEvent extends EventObject, TActor extends ProvidedActor, TAction extends ParameterizedObject, TGuard extends ParameterizedObject, TDelay extends string, TTag extends string, TInput, TOutput, TEmitted extends EventObject, TMeta extends MetaObject> extends SetupTypes<TContext, TEvent, never, TTag, TInput, TOutput, TEmitted, TMeta> {
503
473
  actors?: TActor;
504
474
  actions?: TAction;
505
475
  guards?: TGuard;
506
476
  delays?: TDelay;
507
- typegen?: TTypesMeta;
508
477
  meta?: TMeta;
509
478
  }
510
479
  export interface HistoryStateNode<TContext extends MachineContext> extends StateNode<TContext> {
@@ -608,10 +577,12 @@ export interface StateConfig<TContext extends MachineContext, TEvent extends Eve
608
577
  }
609
578
  export interface ActorOptions<TLogic extends AnyActorLogic> {
610
579
  /**
611
- * The clock that is responsible for setting and clearing timeouts, such as delayed events and transitions.
580
+ * The clock that is responsible for setting and clearing timeouts, such as
581
+ * delayed events and transitions.
612
582
  *
613
583
  * @remarks
614
- * You can create your own “clock”. The clock interface is an object with two functions/methods:
584
+ * You can create your own “clock”. The clock interface is an object with two
585
+ * functions/methods:
615
586
  *
616
587
  * - `setTimeout` - same arguments as `window.setTimeout(fn, timeout)`
617
588
  * - `clearTimeout` - same arguments as `window.clearTimeout(id)`
@@ -619,65 +590,58 @@ export interface ActorOptions<TLogic extends AnyActorLogic> {
619
590
  * By default, the native `setTimeout` and `clearTimeout` functions are used.
620
591
  *
621
592
  * For testing, XState provides `SimulatedClock`.
622
- *
623
593
  * @see {@link Clock}
624
594
  * @see {@link SimulatedClock}
625
595
  */
626
596
  clock?: Clock;
627
597
  /**
628
- * Specifies the logger to be used for `log(...)` actions. Defaults to the native `console.log(...)` method.
598
+ * Specifies the logger to be used for `log(...)` actions. Defaults to the
599
+ * native `console.log(...)` method.
629
600
  */
630
601
  logger?: (...args: any[]) => void;
631
602
  parent?: AnyActorRef;
632
- /**
633
- * The custom `id` for referencing this service.
634
- */
603
+ /** The custom `id` for referencing this service. */
635
604
  id?: string;
636
- /**
637
- * @deprecated Use `inspect` instead.
638
- */
605
+ /** @deprecated Use `inspect` instead. */
639
606
  devTools?: never;
640
- /**
641
- * The system ID to register this actor under.
642
- */
607
+ /** The system ID to register this actor under. */
643
608
  systemId?: string;
644
- /**
645
- * The input data to pass to the actor.
646
- */
609
+ /** The input data to pass to the actor. */
647
610
  input?: InputFrom<TLogic>;
648
611
  /**
649
612
  * Initializes actor logic from a specific persisted internal state.
650
613
  *
651
614
  * @remarks
652
- *
653
- * If the state is compatible with the actor logic, when the actor is started it will be at that persisted state.
654
- * Actions from machine actors will not be re-executed, because they are assumed to have been already executed.
655
- * However, invocations will be restarted, and spawned actors will be restored recursively.
615
+ * If the state is compatible with the actor logic, when the actor is started
616
+ * it will be at that persisted state. Actions from machine actors will not be
617
+ * re-executed, because they are assumed to have been already executed.
618
+ * However, invocations will be restarted, and spawned actors will be restored
619
+ * recursively.
656
620
  *
657
621
  * Can be generated with {@link Actor.getPersistedSnapshot}.
658
- *
659
622
  * @see https://stately.ai/docs/persistence
660
623
  */
661
624
  snapshot?: Snapshot<unknown>;
662
- /**
663
- * @deprecated Use `snapshot` instead.
664
- */
625
+ /** @deprecated Use `snapshot` instead. */
665
626
  state?: Snapshot<unknown>;
666
- /**
667
- * The source actor logic.
668
- */
627
+ /** The source actor logic. */
669
628
  src?: string | AnyActorLogic;
670
629
  /**
671
- * A callback function or observer object which can be used to inspect actor system updates.
630
+ * A callback function or observer object which can be used to inspect actor
631
+ * system updates.
672
632
  *
673
633
  * @remarks
674
- * If a callback function is provided, it can accept an inspection event argument. The types of inspection events that can be observed include:
634
+ * If a callback function is provided, it can accept an inspection event
635
+ * argument. The types of inspection events that can be observed include:
675
636
  *
676
637
  * - `@xstate.actor` - An actor ref has been created in the system
677
- * - `@xstate.event` - An event was sent from a source actor ref to a target actor ref in the system
678
- * - `@xstate.snapshot` - An actor ref emitted a snapshot due to a received event
638
+ * - `@xstate.event` - An event was sent from a source actor ref to a target
639
+ * actor ref in the system
640
+ * - `@xstate.snapshot` - An actor ref emitted a snapshot due to a received
641
+ * event
679
642
  *
680
643
  * @example
644
+ *
681
645
  * ```ts
682
646
  * import { createMachine } from 'xstate';
683
647
  *
@@ -710,9 +674,11 @@ export interface ActorOptions<TLogic extends AnyActorLogic> {
710
674
  * });
711
675
  * ```
712
676
  *
713
- * Alternately, an observer object (`{ next?, error?, complete? }`) can be provided:
677
+ * Alternately, an observer object (`{ next?, error?, complete? }`) can be
678
+ * provided:
714
679
  *
715
680
  * @example
681
+ *
716
682
  * ```ts
717
683
  * const actor = createActor(machine, {
718
684
  * inspect: {
@@ -744,9 +710,7 @@ export interface ActorOptions<TLogic extends AnyActorLogic> {
744
710
  inspect?: Observer<InspectionEvent> | ((inspectionEvent: InspectionEvent) => void);
745
711
  }
746
712
  export type AnyActor = Actor<any>;
747
- /**
748
- * @deprecated Use `AnyActor` instead.
749
- */
713
+ /** @deprecated Use `AnyActor` instead. */
750
714
  export type AnyInterpreter = AnyActor;
751
715
  export type Observer<T> = {
752
716
  next?: (value: T) => void;
@@ -775,9 +739,7 @@ export interface ActorLike<TCurrent, TEvent extends EventObject> extends Subscri
775
739
  send: (event: TEvent) => void;
776
740
  }
777
741
  export interface ActorRef<TSnapshot extends Snapshot<unknown>, TEvent extends EventObject, TEmitted extends EventObject = EventObject> extends Subscribable<TSnapshot>, InteropObservable<TSnapshot> {
778
- /**
779
- * The unique identifier for this actor relative to its parent.
780
- */
742
+ /** The unique identifier for this actor relative to its parent. */
781
743
  id: string;
782
744
  sessionId: string;
783
745
  send: (event: TEvent) => void;
@@ -797,27 +759,11 @@ export type AnyActorRef = ActorRef<any, any, any>;
797
759
  export type UnknownActorRef = ActorRef<Snapshot<unknown>, EventObject>;
798
760
  export type ActorLogicFrom<T> = ReturnTypeOrValue<T> extends infer R ? R extends StateMachine<any, any, any, any, any, any, any, any, any, any, any, any, // TMeta
799
761
  any> ? R : R extends Promise<infer U> ? PromiseActorLogic<U> : never : never;
800
- export type ActorRefFrom<T> = ReturnTypeOrValue<T> extends infer R ? R extends StateMachine<infer TContext, infer TEvent, infer TChildren, infer _TActor, infer _TAction, infer _TGuard, infer _TDelay, infer TStateValue, infer TTag, infer _TInput, infer TOutput, infer TEmitted, infer TMeta, infer _TResolvedTypesMeta> ? ActorRef<MachineSnapshot<TContext, TEvent, TChildren, TStateValue, TTag, TOutput, TMeta>, TEvent, TEmitted> : R extends Promise<infer U> ? ActorRefFrom<PromiseActorLogic<U>> : R extends ActorLogic<infer TSnapshot, infer TEvent, infer _TInput, infer _TSystem, infer TEmitted> ? ActorRef<TSnapshot, TEvent, TEmitted> : never : never;
762
+ export type ActorRefFrom<T> = ReturnTypeOrValue<T> extends infer R ? R extends StateMachine<infer TContext, infer TEvent, infer TChildren, infer _TActor, infer _TAction, infer _TGuard, infer _TDelay, infer TStateValue, infer TTag, infer _TInput, infer TOutput, infer TEmitted, infer TMeta> ? ActorRef<MachineSnapshot<TContext, TEvent, TChildren, TStateValue, TTag, TOutput, TMeta>, TEvent, TEmitted> : R extends Promise<infer U> ? ActorRefFrom<PromiseActorLogic<U>> : R extends ActorLogic<infer TSnapshot, infer TEvent, infer _TInput, infer _TSystem, infer TEmitted> ? ActorRef<TSnapshot, TEvent, TEmitted> : never : never;
801
763
  export type DevToolsAdapter = (service: AnyActor) => void;
802
- /**
803
- * @deprecated Use `Actor<T>` instead.
804
- */
805
- export type InterpreterFrom<T extends AnyStateMachine | ((...args: any[]) => AnyStateMachine)> = ReturnTypeOrValue<T> extends StateMachine<infer TContext, infer TEvent, infer TChildren, infer _TActor, infer _TAction, infer _TGuard, infer _TDelay, infer TStateValue, infer TTag, infer TInput, infer TOutput, infer TEmitted, infer TMeta, infer _TResolvedTypesMeta> ? Actor<ActorLogic<MachineSnapshot<TContext, TEvent, TChildren, TStateValue, TTag, TOutput, TMeta>, TEvent, TInput, AnyActorSystem, TEmitted>> : never;
806
- export type MachineImplementationsFrom<T extends AnyStateMachine | ((...args: any[]) => AnyStateMachine), TRequireMissingImplementations extends boolean = false> = ReturnTypeOrValue<T> extends StateMachine<infer TContext, infer _TEvent, infer _TChildren, infer _TActor, infer _TAction, infer _TGuard, infer _TDelay, infer _TStateValue, infer _TTag, infer _TInput, infer _TOutput, infer _TEmitted, infer _TMeta, infer TResolvedTypesMeta> ? InternalMachineImplementations<TContext, TResolvedTypesMeta, TRequireMissingImplementations> : never;
807
- export type __ResolvedTypesMetaFrom<T> = T extends StateMachine<any, // context
808
- any, // event
809
- any, // children
810
- any, // actor
811
- any, // action
812
- any, // guard
813
- any, // delay
814
- any, // state value
815
- any, // tag
816
- any, // input
817
- any, // output
818
- any, // emitted
819
- any, // TMeta
820
- infer TResolvedTypesMeta> ? TResolvedTypesMeta : never;
764
+ /** @deprecated Use `Actor<T>` instead. */
765
+ export type InterpreterFrom<T extends AnyStateMachine | ((...args: any[]) => AnyStateMachine)> = ReturnTypeOrValue<T> extends StateMachine<infer TContext, infer TEvent, infer TChildren, infer _TActor, infer _TAction, infer _TGuard, infer _TDelay, infer TStateValue, infer TTag, infer TInput, infer TOutput, infer TEmitted, infer TMeta> ? Actor<ActorLogic<MachineSnapshot<TContext, TEvent, TChildren, TStateValue, TTag, TOutput, TMeta>, TEvent, TInput, AnyActorSystem, TEmitted>> : never;
766
+ export type MachineImplementationsFrom<T extends AnyStateMachine | ((...args: any[]) => AnyStateMachine)> = ReturnTypeOrValue<T> extends StateMachine<infer TContext, infer TEvent, infer _TChildren, infer TActor, infer TAction, infer TGuard, infer TDelay, infer _TStateValue, infer TTag, infer _TInput, infer _TOutput, infer TEmitted, infer _TMeta> ? InternalMachineImplementations<ResolvedStateMachineTypes<TContext, TEvent, TActor, TAction, TGuard, TDelay, TTag, TEmitted>> : never;
821
767
  export interface ActorScope<TSnapshot extends Snapshot<unknown>, TEvent extends EventObject, TSystem extends AnyActorSystem = AnyActorSystem, TEmitted extends EventObject = EventObject> {
822
768
  self: ActorRef<TSnapshot, TEvent, TEmitted>;
823
769
  id: string;
@@ -862,8 +808,9 @@ in TInput = NonReducibleUnknown, TSystem extends AnyActorSystem = AnyActorSystem
862
808
  /** The initial setup/configuration used to create the actor logic. */
863
809
  config?: unknown;
864
810
  /**
865
- * Transition function that processes the current state and an incoming message
866
- * to produce a new state.
811
+ * Transition function that processes the current state and an incoming
812
+ * message to produce a new state.
813
+ *
867
814
  * @param snapshot - The current state.
868
815
  * @param message - The incoming message.
869
816
  * @param actorScope - The actor scope.
@@ -872,14 +819,17 @@ in TInput = NonReducibleUnknown, TSystem extends AnyActorSystem = AnyActorSystem
872
819
  transition: (snapshot: TSnapshot, message: TEvent, actorScope: ActorScope<TSnapshot, TEvent, TSystem, TEmitted>) => TSnapshot;
873
820
  /**
874
821
  * Called to provide the initial state of the actor.
822
+ *
875
823
  * @param actorScope - The actor scope.
876
824
  * @param input - The input for the initial state.
877
825
  * @returns The initial state.
878
826
  */
879
827
  getInitialSnapshot: (actorScope: ActorScope<TSnapshot, TEvent, TSystem, TEmitted>, input: TInput) => TSnapshot;
880
828
  /**
881
- * Called when Actor is created to restore the internal state of the actor given a persisted state.
882
- * The persisted state can be created by `getPersistedSnapshot`.
829
+ * Called when Actor is created to restore the internal state of the actor
830
+ * given a persisted state. The persisted state can be created by
831
+ * `getPersistedSnapshot`.
832
+ *
883
833
  * @param persistedState - The persisted state to restore from.
884
834
  * @param actorScope - The actor scope.
885
835
  * @returns The restored state.
@@ -887,13 +837,15 @@ in TInput = NonReducibleUnknown, TSystem extends AnyActorSystem = AnyActorSystem
887
837
  restoreSnapshot?: (persistedState: Snapshot<unknown>, actorScope: ActorScope<TSnapshot, TEvent, AnyActorSystem, TEmitted>) => TSnapshot;
888
838
  /**
889
839
  * Called when the actor is started.
840
+ *
890
841
  * @param snapshot - The starting state.
891
842
  * @param actorScope - The actor scope.
892
843
  */
893
844
  start?: (snapshot: TSnapshot, actorScope: ActorScope<TSnapshot, TEvent, AnyActorSystem, TEmitted>) => void;
894
845
  /**
895
- * Obtains the internal state of the actor in a representation which can be be persisted.
896
- * The persisted state can be restored by `restoreSnapshot`.
846
+ * Obtains the internal state of the actor in a representation which can be be
847
+ * persisted. The persisted state can be restored by `restoreSnapshot`.
848
+ *
897
849
  * @param snapshot - The current state.
898
850
  * @returns The a representation of the internal state to be persisted.
899
851
  */
@@ -911,9 +863,9 @@ AnyActorSystem, any>;
911
863
  export type SnapshotFrom<T> = ReturnTypeOrValue<T> extends infer R ? R extends ActorRef<infer TSnapshot, infer _, infer __> ? TSnapshot : R extends Actor<infer TLogic> ? SnapshotFrom<TLogic> : R extends ActorLogic<infer _TSnapshot, infer _TEvent, infer _TInput, infer _TEmitted, infer _TSystem> ? ReturnType<R['transition']> : R extends ActorScope<infer TSnapshot, infer _TEvent, infer _TEmitted, infer _TSystem> ? TSnapshot : never : never;
912
864
  export type EventFromLogic<TLogic extends AnyActorLogic> = TLogic extends ActorLogic<infer _TSnapshot, infer TEvent, infer _TInput, infer _TEmitted, infer _TSystem> ? TEvent : never;
913
865
  export type EmittedFrom<TLogic extends AnyActorLogic> = TLogic extends ActorLogic<infer _TSnapshot, infer _TEvent, infer _TInput, infer _TSystem, infer TEmitted> ? TEmitted : never;
914
- type ResolveEventType<T> = ReturnTypeOrValue<T> extends infer R ? R extends StateMachine<infer _TContext, infer TEvent, infer _TChildren, infer _TActor, infer _TAction, infer _TGuard, infer _TDelay, infer _TStateValue, infer _TTag, infer _TInput, infer _TOutput, infer _TEmitted, infer _TMeta, infer _TResolvedTypesMeta> ? TEvent : R extends MachineSnapshot<infer _TContext, infer TEvent, infer _TChildren, infer _TStateValue, infer _TTag, infer _TOutput, infer _TMeta> ? TEvent : R extends ActorRef<infer _TSnapshot, infer TEvent, infer _TEmitted> ? TEvent : never : never;
866
+ type ResolveEventType<T> = ReturnTypeOrValue<T> extends infer R ? R extends StateMachine<infer _TContext, infer TEvent, infer _TChildren, infer _TActor, infer _TAction, infer _TGuard, infer _TDelay, infer _TStateValue, infer _TTag, infer _TInput, infer _TOutput, infer _TEmitted, infer _TMeta> ? TEvent : R extends MachineSnapshot<infer _TContext, infer TEvent, infer _TChildren, infer _TStateValue, infer _TTag, infer _TOutput, infer _TMeta> ? TEvent : R extends ActorRef<infer _TSnapshot, infer TEvent, infer _TEmitted> ? TEvent : never : never;
915
867
  export type EventFrom<T, K extends Prop<TEvent, 'type'> = never, TEvent extends EventObject = ResolveEventType<T>> = IsNever<K> extends true ? TEvent : ExtractEvent<TEvent, K>;
916
- export type ContextFrom<T> = ReturnTypeOrValue<T> extends infer R ? R extends StateMachine<infer TContext, infer _TEvent, infer _TChildren, infer _TActor, infer _TAction, infer _TGuard, infer _TDelay, infer _TStateValue, infer _TTag, infer _TInput, infer _TOutput, infer _TEmitted, infer _TMeta, infer _TResolvedTypesMeta> ? TContext : R extends MachineSnapshot<infer TContext, infer _TEvent, infer _TChildren, infer _TStateValue, infer _TTag, infer _TOutput, infer _TMeta> ? TContext : R extends Actor<infer TActorLogic> ? TActorLogic extends StateMachine<infer TContext, infer _TEvent, infer _TChildren, infer _TActor, infer _TAction, infer _TGuard, infer _TDelay, infer _TTag, infer _TInput, infer _TOutput, infer _TEmitted, infer _TMeta, infer _TResolvedTypesMeta> ? TContext : never : never : never;
868
+ export type ContextFrom<T> = ReturnTypeOrValue<T> extends infer R ? R extends StateMachine<infer TContext, infer _TEvent, infer _TChildren, infer _TActor, infer _TAction, infer _TGuard, infer _TDelay, infer _TStateValue, infer _TTag, infer _TInput, infer _TOutput, infer _TEmitted, infer _TMeta> ? TContext : R extends MachineSnapshot<infer TContext, infer _TEvent, infer _TChildren, infer _TStateValue, infer _TTag, infer _TOutput, infer _TMeta> ? TContext : R extends Actor<infer TActorLogic> ? TActorLogic extends StateMachine<infer TContext, infer _TEvent, infer _TChildren, infer _TActor, infer _TAction, infer _TGuard, infer _TDelay, infer _TTag, infer _TInput, infer _TOutput, infer _TEmitted, infer _TMeta, infer _TTypes> ? TContext : never : never : never;
917
869
  export type InferEvent<E extends EventObject> = {
918
870
  [T in E['type']]: {
919
871
  type: T;
@@ -941,4 +893,26 @@ export type ToChildren<TActor extends ProvidedActor> = string extends TActor['sr
941
893
  export type StateSchema = {
942
894
  states?: Record<string, StateSchema>;
943
895
  };
896
+ export interface StateMachineTypes {
897
+ context: MachineContext;
898
+ events: EventObject;
899
+ actors: ProvidedActor;
900
+ actions: ParameterizedObject;
901
+ guards: ParameterizedObject;
902
+ delays: string;
903
+ tags: string;
904
+ emitted: EventObject;
905
+ }
906
+ /** @deprecated */
907
+ export interface ResolvedStateMachineTypes<TContext extends MachineContext, TEvent extends EventObject, TActor extends ProvidedActor, TAction extends ParameterizedObject, TGuard extends ParameterizedObject, TDelay extends string, TTag extends string, TEmitted extends EventObject = EventObject> {
908
+ context: TContext;
909
+ events: TEvent;
910
+ actors: TActor;
911
+ actions: TAction;
912
+ guards: TGuard;
913
+ delays: TDelay;
914
+ tags: TTag;
915
+ emitted: TEmitted;
916
+ }
917
+ export type GetConcreteByKey<T, TKey extends keyof T, TValue extends T[TKey]> = T & Record<TKey, TValue>;
944
918
  export {};