import type * as Exit from "../../Exit.js" import type * as Journal from "./journal.js" import * as OpCodes from "./opCodes/tryCommit.js" /** @internal */ export type TryCommit = Done | Suspend /** @internal */ export interface Done { readonly _tag: OpCodes.OP_DONE readonly exit: Exit.Exit } /** @internal */ export interface Suspend { readonly _tag: OpCodes.OP_SUSPEND readonly journal: Journal.Journal } /** @internal */ export const done = (exit: Exit.Exit): TryCommit => { return { _tag: OpCodes.OP_DONE, exit } } /** @internal */ export const suspend = (journal: Journal.Journal): TryCommit => { return { _tag: OpCodes.OP_SUSPEND, journal } }