import { type WorkItem } from './store.js'; import type { ApprovalDecision } from './approvals.js'; /** * The raw write on an approval ROW: state, stamps, picked option, and the one * `approval_decided` event — nothing about the Todo's status, and nothing that * notifies. Its own module beside `approval-rows.ts` (the raw read) because two * callers need exactly this and no more: `approvals.ts` composes it into the * native consequence rules, and the Workflow surface settles a gate its run * already decided. Routing a settle through the notifying door instead would * wake the mirror-back listener and re-decide the gate it came from. */ export declare class ApprovalChoiceError extends Error { constructor(message: string); } /** Thrown when a decision lands on an item whose approval is no longer `pending` * (a double-decide, or a decide-after-resolve race) — surfaced as `no-pending`. * It is the in-transaction guard that makes the native decision atomic: raised * inside the decision transaction, it rolls the whole thing back. */ export declare class ApprovalNotPendingError extends Error { constructor(id: string); } /** * Record a human decision on an item's pending approval (raw write): set the * `approved`/`rejected` state + the decided-by/at stamps and append ONE * `approval_decided` event. Status is NOT touched here — `decideWorkItemApproval` * applies the fixed consequence rules. Throws on an unknown item. */ export declare function decideApproval(id: string, decision: ApprovalDecision, decidedBy: string, note?: string, choice?: string): WorkItem; //# sourceMappingURL=approval-decision-row.d.ts.map