yay-machine
Version:
A modern, simple, lightweight, zero-dependency, TypeScript state-machine library
22 lines • 1.13 kB
TypeScript
import type { MachineEvent } from "./MachineEvent";
import type { MachineInstance, MachineInstanceConfig } from "./MachineInstance";
import type { MachineState } from "./MachineState";
export interface MachineInstanceProvider<StateType extends MachineState, EventType extends MachineEvent> {
/**
* Create a new machine instance
* @param config optional configuration for the new machine instance
* @returns a new machine instance
*/
newInstance(config?: MachineInstanceConfig<StateType>): MachineInstance<StateType, EventType>;
}
/**
* The result of calling `defineMachine`.
* A factory for creating new machine instances.
*/
export interface MachineDefinition<StateType extends MachineState, EventType extends MachineEvent> extends MachineInstanceProvider<StateType, EventType> {
}
/**
* Infer type of MachineInstance for a machine definition
*/
export type MachineInstanceOf<Definition extends MachineDefinition<any, any>> = Definition extends MachineDefinition<infer StateType, infer EventType> ? MachineInstance<StateType, EventType> : never;
//# sourceMappingURL=MachineDefinition.d.ts.map