import { type SqlFragment } from "../db/sql.js"; export declare class StateMachineError extends Error { readonly code: "unknown_state" | "invalid_transition" | "invalid_definition"; readonly machineId: string; readonly details: Record; constructor(code: StateMachineError["code"], machineId: string, message: string, details?: Record); } export interface Machine { readonly id: string; readonly states: readonly S[]; readonly events: readonly E[]; readonly initial: S; isState(value: unknown): value is S; parseState(value: unknown): S; can(from: S, event: E): boolean; transition(from: S, event: E): S; fromStates(event: E): readonly S[]; sqlStateList(event: E): string; isTerminal(state: S): boolean; shortestPaths(): ReadonlyMap; } export interface SqlMachine extends Machine { sqlIn(event: E): SqlFragment; } export declare function defineMachine(def: { id: string; states: readonly S[]; initial: NoInfer; terminal: readonly NoInfer[]; transitions: { readonly [K in E]: { readonly from: readonly NoInfer[]; readonly to: NoInfer; }; }; }): SqlMachine; export { renderMachineTrace } from "./trace.js";