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
}
}