import { type FileLockCliAdapter, type FileLockAcquisitionOptions } from "./file-lock-cli-adapter.js"; import type { TerminalControlRef } from "./terminal-agent-adapter.js"; import { type TerminalDispatchLedgerDocument } from "./terminal-dispatch-ledger-codec.js"; export interface TerminalDispatchResolveRequest { conversation: Readonly<{ conversation_id: string; }>; expectedMessageId?: string; reason: string; } export interface TerminalDispatchRepositoryCliAdapter { acquire(storeDir: string, terminalControl: TerminalControlRef, options?: FileLockAcquisitionOptions): () => void; runtimeDir(): string; runtimeKey(terminalControl: TerminalControlRef): string; load(terminalControl: TerminalControlRef): TerminalDispatchLedgerDocument | undefined; save(terminalControl: TerminalControlRef, ledger: TerminalDispatchLedgerDocument): void; restore(input: { terminalControl: TerminalControlRef; previousLedger?: TerminalDispatchLedgerDocument; reason: string; }): void; resolve(terminalControl: TerminalControlRef, request: TerminalDispatchResolveRequest): boolean; reconcileIncarnation(terminalControl: TerminalControlRef, ledger?: TerminalDispatchLedgerDocument): TerminalDispatchLedgerDocument | undefined; matchesControl(ledger: TerminalDispatchLedgerDocument | undefined, terminalControl: TerminalControlRef, options?: { requireCurrentRoute?: boolean; requireProcessAnchor?: boolean; }): boolean; processAnchor(ledger: TerminalDispatchLedgerDocument): number | undefined; } /** * Own the raw filesystem, lock-path, and byte-level persistence boundary for * ordinary terminal dispatch ledgers. Product recovery policy stays outside * this adapter. */ export declare function createTerminalDispatchRepositoryCliAdapter(dependencies?: Readonly<{ fileLock?: FileLockCliAdapter; }>): TerminalDispatchRepositoryCliAdapter;