xstate 5.0.0-beta.24 → 5.0.0-beta.26

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 (38) 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.map +1 -1
  6. package/actors/dist/xstate-actors.cjs.js +1 -1
  7. package/actors/dist/xstate-actors.development.cjs.js +1 -1
  8. package/actors/dist/xstate-actors.development.esm.js +1 -1
  9. package/actors/dist/xstate-actors.esm.js +1 -1
  10. package/actors/dist/xstate-actors.umd.min.js.map +1 -1
  11. package/dist/{actions-43f7d40e.development.cjs.js → actions-0971b43d.development.cjs.js} +4 -5
  12. package/dist/{actions-6a8cda73.cjs.js → actions-319cefe7.cjs.js} +4 -5
  13. package/dist/{actions-7b182232.esm.js → actions-5943a9db.esm.js} +4 -5
  14. package/dist/{actions-194e6dcc.development.esm.js → actions-cf69419d.development.esm.js} +4 -5
  15. package/dist/declarations/src/Machine.d.ts +2 -2
  16. package/dist/declarations/src/State.d.ts +9 -5
  17. package/dist/declarations/src/StateMachine.d.ts +20 -16
  18. package/dist/declarations/src/StateNode.d.ts +21 -5
  19. package/dist/declarations/src/actions/choose.d.ts +3 -1
  20. package/dist/declarations/src/actions/pure.d.ts +5 -3
  21. package/dist/declarations/src/actions/raise.d.ts +2 -1
  22. package/dist/declarations/src/actions/send.d.ts +11 -55
  23. package/dist/declarations/src/guards.d.ts +5 -2
  24. package/dist/declarations/src/stateUtils.d.ts +7 -6
  25. package/dist/declarations/src/typegenTypes.d.ts +12 -4
  26. package/dist/declarations/src/types.d.ts +103 -91
  27. package/dist/xstate.cjs.js +3 -1
  28. package/dist/xstate.development.cjs.js +3 -1
  29. package/dist/xstate.development.esm.js +4 -2
  30. package/dist/xstate.esm.js +4 -2
  31. package/dist/xstate.umd.min.js +1 -1
  32. package/dist/xstate.umd.min.js.map +1 -1
  33. package/guards/dist/xstate-guards.cjs.js +1 -1
  34. package/guards/dist/xstate-guards.development.cjs.js +1 -1
  35. package/guards/dist/xstate-guards.development.esm.js +1 -1
  36. package/guards/dist/xstate-guards.esm.js +1 -1
  37. package/guards/dist/xstate-guards.umd.min.js.map +1 -1
  38. package/package.json +1 -1
@@ -66,7 +66,7 @@ export type MachineContext = Record<string, any>;
66
66
  export interface ActionArgs<TContext extends MachineContext, TEvent extends EventObject, TAction extends ParameterizedObject | undefined> extends UnifiedArg<TContext, TEvent> {
67
67
  action: TAction;
68
68
  }
69
- export type InputFrom<T extends AnyActorLogic> = T extends StateMachine<infer _TContext, infer _TEvent, infer _TActor, infer _TAction, infer _TGuard, infer TInput, infer _TOutput, infer _TResolvedTypesMeta> ? TInput : T extends ActorLogic<infer _TEvent, infer _TSnapshot, infer _TInternalState, infer _TPersisted, infer _TSystem, infer TInput> ? TInput : never;
69
+ export type InputFrom<T extends AnyActorLogic> = T extends StateMachine<infer _TContext, infer _TEvent, infer _TActor, infer _TAction, infer _TGuard, infer _TDelay, infer _TTag, infer TInput, infer _TOutput, infer _TResolvedTypesMeta> ? TInput : T extends ActorLogic<infer _TEvent, infer _TSnapshot, infer _TInternalState, infer _TPersisted, infer _TSystem, infer TInput> ? TInput : never;
70
70
  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;
71
71
  export type Spawner = <T extends AnyActorLogic | string>(// TODO: read string from machine logic keys
72
72
  logic: T, options?: Partial<{
@@ -77,21 +77,23 @@ logic: T, options?: Partial<{
77
77
  export interface AssignArgs<TContext extends MachineContext, TExpressionEvent extends EventObject, TExpressionAction extends ParameterizedObject | undefined> extends ActionArgs<TContext, TExpressionEvent, TExpressionAction> {
78
78
  spawn: Spawner;
79
79
  }
80
- export type ActionFunction<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject, TExpressionAction extends ParameterizedObject | undefined, TAction extends ParameterizedObject> = {
80
+ export type ActionFunction<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject, TExpressionAction extends ParameterizedObject | undefined, TAction extends ParameterizedObject, TGuard extends ParameterizedObject, TDelay extends string> = {
81
81
  (args: ActionArgs<TContext, TExpressionEvent, TExpressionAction>): void;
82
82
  _out_TEvent?: TEvent;
83
83
  _out_TAction?: TAction;
84
+ _out_TGuard?: TGuard;
85
+ _out_TDelay?: TDelay;
84
86
  };
85
- export interface ChooseBranch<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject = TExpressionEvent, TAction extends ParameterizedObject = ParameterizedObject, TExpressionGuard extends ParameterizedObject | undefined = ParameterizedObject | undefined, TGuard extends ParameterizedObject = ParameterizedObject> {
86
- guard?: Guard<TContext, TExpressionEvent, TExpressionGuard, TGuard>;
87
- actions: Actions<TContext, TExpressionEvent, TEvent, undefined, TAction>;
87
+ export interface ChooseBranch<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject = TExpressionEvent, TAction extends ParameterizedObject = ParameterizedObject, TGuard extends ParameterizedObject = ParameterizedObject, TDelay extends string = string> {
88
+ guard?: Guard<TContext, TExpressionEvent, undefined, TGuard>;
89
+ actions: Actions<TContext, TExpressionEvent, TEvent, undefined, TAction, TGuard, TDelay>;
88
90
  }
89
91
  export type NoRequiredParams<T extends ParameterizedObject> = T extends any ? {
90
92
  type: T['type'];
91
93
  } extends T ? T['type'] : never : never;
92
- 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>;
93
- export type UnknownAction = Action<MachineContext, EventObject, EventObject, ParameterizedObject | undefined, ParameterizedObject>;
94
- 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>>;
94
+ export type Action<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject, TExpressionAction extends ParameterizedObject | undefined, TAction extends ParameterizedObject, TGuard extends ParameterizedObject, TDelay extends string> = NoRequiredParams<TAction> | TAction | ActionFunction<TContext, TExpressionEvent, TEvent, TExpressionAction, TAction, TGuard, TDelay>;
95
+ export type UnknownAction = Action<MachineContext, EventObject, EventObject, ParameterizedObject | undefined, ParameterizedObject, ParameterizedObject, string>;
96
+ export type Actions<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject, TExpressionAction extends ParameterizedObject | undefined, TAction extends ParameterizedObject, TGuard extends ParameterizedObject, TDelay extends string> = SingleOrArray<Action<TContext, TExpressionEvent, TEvent, TExpressionAction, TAction, TGuard, TDelay>>;
95
97
  export type StateKey = string | AnyState;
96
98
  export interface StateValueMap {
97
99
  [key: string]: StateValue;
@@ -104,23 +106,23 @@ export interface StateValueMap {
104
106
  */
105
107
  export type StateValue = string | StateValueMap;
106
108
  export type TransitionTarget = SingleOrArray<string>;
107
- export interface TransitionConfig<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject, TAction extends ParameterizedObject, TGuard extends ParameterizedObject> {
109
+ export interface TransitionConfig<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject, TAction extends ParameterizedObject, TGuard extends ParameterizedObject, TDelay extends string> {
108
110
  guard?: Guard<TContext, TExpressionEvent, undefined, TGuard>;
109
- actions?: Actions<TContext, TExpressionEvent, TEvent, undefined, TAction>;
111
+ actions?: Actions<TContext, TExpressionEvent, TEvent, undefined, TAction, TGuard, TDelay>;
110
112
  reenter?: boolean;
111
113
  target?: TransitionTarget | undefined;
112
114
  meta?: Record<string, any>;
113
115
  description?: string;
114
116
  }
115
- export interface InitialTransitionConfig<TContext extends MachineContext, TEvent extends EventObject, TAction extends ParameterizedObject, TGuard extends ParameterizedObject> extends TransitionConfig<TContext, TEvent, TEvent, TAction, TGuard> {
117
+ export interface InitialTransitionConfig<TContext extends MachineContext, TEvent extends EventObject, TAction extends ParameterizedObject, TGuard extends ParameterizedObject, TDelay extends string> extends TransitionConfig<TContext, TEvent, TEvent, TAction, TGuard, TDelay> {
116
118
  target: TransitionTarget;
117
119
  }
118
- export type AnyTransitionConfig = TransitionConfig<any, any, any, any, any>;
120
+ export type AnyTransitionConfig = TransitionConfig<any, any, any, any, any, any>;
119
121
  export interface InvokeMeta {
120
122
  src: string;
121
123
  meta: MetaObject | undefined;
122
124
  }
123
- export interface InvokeDefinition<TContext extends MachineContext, TEvent extends EventObject, TAction extends ParameterizedObject, TGuard extends ParameterizedObject> {
125
+ export interface InvokeDefinition<TContext extends MachineContext, TEvent extends EventObject, TAction extends ParameterizedObject, TGuard extends ParameterizedObject, TDelay extends string> {
124
126
  id: string;
125
127
  systemId: string | undefined;
126
128
  /**
@@ -131,43 +133,42 @@ export interface InvokeDefinition<TContext extends MachineContext, TEvent extend
131
133
  /**
132
134
  * The transition to take upon the invoked child machine reaching its final top-level state.
133
135
  */
134
- onDone?: string | SingleOrArray<TransitionConfig<TContext, DoneInvokeEvent<any>, DoneInvokeEvent<any>, TAction, TGuard>>;
136
+ onDone?: string | SingleOrArray<TransitionConfig<TContext, DoneInvokeEvent<any>, DoneInvokeEvent<any>, TAction, TGuard, TDelay>>;
135
137
  /**
136
138
  * The transition to take upon the invoked child machine sending an error event.
137
139
  */
138
- onError?: string | SingleOrArray<TransitionConfig<TContext, ErrorEvent<any>, ErrorEvent<any>, TAction, TGuard>>;
139
- onSnapshot?: string | SingleOrArray<TransitionConfig<TContext, SnapshotEvent<any>, SnapshotEvent<any>, TAction, TGuard>>;
140
- toJSON: () => Omit<InvokeDefinition<TContext, TEvent, TAction, TGuard>, 'onDone' | 'onError' | 'toJSON'>;
140
+ onError?: string | SingleOrArray<TransitionConfig<TContext, ErrorEvent<any>, ErrorEvent<any>, TAction, TGuard, TDelay>>;
141
+ onSnapshot?: string | SingleOrArray<TransitionConfig<TContext, SnapshotEvent<any>, SnapshotEvent<any>, TAction, TGuard, TDelay>>;
142
+ toJSON: () => Omit<InvokeDefinition<TContext, TEvent, TAction, TGuard, TDelay>, 'onDone' | 'onError' | 'toJSON'>;
141
143
  meta: MetaObject | undefined;
142
144
  }
143
- export interface Delay {
144
- id: string;
145
- /**
146
- * The time to delay the event, in milliseconds.
147
- */
148
- delay: number;
149
- }
150
- export type DelayedTransitions<TContext extends MachineContext, TEvent extends EventObject, TAction extends ParameterizedObject, TGuard extends ParameterizedObject> = Record<string | number, string | SingleOrArray<TransitionConfig<TContext, TEvent, TEvent, TAction, TGuard>>> | Array<TransitionConfig<TContext, TEvent, TEvent, TAction, TGuard> & {
151
- delay: number | string | ((args: UnifiedArg<TContext, TEvent>) => number);
145
+ type Delay<TDelay extends string> = TDelay | number;
146
+ export type DelayedTransitions<TContext extends MachineContext, TEvent extends EventObject, TAction extends ParameterizedObject, TGuard extends ParameterizedObject, TDelay extends string> = {
147
+ [K in Delay<TDelay>]?: string | SingleOrArray<TransitionConfig<TContext, TEvent, TEvent, TAction, TGuard, TDelay>>;
148
+ } | Array<TransitionConfig<TContext, TEvent, TEvent, TAction, TGuard, TDelay> & {
149
+ delay: Delay<TDelay> | ((args: UnifiedArg<TContext, TEvent>) => Delay<TDelay>);
152
150
  }>;
153
151
  export type StateTypes = 'atomic' | 'compound' | 'parallel' | 'final' | 'history' | string;
154
152
  export type SingleOrArray<T> = readonly T[] | T;
155
153
  export type StateNodesConfig<TContext extends MachineContext, TEvent extends EventObject> = {
156
154
  [K in string]: StateNode<TContext, TEvent>;
157
155
  };
158
- export type StatesConfig<TContext extends MachineContext, TEvent extends EventObject, TAction extends ParameterizedObject, TGuard extends ParameterizedObject, TActor extends ProvidedActor, TOutput> = {
159
- [K in string]: StateNodeConfig<TContext, TEvent, TAction, TGuard, TActor, TOutput>;
156
+ export type StatesConfig<TContext extends MachineContext, TEvent extends EventObject, TActor extends ProvidedActor, TAction extends ParameterizedObject, TGuard extends ParameterizedObject, TDelay extends string, TTag extends string, TOutput> = {
157
+ [K in string]: StateNodeConfig<TContext, TEvent, TActor, TAction, TGuard, TDelay, TTag, TOutput>;
160
158
  };
161
159
  export type StatesDefinition<TContext extends MachineContext, TEvent extends EventObject> = {
162
160
  [K in string]: StateNodeDefinition<TContext, TEvent>;
163
161
  };
164
162
  export type TransitionConfigTarget = string | undefined;
165
- export type TransitionConfigOrTarget<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject, TAction extends ParameterizedObject, TGuard extends ParameterizedObject> = SingleOrArray<TransitionConfigTarget | TransitionConfig<TContext, TExpressionEvent, TEvent, TAction, TGuard>>;
166
- export type TransitionsConfig<TContext extends MachineContext, TEvent extends EventObject, TAction extends ParameterizedObject, TGuard extends ParameterizedObject> = {
167
- [K in TEvent['type'] | '*']?: K extends '*' ? TransitionConfigOrTarget<TContext, TEvent, TEvent, TAction, TGuard> : TransitionConfigOrTarget<TContext, ExtractEvent<TEvent, K>, TEvent, TAction, TGuard>;
163
+ export type TransitionConfigOrTarget<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject, TAction extends ParameterizedObject, TGuard extends ParameterizedObject, TDelay extends string> = SingleOrArray<TransitionConfigTarget | TransitionConfig<TContext, TExpressionEvent, TEvent, TAction, TGuard, TDelay>>;
164
+ export type TransitionsConfig<TContext extends MachineContext, TEvent extends EventObject, TAction extends ParameterizedObject, TGuard extends ParameterizedObject, TDelay extends string> = {
165
+ [K in EventDescriptor<TEvent>]?: TransitionConfigOrTarget<TContext, ExtractEvent<TEvent, K>, TEvent, TAction, TGuard, TDelay>;
168
166
  };
167
+ type PartialEventDescriptor<TEventType extends string> = TEventType extends `${infer TLeading}.${infer TTail}` ? `${TLeading}.*` | `${TLeading}.${PartialEventDescriptor<TTail>}` : never;
168
+ export type EventDescriptor<TEvent extends EventObject> = TEvent['type'] | PartialEventDescriptor<TEvent['type']> | '*';
169
+ type NormalizeDescriptor<TDescriptor extends string> = TDescriptor extends '*' ? string : TDescriptor extends `${infer TLeading}.*` ? `${TLeading}.${string}` : TDescriptor;
169
170
  type IsLiteralString<T extends string> = string extends T ? false : true;
170
- type DistributeActors<TContext extends MachineContext, TEvent extends EventObject, TActor extends ProvidedActor, TAction extends ParameterizedObject, TGuard extends ParameterizedObject> = TActor extends {
171
+ type DistributeActors<TContext extends MachineContext, TEvent extends EventObject, TActor extends ProvidedActor, TAction extends ParameterizedObject, TGuard extends ParameterizedObject, TDelay extends string> = TActor extends {
171
172
  src: infer TSrc;
172
173
  } ? Compute<{
173
174
  systemId?: string;
@@ -179,12 +180,12 @@ type DistributeActors<TContext extends MachineContext, TEvent extends EventObjec
179
180
  /**
180
181
  * The transition to take upon the invoked child machine reaching its final top-level state.
181
182
  */
182
- onDone?: string | SingleOrArray<TransitionConfigOrTarget<TContext, DoneInvokeEvent<OutputFrom<TActor['logic']>>, TEvent, TAction, TGuard>>;
183
+ onDone?: string | SingleOrArray<TransitionConfigOrTarget<TContext, DoneInvokeEvent<OutputFrom<TActor['logic']>>, TEvent, TAction, TGuard, TDelay>>;
183
184
  /**
184
185
  * The transition to take upon the invoked child machine sending an error event.
185
186
  */
186
- onError?: string | SingleOrArray<TransitionConfigOrTarget<TContext, ErrorEvent<any>, TEvent, TAction, TGuard>>;
187
- onSnapshot?: string | SingleOrArray<TransitionConfigOrTarget<TContext, SnapshotEvent<any>, TEvent, TAction, TGuard>>;
187
+ onError?: string | SingleOrArray<TransitionConfigOrTarget<TContext, ErrorEvent<any>, TEvent, TAction, TGuard, TDelay>>;
188
+ onSnapshot?: string | SingleOrArray<TransitionConfigOrTarget<TContext, SnapshotEvent<any>, TEvent, TAction, TGuard, TDelay>>;
188
189
  /**
189
190
  * Meta data related to this invocation
190
191
  */
@@ -202,7 +203,7 @@ type DistributeActors<TContext extends MachineContext, TEvent extends EventObjec
202
203
  */
203
204
  id?: string;
204
205
  })> : never;
205
- export type InvokeConfig<TContext extends MachineContext, TEvent extends EventObject, TActor extends ProvidedActor, TAction extends ParameterizedObject, TGuard extends ParameterizedObject> = IsLiteralString<TActor['src']> extends true ? DistributeActors<TContext, TEvent, TActor, TAction, TGuard> : {
206
+ export type InvokeConfig<TContext extends MachineContext, TEvent extends EventObject, TActor extends ProvidedActor, TAction extends ParameterizedObject, TGuard extends ParameterizedObject, TDelay extends string> = IsLiteralString<TActor['src']> extends true ? DistributeActors<TContext, TEvent, TActor, TAction, TGuard, TDelay> : {
206
207
  /**
207
208
  * The unique identifier for the invoked machine. If not specified, this
208
209
  * will be the machine's own `id`, or the URL (from `src`).
@@ -217,23 +218,23 @@ export type InvokeConfig<TContext extends MachineContext, TEvent extends EventOb
217
218
  /**
218
219
  * The transition to take upon the invoked child machine reaching its final top-level state.
219
220
  */
220
- onDone?: string | SingleOrArray<TransitionConfigOrTarget<TContext, DoneInvokeEvent<any>, TEvent, TAction, TGuard>>;
221
+ onDone?: string | SingleOrArray<TransitionConfigOrTarget<TContext, DoneInvokeEvent<any>, TEvent, TAction, TGuard, TDelay>>;
221
222
  /**
222
223
  * The transition to take upon the invoked child machine sending an error event.
223
224
  */
224
- onError?: string | SingleOrArray<TransitionConfigOrTarget<TContext, ErrorEvent<any>, TEvent, TAction, TGuard>>;
225
- onSnapshot?: string | SingleOrArray<TransitionConfigOrTarget<TContext, SnapshotEvent<any>, TEvent, TAction, TGuard>>;
225
+ onError?: string | SingleOrArray<TransitionConfigOrTarget<TContext, ErrorEvent<any>, TEvent, TAction, TGuard, TDelay>>;
226
+ onSnapshot?: string | SingleOrArray<TransitionConfigOrTarget<TContext, SnapshotEvent<any>, TEvent, TAction, TGuard, TDelay>>;
226
227
  /**
227
228
  * Meta data related to this invocation
228
229
  */
229
230
  meta?: MetaObject;
230
231
  };
231
- export type AnyInvokeConfig = InvokeConfig<any, any, any, any, any>;
232
- export interface StateNodeConfig<TContext extends MachineContext, TEvent extends EventObject, TAction extends ParameterizedObject, TGuard extends ParameterizedObject, TActor extends ProvidedActor, TOutput> {
232
+ export type AnyInvokeConfig = InvokeConfig<any, any, any, any, any, any>;
233
+ 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> {
233
234
  /**
234
235
  * The initial state transition.
235
236
  */
236
- initial?: InitialTransitionConfig<TContext, TEvent, TAction, TGuard> | SingleOrArray<string> | undefined;
237
+ initial?: InitialTransitionConfig<TContext, TEvent, TAction, TGuard, TDelay> | SingleOrArray<string> | undefined;
237
238
  /**
238
239
  * The type of this state node:
239
240
  *
@@ -253,38 +254,38 @@ export interface StateNodeConfig<TContext extends MachineContext, TEvent extends
253
254
  /**
254
255
  * The mapping of state node keys to their state node configurations (recursive).
255
256
  */
256
- states?: StatesConfig<TContext, TEvent, TAction, TGuard, TActor, NonReducibleUnknown> | undefined;
257
+ states?: StatesConfig<TContext, TEvent, TActor, TAction, TGuard, TDelay, TTag, NonReducibleUnknown> | undefined;
257
258
  /**
258
259
  * The services to invoke upon entering this state node. These services will be stopped upon exiting this state node.
259
260
  */
260
- invoke?: SingleOrArray<TActor['src'] | InvokeConfig<TContext, TEvent, TActor, TAction, TGuard>>;
261
+ invoke?: SingleOrArray<TActor['src'] | InvokeConfig<TContext, TEvent, TActor, TAction, TGuard, TDelay>>;
261
262
  /**
262
263
  * The mapping of event types to their potential transition(s).
263
264
  */
264
- on?: TransitionsConfig<TContext, TEvent, TAction, TGuard>;
265
+ on?: TransitionsConfig<TContext, TEvent, TAction, TGuard, TDelay>;
265
266
  /**
266
267
  * The action(s) to be executed upon entering the state node.
267
268
  */
268
- entry?: Actions<TContext, TEvent, TEvent, undefined, TAction>;
269
+ entry?: Actions<TContext, TEvent, TEvent, undefined, TAction, TGuard, TDelay>;
269
270
  /**
270
271
  * The action(s) to be executed upon exiting the state node.
271
272
  */
272
- exit?: Actions<TContext, TEvent, TEvent, undefined, TAction>;
273
+ exit?: Actions<TContext, TEvent, TEvent, undefined, TAction, TGuard, TDelay>;
273
274
  /**
274
275
  * The potential transition(s) to be taken upon reaching a final child state node.
275
276
  *
276
277
  * This is equivalent to defining a `[done(id)]` transition on this state node's `on` property.
277
278
  */
278
- onDone?: string | SingleOrArray<TransitionConfig<TContext, DoneEventObject, DoneEventObject, TAction, TGuard>> | undefined;
279
+ onDone?: string | SingleOrArray<TransitionConfig<TContext, DoneEventObject, DoneEventObject, TAction, TGuard, TDelay>> | undefined;
279
280
  /**
280
281
  * The mapping (or array) of delays (in milliseconds) to their potential transition(s).
281
282
  * The delayed transitions are taken after the specified delay in an interpreter.
282
283
  */
283
- after?: DelayedTransitions<TContext, TEvent, TAction, TGuard>;
284
+ after?: DelayedTransitions<TContext, TEvent, TAction, TGuard, TDelay>;
284
285
  /**
285
286
  * An eventless transition that is always taken when this state node is active.
286
287
  */
287
- always?: TransitionConfigOrTarget<TContext, TEvent, TEvent, TAction, TGuard>;
288
+ always?: TransitionConfigOrTarget<TContext, TEvent, TEvent, TAction, TGuard, TDelay>;
288
289
  /**
289
290
  * @private
290
291
  */
@@ -312,7 +313,7 @@ export interface StateNodeConfig<TContext extends MachineContext, TEvent extends
312
313
  /**
313
314
  * The tags for this state node, which are accumulated into the `state.tags` property.
314
315
  */
315
- tags?: SingleOrArray<string>;
316
+ tags?: SingleOrArray<TTag>;
316
317
  /**
317
318
  * A text description of the state node
318
319
  */
@@ -322,7 +323,7 @@ export interface StateNodeConfig<TContext extends MachineContext, TEvent extends
322
323
  */
323
324
  target?: string;
324
325
  }
325
- export type AnyStateNodeConfig = StateNodeConfig<any, any, any, any, any, any>;
326
+ export type AnyStateNodeConfig = StateNodeConfig<any, any, any, any, any, any, any, any>;
326
327
  export interface StateNodeDefinition<TContext extends MachineContext, TEvent extends EventObject> {
327
328
  id: string;
328
329
  version?: string | undefined;
@@ -338,7 +339,7 @@ export interface StateNodeDefinition<TContext extends MachineContext, TEvent ext
338
339
  meta: any;
339
340
  order: number;
340
341
  output?: FinalStateNodeConfig<TContext, TEvent>['output'];
341
- invoke: Array<InvokeDefinition<TContext, TEvent, TODO, TODO>>;
342
+ invoke: Array<InvokeDefinition<TContext, TEvent, TODO, TODO, TODO>>;
342
343
  description?: string;
343
344
  tags: string[];
344
345
  }
@@ -346,10 +347,12 @@ export interface StateMachineDefinition<TContext extends MachineContext, TEvent
346
347
  }
347
348
  export type AnyStateNode = StateNode<any, any>;
348
349
  export type AnyStateNodeDefinition = StateNodeDefinition<any, any>;
349
- export type AnyState = State<any, any, any, any, any>;
350
- export type AnyStateMachine = StateMachine<any, any, any, any, any, any, any, any>;
350
+ export type AnyState = State<any, any, any, any, any, // delays
351
+ any>;
352
+ export type AnyStateMachine = StateMachine<any, any, any, any, any, any, any, any, any, // delays
353
+ any>;
351
354
  export type AnyStateConfig = StateConfig<any, AnyEventObject>;
352
- export interface AtomicStateNodeConfig<TContext extends MachineContext, TEvent extends EventObject> extends StateNodeConfig<TContext, TEvent, TODO, TODO, TODO, TODO> {
355
+ export interface AtomicStateNodeConfig<TContext extends MachineContext, TEvent extends EventObject> extends StateNodeConfig<TContext, TEvent, TODO, TODO, TODO, TODO, TODO, TODO> {
353
356
  initial?: undefined;
354
357
  parallel?: false | undefined;
355
358
  states?: undefined;
@@ -367,11 +370,11 @@ export interface FinalStateNodeConfig<TContext extends MachineContext, TEvent ex
367
370
  */
368
371
  output?: Mapper<TContext, TEvent, any>;
369
372
  }
370
- export type SimpleOrStateNodeConfig<TContext extends MachineContext, TEvent extends EventObject> = AtomicStateNodeConfig<TContext, TEvent> | StateNodeConfig<TContext, TEvent, TODO, TODO, TODO, TODO>;
371
- export type ActionFunctionMap<TContext extends MachineContext, TEvent extends EventObject, TAction extends ParameterizedObject = ParameterizedObject> = {
373
+ export type SimpleOrStateNodeConfig<TContext extends MachineContext, TEvent extends EventObject> = AtomicStateNodeConfig<TContext, TEvent> | StateNodeConfig<TContext, TEvent, TODO, TODO, TODO, TODO, TODO, TODO>;
374
+ export type ActionFunctionMap<TContext extends MachineContext, TEvent extends EventObject, TAction extends ParameterizedObject = ParameterizedObject, TGuard extends ParameterizedObject = ParameterizedObject, TDelay extends string = string> = {
372
375
  [K in TAction['type']]?: ActionFunction<TContext, TEvent, TEvent, TAction extends {
373
376
  type: K;
374
- } ? TAction : never, TAction>;
377
+ } ? TAction : never, TAction, TGuard, TDelay>;
375
378
  };
376
379
  type GuardMap<TContext extends MachineContext, TEvent extends EventObject, TGuard extends ParameterizedObject> = {
377
380
  [K in TGuard['type']]?: GuardPredicate<TContext, TEvent, TGuard extends {
@@ -390,8 +393,8 @@ export interface MachineImplementationsSimplified<TContext extends MachineContex
390
393
  delays: DelayFunctionMap<TContext, TEvent, TAction>;
391
394
  }
392
395
  type MaybeNarrowedEvent<TIndexedEvents, TCausingLookup, K> = Cast<Prop<TIndexedEvents, K extends keyof TCausingLookup ? TCausingLookup[K] : TIndexedEvents[keyof TIndexedEvents]>, EventObject>;
393
- type MachineImplementationsActions<TContext extends MachineContext, TResolvedTypesMeta, TEventsCausingActions = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'eventsCausingActions'>, TIndexedEvents = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'indexedEvents'>, TIndexedActions = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'indexedActions'>> = {
394
- [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>>;
396
+ type MachineImplementationsActions<TContext extends MachineContext, TResolvedTypesMeta, TEventsCausingActions = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'eventsCausingActions'>, TIndexedEvents = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'indexedEvents'>, TIndexedActions = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'indexedActions'>, TIndexedGuards = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'indexedGuards'>, TIndexedDelays = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'indexedDelays'>> = {
397
+ [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>, Cast<Prop<TIndexedGuards, keyof TIndexedGuards>, ParameterizedObject>, Cast<Prop<TIndexedDelays, keyof TIndexedDelays>, ParameterizedObject>['type']>;
395
398
  };
396
399
  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'>> = {
397
400
  [K in keyof TIndexedActors]?: Cast<Prop<TIndexedActors[K], 'logic'>, AnyActorLogic> | {
@@ -399,8 +402,8 @@ type MachineImplementationsActors<TContext extends MachineContext, TResolvedType
399
402
  input: Mapper<TContext, MaybeNarrowedEvent<TIndexedEvents, TEventsCausingActors, K>, InputFrom<Cast<Prop<TIndexedActors[K], 'logic'>, AnyActorLogic>>> | InputFrom<Cast<Prop<TIndexedActors[K], 'logic'>, AnyActorLogic>>;
400
403
  };
401
404
  };
402
- type MachineImplementationsDelays<TContext extends MachineContext, TResolvedTypesMeta, TEventsCausingDelays = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'eventsCausingDelays'>, TIndexedEvents = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'indexedEvents'>> = {
403
- [K in keyof TEventsCausingDelays]?: DelayConfig<TContext, Cast<Prop<TIndexedEvents, TEventsCausingDelays[K]>, EventObject>, ParameterizedObject | undefined>;
405
+ 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'>> = {
406
+ [K in keyof TIndexedDelays]?: DelayConfig<TContext, MaybeNarrowedEvent<TIndexedEvents, TEventsCausingDelays, K>, Cast<Prop<TIndexedActions, keyof TIndexedActions>, ParameterizedObject> | undefined>;
404
407
  };
405
408
  type MachineImplementationsGuards<TContext extends MachineContext, TResolvedTypesMeta, TEventsCausingGuards = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'eventsCausingGuards'>, TIndexedEvents = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'indexedEvents'>, TIndexedGuards = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'indexedGuards'>> = {
406
409
  [K in keyof TIndexedGuards]?: Guard<TContext, MaybeNarrowedEvent<TIndexedEvents, TEventsCausingGuards, K>, Cast<TIndexedGuards[K], ParameterizedObject>, Cast<Prop<TIndexedGuards, keyof TIndexedGuards>, ParameterizedObject>>;
@@ -423,17 +426,17 @@ type GenerateDelaysImplementationsPart<TContext extends MachineContext, TResolve
423
426
  type GenerateGuardsImplementationsPart<TContext extends MachineContext, TResolvedTypesMeta, TRequireMissingImplementations, TMissingImplementations> = Compute<MaybeMakeMissingImplementationsRequired<'guards', Prop<TMissingImplementations, 'guards'>, TRequireMissingImplementations> & {
424
427
  guards?: MachineImplementationsGuards<TContext, TResolvedTypesMeta>;
425
428
  }>;
426
- export type InternalMachineImplementations<TContext extends MachineContext, TEvent extends EventObject, TActor extends ProvidedActor, TAction extends ParameterizedObject, 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>>;
427
- export type MachineImplementations<TContext extends MachineContext, TEvent extends EventObject, TActor extends ProvidedActor = ProvidedActor, TAction extends ParameterizedObject = ParameterizedObject, TGuard extends ParameterizedObject = ParameterizedObject, TTypesMeta extends TypegenConstraint = TypegenDisabled> = InternalMachineImplementations<TContext, TEvent, TActor, TAction, ResolveTypegenMeta<TTypesMeta, TEvent, TActor, TAction, TGuard>>;
429
+ export type InternalMachineImplementations<TContext extends MachineContext, TEvent extends EventObject, TActor extends ProvidedActor, TAction extends ParameterizedObject, TDelay extends string, 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>>;
430
+ 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, TEvent, TActor, TAction, TDelay, ResolveTypegenMeta<TTypesMeta, TEvent, TActor, TAction, TGuard, TDelay, TTag>>;
428
431
  type InitialContext<TContext extends MachineContext, TInput> = TContext | ContextFactory<TContext, TInput>;
429
432
  export type ContextFactory<TContext extends MachineContext, TInput> = ({ spawn, input }: {
430
433
  spawn: Spawner;
431
434
  input: TInput;
432
435
  }) => TContext;
433
- type RootStateNodeConfig<TContext extends MachineContext, TEvent extends EventObject, TAction extends ParameterizedObject, TGuard extends ParameterizedObject, TActor extends ProvidedActor, TOutput> = Omit<StateNodeConfig<TContext, TEvent, TAction, TGuard, TActor, TOutput>, 'states'> & {
434
- states?: StatesConfig<TContext, TEvent, TAction, TGuard, TActor, TOutput> | undefined;
436
+ type RootStateNodeConfig<TContext extends MachineContext, TEvent extends EventObject, TActor extends ProvidedActor, TAction extends ParameterizedObject, TGuard extends ParameterizedObject, TDelay extends string, TTag extends string, TOutput> = Omit<StateNodeConfig<TContext, TEvent, TActor, TAction, TGuard, TDelay, TTag, TOutput>, 'states'> & {
437
+ states?: StatesConfig<TContext, TEvent, TActor, TAction, TGuard, TDelay, TTag, TOutput> | undefined;
435
438
  };
436
- export type MachineConfig<TContext extends MachineContext, TEvent extends EventObject, TAction extends ParameterizedObject = ParameterizedObject, TGuard extends ParameterizedObject = ParameterizedObject, TActor extends ProvidedActor = ProvidedActor, TInput = any, TOutput = unknown, TTypesMeta = TypegenDisabled> = (RootStateNodeConfig<NoInfer<TContext>, NoInfer<TEvent>, NoInfer<TAction>, NoInfer<TGuard>, NoInfer<TActor>, NoInfer<TOutput>> & {
439
+ 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, TTypesMeta = TypegenDisabled> = (RootStateNodeConfig<NoInfer<TContext>, NoInfer<TEvent>, NoInfer<TActor>, NoInfer<TAction>, NoInfer<TGuard>, NoInfer<TDelay>, NoInfer<TTag>, NoInfer<TOutput>> & {
437
440
  /**
438
441
  * The initial context (extended state)
439
442
  */
@@ -441,7 +444,7 @@ export type MachineConfig<TContext extends MachineContext, TEvent extends EventO
441
444
  * The machine's own version.
442
445
  */
443
446
  version?: string;
444
- types?: MachineTypes<TContext, TEvent, TAction, TGuard, TActor, TInput, TOutput, TTypesMeta>;
447
+ types?: MachineTypes<TContext, TEvent, TActor, TAction, TGuard, TDelay, TTag, TInput, TOutput, TTypesMeta>;
445
448
  }) & (Equals<TContext, MachineContext> extends true ? {
446
449
  context?: InitialContext<LowInfer<TContext>, TInput>;
447
450
  } : {
@@ -452,12 +455,14 @@ export interface ProvidedActor {
452
455
  logic: AnyActorLogic;
453
456
  id?: string;
454
457
  }
455
- export interface MachineTypes<TContext extends MachineContext, TEvent extends EventObject, TAction extends ParameterizedObject, TGuard extends ParameterizedObject, TActor extends ProvidedActor, TInput, TOutput, TTypesMeta = TypegenDisabled> {
458
+ 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, TTypesMeta = TypegenDisabled> {
456
459
  context?: TContext;
457
460
  events?: TEvent;
458
461
  actors?: TActor;
459
462
  actions?: TAction;
460
463
  guards?: TGuard;
464
+ delays?: TDelay;
465
+ tags?: TTag;
461
466
  input?: TInput;
462
467
  output?: TOutput;
463
468
  typegen?: TTypesMeta;
@@ -511,16 +516,16 @@ export declare enum SpecialTargets {
511
516
  Parent = "#_parent",
512
517
  Internal = "#_internal"
513
518
  }
514
- export interface SendToActionOptions<TContext extends MachineContext, TExpressionEvent extends EventObject, TExpressionAction extends ParameterizedObject | undefined> extends RaiseActionOptions<TContext, TExpressionEvent, TExpressionAction> {
519
+ export interface SendToActionOptions<TContext extends MachineContext, TExpressionEvent extends EventObject, TExpressionAction extends ParameterizedObject | undefined, TDelay extends string> extends RaiseActionOptions<TContext, TExpressionEvent, TExpressionAction, TDelay> {
515
520
  }
516
- export interface RaiseActionOptions<TContext extends MachineContext, TExpressionEvent extends EventObject, TExpressionAction extends ParameterizedObject | undefined> {
521
+ export interface RaiseActionOptions<TContext extends MachineContext, TExpressionEvent extends EventObject, TExpressionAction extends ParameterizedObject | undefined, TDelay extends string> {
517
522
  id?: string;
518
- delay?: number | string | DelayExpr<TContext, TExpressionEvent, TExpressionAction>;
523
+ delay?: Delay<TDelay> | DelayExpr<TContext, TExpressionEvent, TExpressionAction>;
519
524
  }
520
- export interface RaiseActionParams<TContext extends MachineContext, TExpressionEvent extends EventObject, TExpressionAction extends ParameterizedObject | undefined, TEvent extends EventObject> extends RaiseActionOptions<TContext, TExpressionEvent, TExpressionAction> {
525
+ export interface RaiseActionParams<TContext extends MachineContext, TExpressionEvent extends EventObject, TExpressionAction extends ParameterizedObject | undefined, TEvent extends EventObject, TDelay extends string> extends RaiseActionOptions<TContext, TExpressionEvent, TExpressionAction, TDelay> {
521
526
  event: TEvent | SendExpr<TContext, TExpressionEvent, TExpressionAction, TEvent>;
522
527
  }
523
- export interface SendToActionParams<TContext extends MachineContext, TExpressionEvent extends EventObject, TExpressionAction extends ParameterizedObject | undefined, TSentEvent extends EventObject> extends SendToActionOptions<TContext, TExpressionEvent, TExpressionAction> {
528
+ export interface SendToActionParams<TContext extends MachineContext, TExpressionEvent extends EventObject, TExpressionAction extends ParameterizedObject | undefined, TSentEvent extends EventObject, TDelay extends string> extends SendToActionOptions<TContext, TExpressionEvent, TExpressionAction, TDelay> {
524
529
  event: TSentEvent | SendExpr<TContext, TExpressionEvent, TExpressionAction, TSentEvent>;
525
530
  }
526
531
  export type Assigner<TContext extends MachineContext, TExpressionEvent extends EventObject, TExpressionAction extends ParameterizedObject | undefined> = (args: AssignArgs<TContext, TExpressionEvent, TExpressionAction>) => Partial<TContext>;
@@ -536,19 +541,19 @@ export type Mapper<TContext extends MachineContext, TEvent extends EventObject,
536
541
  export type PropertyMapper<TContext extends MachineContext, TEvent extends EventObject, TParams extends {}> = {
537
542
  [K in keyof TParams]?: Mapper<TContext, TEvent, TParams[K]> | TParams[K];
538
543
  };
539
- export interface TransitionDefinition<TContext extends MachineContext, TEvent extends EventObject> extends Omit<TransitionConfig<TContext, TEvent, TEvent, TODO, TODO>, 'target' | 'guard'> {
544
+ export interface TransitionDefinition<TContext extends MachineContext, TEvent extends EventObject> extends Omit<TransitionConfig<TContext, TEvent, TEvent, TODO, TODO, TODO>, 'target' | 'guard'> {
540
545
  target: ReadonlyArray<StateNode<TContext, TEvent>> | undefined;
541
546
  source: StateNode<TContext, TEvent>;
542
547
  actions: readonly UnknownAction[];
543
548
  reenter: boolean;
544
549
  guard?: UnknownGuard;
545
- eventType: TEvent['type'] | '*';
550
+ eventType: EventDescriptor<TEvent>;
546
551
  toJSON: () => {
547
552
  target: string[] | undefined;
548
553
  source: string;
549
554
  actions: readonly UnknownAction[];
550
555
  guard?: UnknownGuard;
551
- eventType: TEvent['type'] | '*';
556
+ eventType: EventDescriptor<TEvent>;
552
557
  meta?: Record<string, any>;
553
558
  };
554
559
  }
@@ -558,9 +563,7 @@ export interface InitialTransitionDefinition<TContext extends MachineContext, TE
558
563
  guard?: never;
559
564
  }
560
565
  export type TransitionDefinitionMap<TContext extends MachineContext, TEvent extends EventObject> = {
561
- [K in TEvent['type'] | '*']: Array<TransitionDefinition<TContext, K extends TEvent['type'] ? Extract<TEvent, {
562
- type: K;
563
- }> : EventObject>>;
566
+ [K in EventDescriptor<TEvent>]: Array<TransitionDefinition<TContext, ExtractEvent<TEvent, K>>>;
564
567
  };
565
568
  export interface DelayedTransitionDefinition<TContext extends MachineContext, TEvent extends EventObject> extends TransitionDefinition<TContext, TEvent> {
566
569
  delay: number | string | DelayExpr<TContext, TEvent, undefined>;
@@ -581,7 +584,7 @@ export interface StateConfig<TContext extends MachineContext, TEvent extends Eve
581
584
  output?: any;
582
585
  error?: unknown;
583
586
  tags?: Set<string>;
584
- machine?: StateMachine<TContext, TEvent, any, any, any, any, any, any>;
587
+ machine?: StateMachine<TContext, TEvent, any, any, any, any, any, any, any>;
585
588
  _internalQueue?: Array<TEvent>;
586
589
  }
587
590
  export interface ActorOptions<TLogic extends AnyActorLogic> {
@@ -648,7 +651,7 @@ export interface Subscribable<T> extends InteropSubscribable<T> {
648
651
  subscribe(observer: Observer<T>): Subscription;
649
652
  subscribe(next: (value: T) => void, error?: (error: any) => void, complete?: () => void): Subscription;
650
653
  }
651
- export type ExtractEvent<TEvent extends EventObject, TEventType extends TEvent['type']> = TEvent extends any ? TEventType extends TEvent['type'] ? TEvent : never : never;
654
+ export type ExtractEvent<TEvent extends EventObject, TDescriptor extends EventDescriptor<TEvent>> = string extends TEvent['type'] ? TEvent : NormalizeDescriptor<TDescriptor> extends infer TNormalizedDescriptor ? TEvent extends any ? TEvent['type'] extends TNormalizedDescriptor ? TEvent : never : never : never;
652
655
  export interface BaseActorRef<TEvent extends EventObject> {
653
656
  send: (event: TEvent) => void;
654
657
  }
@@ -673,15 +676,24 @@ export interface ActorRef<TEvent extends EventObject, TSnapshot = any> extends S
673
676
  src?: string;
674
677
  }
675
678
  export type AnyActorRef = ActorRef<any, any>;
676
- export type ActorLogicFrom<T> = ReturnTypeOrValue<T> extends infer R ? R extends StateMachine<any, any, any, any, any, any, any, any> ? R : R extends Promise<infer U> ? PromiseActorLogic<U> : never : never;
677
- export type ActorRefFrom<T> = ReturnTypeOrValue<T> extends infer R ? R extends StateMachine<infer TContext, infer TEvent, infer TActor, infer _TAction, infer _TGuard, 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;
679
+ export type ActorLogicFrom<T> = ReturnTypeOrValue<T> extends infer R ? R extends StateMachine<any, any, any, any, any, any, any, any, any> ? R : R extends Promise<infer U> ? PromiseActorLogic<U> : never : never;
680
+ export type ActorRefFrom<T> = ReturnTypeOrValue<T> extends infer R ? R extends StateMachine<infer TContext, infer TEvent, infer TActor, infer _TAction, infer _TGuard, infer _TDelay, infer TTag, infer _TInput, infer TOutput, infer TResolvedTypesMeta> ? ActorRef<TEvent, State<TContext, TEvent, TActor, TTag, 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;
678
681
  export type DevToolsAdapter = (service: AnyActor) => void;
679
682
  /**
680
683
  * @deprecated Use `Actor<T>` instead.
681
684
  */
682
- export type InterpreterFrom<T extends AnyStateMachine | ((...args: any[]) => AnyStateMachine)> = ReturnTypeOrValue<T> extends StateMachine<infer TContext, infer TEvent, infer TActor, infer _TAction, infer _TGuard, 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;
683
- export type MachineImplementationsFrom<T extends AnyStateMachine | ((...args: any[]) => AnyStateMachine), TRequireMissingImplementations extends boolean = false> = ReturnTypeOrValue<T> extends StateMachine<infer TContext, infer TEvent, infer TActor, infer TAction, infer _TGuard, infer _TInput, infer _TOutput, infer TResolvedTypesMeta> ? InternalMachineImplementations<TContext, TEvent, TActor, TAction, TResolvedTypesMeta, TRequireMissingImplementations> : never;
684
- export type __ResolvedTypesMetaFrom<T> = T extends StateMachine<any, any, any, any, any, any, any, infer TResolvedTypesMeta> ? TResolvedTypesMeta : never;
685
+ export type InterpreterFrom<T extends AnyStateMachine | ((...args: any[]) => AnyStateMachine)> = ReturnTypeOrValue<T> extends StateMachine<infer TContext, infer TEvent, infer TActor, infer _TAction, infer _TGuard, infer _TDelay, infer TTag, infer TInput, infer TOutput, infer TResolvedTypesMeta> ? Actor<ActorLogic<TEvent, State<TContext, TEvent, TActor, TTag, TOutput, TResolvedTypesMeta>, State<TContext, TEvent, TActor, TTag, TOutput, TResolvedTypesMeta>, PersistedMachineState<State<TContext, TEvent, TActor, TTag, TOutput, TResolvedTypesMeta>>, ActorSystem<any>, TInput>> : never;
686
+ export type MachineImplementationsFrom<T extends AnyStateMachine | ((...args: any[]) => AnyStateMachine), TRequireMissingImplementations extends boolean = false> = ReturnTypeOrValue<T> extends StateMachine<infer TContext, infer TEvent, infer TActor, infer TAction, infer _TGuard, infer TDelay, infer _TTag, infer _TInput, infer _TOutput, infer TResolvedTypesMeta> ? InternalMachineImplementations<TContext, TEvent, TActor, TAction, TDelay, TResolvedTypesMeta, TRequireMissingImplementations> : never;
687
+ export type __ResolvedTypesMetaFrom<T> = T extends StateMachine<any, // context
688
+ any, // event
689
+ any, // actor
690
+ any, // action
691
+ any, // guard
692
+ any, // delay
693
+ any, // tag
694
+ any, // input
695
+ any, // output
696
+ infer TResolvedTypesMeta> ? TResolvedTypesMeta : never;
685
697
  export interface ActorContext<TEvent extends EventObject, TSnapshot, TSystem extends ActorSystem<any> = ActorSystem<any>> {
686
698
  self: ActorRef<TEvent, TSnapshot>;
687
699
  id: string;
@@ -720,13 +732,13 @@ any, // persisted state
720
732
  any, // system
721
733
  any, // input
722
734
  any>;
723
- 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 _______, infer ________> ? StateFrom<R> : R extends ActorLogic<infer _, infer TSnapshot, infer __, infer ___, infer ____> ? TSnapshot : R extends ActorContext<infer _, infer TSnapshot, infer __> ? TSnapshot : never : never;
735
+ 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 _TContext, infer _TEvent, infer _TActor, infer _TAction, infer _TGuard, infer _TDelay, infer _TTag, infer _TInput, infer _TOutput, infer _TResolvedTypesMeta> ? StateFrom<R> : R extends ActorLogic<infer _, infer TSnapshot, infer __, infer ___, infer ____> ? TSnapshot : R extends ActorContext<infer _, infer TSnapshot, infer __> ? TSnapshot : never : never;
724
736
  export type EventFromLogic<TLogic extends ActorLogic<any, any>> = TLogic extends ActorLogic<infer TEvent, infer _, infer __, infer ___, infer ____> ? TEvent : never;
725
737
  export type PersistedStateFrom<TLogic extends ActorLogic<any, any>> = TLogic extends ActorLogic<infer _TEvent, infer _TSnapshot, infer _TInternalState, infer TPersisted> ? TPersisted : never;
726
738
  export type InternalStateFrom<TLogic extends ActorLogic<any, any>> = TLogic extends ActorLogic<infer _TEvent, infer _TSnapshot, infer TInternalState, infer _TPersisted> ? TInternalState : never;
727
- type ResolveEventType<T> = ReturnTypeOrValue<T> extends infer R ? R extends StateMachine<infer _TContext, infer TEvent, infer _TActor, infer _TAction, infer _TGuard, 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;
739
+ type ResolveEventType<T> = ReturnTypeOrValue<T> extends infer R ? R extends StateMachine<infer _TContext, infer TEvent, infer _TActor, infer _TAction, infer _TGuard, infer _TDelay, infer _TTag, 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;
728
740
  export type EventFrom<T, K extends Prop<TEvent, 'type'> = never, TEvent extends EventObject = ResolveEventType<T>> = IsNever<K> extends true ? TEvent : ExtractEvent<TEvent, K>;
729
- export type ContextFrom<T> = ReturnTypeOrValue<T> extends infer R ? R extends StateMachine<infer TContext, infer _, 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 _TActor, infer _TAction, infer _TGuard, infer _TInput, infer _TOutput, infer _TTypesMeta> ? TContext : never : never : never;
741
+ export type ContextFrom<T> = ReturnTypeOrValue<T> extends infer R ? R extends StateMachine<infer TContext, infer _TEvent, infer _TActor, infer _TAction, infer _TGuard, infer _TDelay, infer _TTag, infer _TInput, infer _TOutput, infer _TTypesMeta> ? 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 _TActor, infer _TAction, infer _TGuard, infer _TDelay, infer _TTag, infer _TInput, infer _TOutput, infer _TTypesMeta> ? TContext : never : never : never;
730
742
  export type InferEvent<E extends EventObject> = {
731
743
  [T in E['type']]: {
732
744
  type: T;
@@ -2,7 +2,7 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var actors_dist_xstateActors = require('./actions-6a8cda73.cjs.js');
5
+ var actors_dist_xstateActors = require('./actions-319cefe7.cjs.js');
6
6
  require('../dev/dist/xstate-dev.cjs.js');
7
7
 
8
8
  const EMPTY_OBJECT = {};
@@ -366,6 +366,8 @@ class StateMachine {
366
366
  this.__TActor = void 0;
367
367
  this.__TAction = void 0;
368
368
  this.__TGuard = void 0;
369
+ this.__TDelay = void 0;
370
+ this.__TTag = void 0;
369
371
  this.__TInput = void 0;
370
372
  this.__TOutput = void 0;
371
373
  this.__TResolvedTypesMeta = void 0;
@@ -2,7 +2,7 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var actors_dist_xstateActors = require('./actions-43f7d40e.development.cjs.js');
5
+ var actors_dist_xstateActors = require('./actions-0971b43d.development.cjs.js');
6
6
  require('../dev/dist/xstate-dev.development.cjs.js');
7
7
 
8
8
  const EMPTY_OBJECT = {};
@@ -366,6 +366,8 @@ class StateMachine {
366
366
  this.__TActor = void 0;
367
367
  this.__TAction = void 0;
368
368
  this.__TGuard = void 0;
369
+ this.__TDelay = void 0;
370
+ this.__TTag = void 0;
369
371
  this.__TInput = void 0;
370
372
  this.__TOutput = void 0;
371
373
  this.__TResolvedTypesMeta = void 0;
@@ -1,5 +1,5 @@
1
- import { S as STATE_DELIMITER, m as mapValues, t as toArray, f as formatTransitions, a as toTransitionConfigArray, b as formatTransition, N as NULL_EVENT, c as memo, e as evaluateGuard, d as flatten, g as createInvokeId, h as getDelayedTransitions, i as formatInitialTransition, j as getCandidates, k as toInvokeConfig, l as getConfiguration, n as getStateNodes, r as resolveStateValue, o as isInFinalState, p as State, q as isErrorEvent, s as cloneState, u as macrostep, v as transitionNode, w as getInitialConfiguration, x as resolveActionsAndContext, y as assign, z as createInitEvent, A as microstep, B as isAtomicStateNode, C as isStateId, D as getStateNodeByPath, E as getPersistedState, F as resolveReferencedActor, G as createActor, H as matchesState } from './actions-194e6dcc.development.esm.js';
2
- export { M as Actor, O as ActorStatus, a7 as ConstantPrefix, P as InterpreterStatus, a8 as SpecialTargets, p as State, a5 as and, y as assign, R as cancel, T as choose, G as createActor, Q as doneInvoke, K as forwardTo, a0 as fromCallback, a1 as fromEventObservable, $ as fromObservable, _ as fromPromise, a2 as fromTransition, n as getStateNodes, L as interpret, U as log, H as matchesState, a4 as not, a6 as or, Y as pathToStateValue, V as pure, W as raise, J as sendParent, I as sendTo, a3 as stateIn, X as stop, Z as toObserver } from './actions-194e6dcc.development.esm.js';
1
+ import { S as STATE_DELIMITER, m as mapValues, t as toArray, f as formatTransitions, a as toTransitionConfigArray, b as formatTransition, N as NULL_EVENT, c as memo, e as evaluateGuard, d as flatten, g as createInvokeId, h as getDelayedTransitions, i as formatInitialTransition, j as getCandidates, k as toInvokeConfig, l as getConfiguration, n as getStateNodes, r as resolveStateValue, o as isInFinalState, p as State, q as isErrorEvent, s as cloneState, u as macrostep, v as transitionNode, w as getInitialConfiguration, x as resolveActionsAndContext, y as assign, z as createInitEvent, A as microstep, B as isAtomicStateNode, C as isStateId, D as getStateNodeByPath, E as getPersistedState, F as resolveReferencedActor, G as createActor, H as matchesState } from './actions-cf69419d.development.esm.js';
2
+ export { M as Actor, O as ActorStatus, a7 as ConstantPrefix, P as InterpreterStatus, a8 as SpecialTargets, p as State, a5 as and, y as assign, R as cancel, T as choose, G as createActor, Q as doneInvoke, K as forwardTo, a0 as fromCallback, a1 as fromEventObservable, $ as fromObservable, _ as fromPromise, a2 as fromTransition, n as getStateNodes, L as interpret, U as log, H as matchesState, a4 as not, a6 as or, Y as pathToStateValue, V as pure, W as raise, J as sendParent, I as sendTo, a3 as stateIn, X as stop, Z as toObserver } from './actions-cf69419d.development.esm.js';
3
3
  import '../dev/dist/xstate-dev.development.esm.js';
4
4
 
5
5
  const EMPTY_OBJECT = {};
@@ -363,6 +363,8 @@ class StateMachine {
363
363
  this.__TActor = void 0;
364
364
  this.__TAction = void 0;
365
365
  this.__TGuard = void 0;
366
+ this.__TDelay = void 0;
367
+ this.__TTag = void 0;
366
368
  this.__TInput = void 0;
367
369
  this.__TOutput = void 0;
368
370
  this.__TResolvedTypesMeta = void 0;
@@ -1,5 +1,5 @@
1
- import { S as STATE_DELIMITER, m as mapValues, t as toArray, f as formatTransitions, a as toTransitionConfigArray, b as formatTransition, N as NULL_EVENT, c as memo, e as evaluateGuard, d as flatten, g as createInvokeId, h as getDelayedTransitions, i as formatInitialTransition, j as getCandidates, k as toInvokeConfig, l as getConfiguration, n as getStateNodes, r as resolveStateValue, o as isInFinalState, p as State, q as isErrorEvent, s as cloneState, u as macrostep, v as transitionNode, w as getInitialConfiguration, x as resolveActionsAndContext, y as assign, z as createInitEvent, A as microstep, B as isAtomicStateNode, C as isStateId, D as getStateNodeByPath, E as getPersistedState, F as resolveReferencedActor, G as createActor, H as matchesState } from './actions-7b182232.esm.js';
2
- export { M as Actor, O as ActorStatus, a7 as ConstantPrefix, P as InterpreterStatus, a8 as SpecialTargets, p as State, a5 as and, y as assign, R as cancel, T as choose, G as createActor, Q as doneInvoke, K as forwardTo, a0 as fromCallback, a1 as fromEventObservable, $ as fromObservable, _ as fromPromise, a2 as fromTransition, n as getStateNodes, L as interpret, U as log, H as matchesState, a4 as not, a6 as or, Y as pathToStateValue, V as pure, W as raise, J as sendParent, I as sendTo, a3 as stateIn, X as stop, Z as toObserver } from './actions-7b182232.esm.js';
1
+ import { S as STATE_DELIMITER, m as mapValues, t as toArray, f as formatTransitions, a as toTransitionConfigArray, b as formatTransition, N as NULL_EVENT, c as memo, e as evaluateGuard, d as flatten, g as createInvokeId, h as getDelayedTransitions, i as formatInitialTransition, j as getCandidates, k as toInvokeConfig, l as getConfiguration, n as getStateNodes, r as resolveStateValue, o as isInFinalState, p as State, q as isErrorEvent, s as cloneState, u as macrostep, v as transitionNode, w as getInitialConfiguration, x as resolveActionsAndContext, y as assign, z as createInitEvent, A as microstep, B as isAtomicStateNode, C as isStateId, D as getStateNodeByPath, E as getPersistedState, F as resolveReferencedActor, G as createActor, H as matchesState } from './actions-5943a9db.esm.js';
2
+ export { M as Actor, O as ActorStatus, a7 as ConstantPrefix, P as InterpreterStatus, a8 as SpecialTargets, p as State, a5 as and, y as assign, R as cancel, T as choose, G as createActor, Q as doneInvoke, K as forwardTo, a0 as fromCallback, a1 as fromEventObservable, $ as fromObservable, _ as fromPromise, a2 as fromTransition, n as getStateNodes, L as interpret, U as log, H as matchesState, a4 as not, a6 as or, Y as pathToStateValue, V as pure, W as raise, J as sendParent, I as sendTo, a3 as stateIn, X as stop, Z as toObserver } from './actions-5943a9db.esm.js';
3
3
  import '../dev/dist/xstate-dev.esm.js';
4
4
 
5
5
  const EMPTY_OBJECT = {};
@@ -363,6 +363,8 @@ class StateMachine {
363
363
  this.__TActor = void 0;
364
364
  this.__TAction = void 0;
365
365
  this.__TGuard = void 0;
366
+ this.__TDelay = void 0;
367
+ this.__TTag = void 0;
366
368
  this.__TInput = void 0;
367
369
  this.__TOutput = void 0;
368
370
  this.__TResolvedTypesMeta = void 0;