import type { TerminalNativeIdentityFence, TerminalThreadLifecycleOperation, TerminalThreadLifecyclePlan } from "./terminal-agent-adapter.js"; import type { TerminalNativeIdentity } from "./terminal-binding-authority.js"; import { type ManagedSessionState, type ManagedTerminalBinding, type NativeThreadTransition } from "./managed-session.js"; import type { CanonicalMutationResources, CanonicalMutationScopes } from "./mutation-transaction.js"; import type { NativeThreadLifecycleLedgerPhase } from "./terminal-dispatch-ledger-codec.js"; export type NativeThreadVerificationRequest = Readonly<{ operation: TerminalThreadLifecycleOperation; plan: TerminalThreadLifecyclePlan; beforeIdentity?: TerminalNativeIdentity; physicalBeforeIdentity?: TerminalNativeIdentity; allowedCompanionIdentity?: TerminalNativeIdentityFence; allowedAdditionalIdentities?: readonly TerminalNativeIdentityFence[]; initialScreenDigest?: string; }>; type ScopeArgs = [CanonicalMutationScopes, CanonicalMutationResources]; type Scoped = (...args: [...ScopeArgs, ...Args]) => Result; export type NativeThreadSettlementPresentation = Readonly<{ status: "committed"; transition: NativeThreadTransition; identity: TerminalNativeIdentity; binding: ManagedTerminalBinding; committedTarget: ManagedSessionState; }> | Readonly<{ status: "verified_recovery_required" | "uncertain"; transitionId: string; reason: string; }>; type SettlementPersistencePorts = Readonly<{ saveLedger: Scoped<[ transition: NativeThreadTransition, phase: NativeThreadLifecycleLedgerPhase, expectation: Readonly<{ expectedTransitionId: string | null; expectedStatus?: "prepared" | "dispatching" | "submitted"; }> ], void>; loadTransition: Scoped<[string], NativeThreadTransition>; saveTransition: Scoped<[ NativeThreadTransition, Readonly<{ expectedRevision: number | null; }> ], NativeThreadTransition>; saveSession: Scoped<[ ManagedSessionState, Readonly<{ expectedRevision: number | null; }> ], ManagedSessionState>; commitVerified: Scoped<[ NativeThreadTransition, string ], ManagedSessionState>; }>; type SettlementEffectsPorts = Readonly<{ finalizeIdentity: (observed: TerminalNativeIdentity, transition: NativeThreadTransition, verifiedAt: Date) => Readonly<{ identity: TerminalNativeIdentity; binding: ManagedTerminalBinding; }>; assertTargetOwnership: Scoped<[NativeThreadTransition], Promise>; targetConflictWorkspace: () => string; }>; type SettlementRuntimePorts = Readonly<{ now: () => Date; crashAfterVerified: () => void; injectTargetConflict: () => boolean; errorProvesInputNotStarted: (error: unknown) => boolean; summarizeError: (message: string) => Readonly<{ length: number; preview?: string; }>; }>; export type NativeThreadTransitionSettlementPorts = Readonly<{ persistence: SettlementPersistencePorts; effects: SettlementEffectsPorts; runtime: SettlementRuntimePorts; verification: Scoped<[ NativeThreadVerificationRequest ], Promise>; present: (result: NativeThreadSettlementPresentation) => void; }>; export type NativeThreadSettlementRequest = Readonly<{ transition: NativeThreadTransition; verification: NativeThreadVerificationRequest; }>; export declare function settleVerifiedNativeThreadTransition(request: NativeThreadSettlementRequest, scopes: CanonicalMutationScopes, resources: CanonicalMutationResources, ports: NativeThreadTransitionSettlementPorts): Promise; export type NativeThreadSettlementFailureRequest = Readonly<{ transitionId: string; inputStarted: boolean; sourceBefore?: ManagedSessionState; sourceTransitioning?: ManagedSessionState; }>; export declare function settleFailedNativeThreadTransition(request: NativeThreadSettlementFailureRequest, error: unknown, scopes: CanonicalMutationScopes, resources: CanonicalMutationResources, ports: NativeThreadTransitionSettlementPorts): Promise; export {};