INIT
CI / build (push) Has been skipped
CI / deploy (push) Successful in 1m11s

This commit is contained in:
eewing
2026-02-18 15:17:47 -06:00
parent e74c106f85
commit ec317eb17c
11532 changed files with 1631690 additions and 1 deletions
+16
View File
@@ -0,0 +1,16 @@
import { type WritableBox } from "svelte-toolbelt";
interface Machine<S> {
[k: string]: {
[k: string]: S;
};
}
type MachineState<T> = keyof T;
type MachineEvent<T> = keyof UnionToIntersection<T[keyof T]>;
type UnionToIntersection<T> = (T extends any ? (x: T) => any : never) extends (x: infer R) => any ? R : never;
export declare class StateMachine<M> {
#private;
readonly state: WritableBox<MachineState<M>>;
constructor(initialState: MachineState<M>, machine: M & Machine<MachineState<M>>);
dispatch(event: MachineEvent<M>): void;
}
export {};