import { type AltEditorLiteError } from '../alt-editor-lite-error.js'; import type { AltEditorLiteLanguage } from '../alt-editor-lite-language.js'; import type { AfterSuccessContext, ClientSideOperations, EditOperationContext, EditorOperations, EditorErrorHookContext } from '../alt-editor-lite-options.js'; import type { EditorOperationTarget } from '../editor-operation.js'; import type { EditPresentationAdapter } from './edit-presentation-adapter.js'; import type { EditCommitResult, EditTransaction } from './edit-transaction.js'; import type { OperationOwner, OwnedOperationRequest } from './operation-owner.js'; import type { MaybePromise } from '../../fields/field-value.js'; /** Terminal result returned to dialog and inline presentation callers. */ export type EditOperationResult = { readonly status: 'success'; readonly result: Readonly>; } | { readonly status: 'validation-failed'; readonly error: AltEditorLiteError; } | { readonly status: 'vetoed'; } | { readonly status: 'aborted'; } | { readonly status: 'failed'; readonly error: AltEditorLiteError; }; /** Presentation and lifecycle callbacks for one shared Edit run. */ export interface EditOperationRunArguments { readonly mode: 'dialog' | 'inline'; readonly original: Readonly; readonly target: Readonly; readonly presentation: EditPresentationAdapter; readonly revalidateTarget: (signal: AbortSignal) => MaybePromise; readonly commit: (row: TRow, request: OwnedOperationRequest<'edit'>) => Promise>>; readonly dispatchSubmit: (transaction: Readonly>) => void; readonly dispatchSuccess: (transaction: Readonly>, result: Readonly>) => void; readonly beforeSubmit?: (transaction: Readonly>, context: EditOperationContext) => Promise; readonly afterSuccess?: (context: AfterSuccessContext) => Promise; readonly reportError: (error: AltEditorLiteError, context: EditorErrorHookContext, publishEvent: boolean) => void; } /** Shared non-optimistic Edit persistence and commit runner. */ export declare class EditOperationRunner { private readonly operationOwner; private readonly language; private readonly operations; private readonly clientSide; constructor(operationOwner: OperationOwner, language: Readonly, operations: Readonly> | undefined, clientSide: Readonly> | undefined); /** Runs validation, persistence, commit, events, and hooks in a fixed order. */ run(runArguments: EditOperationRunArguments): Promise>; private updateRow; private normalize; }