UNPKG

@zedux/machines

Version:

Simple native state machine implementation for Zedux atoms

25 lines (24 loc) 1.44 kB
import { RecursivePartial, Settable, Store } from '@zedux/atoms'; import { MachineStateShape } from './types.js'; /** * An extremely low-level Store class that represents a state machine. Don't * create this class yourself, use a helper such as @zedux/machine's * `injectMachineStore()` */ export declare class MachineStore<StateNames extends string = string, EventNames extends string = string, Context extends Record<string, any> | undefined = undefined> extends Store<MachineStateShape<StateNames, Context>> { readonly states: Record<StateNames, Record<EventNames, { name: StateNames; guard?: (context: Context) => boolean; }>>; private readonly guard?; constructor(initialState: StateNames, states: Record<StateNames, Record<EventNames, { name: StateNames; guard?: (context: Context) => boolean; }>>, initialContext?: Context, guard?: ((currentState: MachineStateShape<StateNames, Context>, nextValue: StateNames) => boolean) | undefined); getContext: () => Context; getValue: () => StateNames; is: (stateName: StateNames) => boolean; send: (eventName: EventNames, meta?: any) => MachineStateShape<StateNames, Context>; setContext: (context: Settable<Context>, meta?: any) => MachineStateShape<StateNames, Context>; setContextDeep: (partialContext: Settable<RecursivePartial<Context>, Context>, meta?: any) => MachineStateShape<StateNames, Context>; }