import { type DeferredForegroundTransfer } from "./deferred-foreground-transfer.js"; import type { Conversation } from "./protocol.js"; import type { DeferredForegroundApplicationScope, DeferredForegroundBindingBoundary } from "./deferred-foreground-boundary.js"; import type { TerminalNativeIdentity } from "./terminal-binding-authority.js"; interface AcceptedTurn { conversation: Conversation; identity: TerminalNativeIdentity; } export interface DeferredForegroundRecoveryPorts { transaction: { writerScope(): DeferredForegroundApplicationScope; withTransferScope(transfer: DeferredForegroundTransfer, operation: (scope: DeferredForegroundApplicationScope) => Promise): Promise; }; repository: { all(scope: DeferredForegroundApplicationScope): DeferredForegroundTransfer[]; matching(scope: DeferredForegroundApplicationScope): DeferredForegroundTransfer[]; load(scope: DeferredForegroundApplicationScope, transferId: string): DeferredForegroundTransfer; markUncertain(scope: DeferredForegroundApplicationScope, boundary: DeferredForegroundBindingBoundary, reason: string): DeferredForegroundTransfer; }; recovery: { boundary(transfer: DeferredForegroundTransfer): DeferredForegroundBindingBoundary; assertRoute(scope: DeferredForegroundApplicationScope, transfer: DeferredForegroundTransfer, boundary: DeferredForegroundBindingBoundary): void; finalizeAbort(scope: DeferredForegroundApplicationScope, transfer: DeferredForegroundTransfer): void; persistCommitted(scope: DeferredForegroundApplicationScope, transfer: DeferredForegroundTransfer): Promise; crashAfterCommittedBackfill(): void; resolveCommitted(scope: DeferredForegroundApplicationScope, boundary: DeferredForegroundBindingBoundary): Promise; assertAcceptedTurn(accepted: AcceptedTurn): void; abortPrepared(scope: DeferredForegroundApplicationScope, transfer: DeferredForegroundTransfer, boundary: DeferredForegroundBindingBoundary, terminalInputNotStartedAt?: string): void; durableInputNotStartedAt(scope: DeferredForegroundApplicationScope, transfer: DeferredForegroundTransfer): string | undefined; recoverAccepted(scope: DeferredForegroundApplicationScope, transfer: DeferredForegroundTransfer, boundary: DeferredForegroundBindingBoundary): Promise; pendingAnchorVersion(scope: DeferredForegroundApplicationScope, transfer: DeferredForegroundTransfer): number; }; runtime: { terminalTarget: string; isStoreMutationLockTimeout(error: unknown): boolean; }; } /** * Recovery ordering for one canonical terminal -> writer invocation. * Terminal/Store/Turn paths, raw locks, ledgers, bridge observations, and CLI * presentation remain behind the supplied ports. */ export declare class DeferredForegroundRecoveryService { #private; constructor(ports: DeferredForegroundRecoveryPorts); recover(): Promise; } export {};