import type { FileLockAcquisitionOptions } from "./file-lock-cli-adapter.js"; import { type CanonicalMutationResources, type CanonicalMutationScopes, type CanonicalStateMutationResources, type CanonicalStateMutationScopes } from "./mutation-transaction.js"; import type { TerminalControlRef } from "./terminal-agent-adapter.js"; export interface TerminalMutationCliRuntimePorts { acquireFileLock(lockPath: string, options?: FileLockAcquisitionOptions): () => void; acquireTerminalBridgeSendLock(storeDir: string, terminalControl: TerminalControlRef, options?: FileLockAcquisitionOptions): () => void; terminalBridgeRuntimeKey(terminalControl: TerminalControlRef): string; withStoreWriterLeaseAsync(storeDir: string, operation: () => Promise, options?: Readonly<{ timeoutMs?: number; }>): Promise; } export type TerminalWriterMutationLockOptions = FileLockAcquisitionOptions & Readonly<{ terminalTimeoutMs?: number; storeWriterTimeoutMs?: number; afterTerminalAcquired?: () => void | Promise; }>; export declare function createTerminalMutationCliRuntime(ports: TerminalMutationCliRuntimePorts): Readonly<{ terminalWriterMutationLocks: (storeDir: string, terminalControl: TerminalControlRef, options?: TerminalWriterMutationLockOptions) => { resources: { terminal: Readonly<{ key: string; value: TerminalControlRef; }>; storeWriter: Readonly<{ key: string; value: string; }>; }; acquireTerminal: () => () => void; afterTerminalAcquired?: (() => void | Promise) | undefined; withStoreWriter: (operation: () => Promise) => Promise; }; terminalWriterStateMutationLocks: (storeDir: string, terminalControl: TerminalControlRef, statePath: string, logPath: string) => { acquireTerminal: () => () => void; afterTerminalAcquired?: (() => void | Promise) | undefined; withStoreWriter: (operation: () => Promise) => Promise; resources: { terminal: Readonly<{ key: string; value: TerminalControlRef; }>; storeWriter: Readonly<{ key: string; value: string; }>; state: Readonly<{ key: string; value: import("./terminal-dispatch-capability.js").TerminalDispatchStateResource; }>; }; acquireState: () => () => void; }; withTerminalDispatchStateScope: (scopes: CanonicalMutationScopes, resources: CanonicalMutationResources, statePath: string, logPath: string, operation: (scopes: CanonicalStateMutationScopes, resources: CanonicalStateMutationResources) => Promise, options?: FileLockAcquisitionOptions) => Promise; }>;