import { type MachineDefinition } from "./MachineDefinition.js"; import type { AnyEventObject, EventObject, MachineConfig, MachineContext, MachineImplementations } from "./types/index.js"; /** * Creates a machine definition from an XState v5 config. * * Stately's extractor matches call expressions by the callee name * `createMachine` only, so import with an alias when that flow matters: * `import { unstable_createMachine as createMachine }`. Keep the config inline * or in a variable of the same file, never behind `satisfies`. * * Validates strictly (throws `MachineConfigError`) and only then deep-freezes * `config` in place — except the initial `context` object, which stays mutable * and is shared by every instance exactly like in XState (`assign` never * mutates it; use a `context` factory for per-instance objects). A rejected * config is left untouched, so it can be fixed in place and retried. Unknown * action/guard/delay *names* are checked later, by `new Statechart()`, so that * `definition.provide()` can supply them. */ export declare function unstable_createMachine(config: MachineConfig, implementations?: MachineImplementations): MachineDefinition;