/**
 * State I/O primitives: `read_state`, `write_state`, `append_log`.
 *
 * Per `docs/opensquid-real-design.md` §"Phase 1 — Runtime skeleton" (state
 * surface). These three primitives are the only filesystem-touching
 * primitives in the Phase 1 runtime — skills compose them into rule
 * processes via YAML.
 *
 * Atomicity contract:
 *   - `write_state` uses tmp-file + rename (atomic on POSIX, near-atomic on
 *     Windows — rename over an open target fails there; documented risk).
 *   - `append_log` serializes concurrent writers via `proper-lockfile`
 *     (5 s stale timeout — minimum allowed by the lib). The file is
 *     touched before locking because `proper-lockfile` requires the
 *     target to exist.
 *
 * Error model: ENOENT on read returns `ok(null)` (canonical "no state"
 * signal — the original anti-drift `read_state` pattern).
 * Every other failure travels as `err({ kind: 'runtime', ... })`. Throws
 * never escape an `execute` — the evaluator's stray-throw wrapper is for
 * bugs, not for normal failure modes.
 *
 * Imports from: zod, node:fs/promises, node:path, proper-lockfile,
 *   ../runtime/paths.js, ./registry.js, ../runtime/result.js.
 * Imported by: src/functions/index.ts (registry wiring).
 */
import type { FunctionRegistry } from './registry.js';
export declare function registerStateFunctions(registry: FunctionRegistry): void;
//# sourceMappingURL=state.d.ts.map