/** * The store rows this engine reads and writes, as plain functions: paging a * collection to the end, parsing a row into its type, and the two-line * primitives (`clone`, `id`, `message`) every door leans on. * * Lifted out of engine.ts unchanged. */ import { type AutomationRecord, type StoreOps, type VendoRecord } from "@vendoai/core"; import type { RunRecord, RunStatus } from "./index.js"; import { type InternalRunRecord } from "./types.js"; /** Every engine-owned generic row belongs to ONE automation, and the 02-store §5 * erase cascade collects generic rows by their refs — so a row written without * this outlives the record forever. That is not only clutter: the delivery * ledger has no other lifecycle at all. */ export declare const automationRef: (automationId: string) => Record; export declare const clone: (value: T) => T; export declare const id: (prefix: string) => string; export declare const message: (error: unknown) => string; /** The seven verbs this engine reaches Vendo's own drawers through. Named once * here because every module holds one and none of them holds a store. */ export type EngineOps = StoreOps["engine"]; export declare const allRecords: (engine: EngineOps, collection: string, query?: { refs?: Record; ids?: string[]; }) => Promise; export declare const parseAutomation: (record: VendoRecord) => AutomationRecord; /** The run the row carries. The wrapper columns beside it (`automationId`, * `status`, `startedAt`) are validated by the same parse and then never read: * they are the store's own projection of the record, and the record is the run. */ export declare const parseRunRecord: (record: VendoRecord) => InternalRunRecord; export declare const publicRun: ({ __event: _, __lineage: __, __record: ___, ...record }: InternalRunRecord) => RunRecord; export declare const terminalStatus: (status: RunStatus) => status is Extract; export declare const syncRun: (target: InternalRunRecord, source: InternalRunRecord) => void; //# sourceMappingURL=rows.d.ts.map