import { type ManagedSessionState } from "./managed-session.js"; import { type Conversation } from "./protocol.js"; import type { TerminalDispatchLedgerDocument } from "./terminal-dispatch-ledger-codec.js"; export interface TerminalScopedCodexApprovalPromptSnapshot { fingerprint: string; keys: string[]; requestId: string | null; digest: string; } export type TerminalScopedCodexApprovalAuthorityKind = "current_dispatch_owner" | "managed_session_no_dispatch_owner"; export interface TerminalScopedCodexApprovalBoundary { authority: { kind: TerminalScopedCodexApprovalAuthorityKind; }; approval: TerminalScopedCodexApprovalPromptSnapshot; token: string; } interface NativeRollout { fd: string; device: string; inode: string; path: string; } interface TerminalNativeIdentity { sessionId: string; processUuid: string; processBirth: string; rollout?: NativeRollout; } interface ApprovalAuthorityChecks { relatedBoundSessionIds(): readonly string[]; blockingTurnIds(): readonly string[]; hasNativeTransition(): boolean; hasDeferredRecovery(): boolean; ledgerMatchesTerminal(): boolean; } interface ApprovalRequestBase { storeDir: string; terminal: unknown; session: ManagedSessionState; approval?: TerminalScopedCodexApprovalPromptSnapshot; } export type TerminalScopedCodexApprovalAuthorityRequest = (ApprovalRequestBase & { kind: "current_dispatch_owner"; owner: Conversation; ledger: TerminalDispatchLedgerDocument; checks: ApprovalAuthorityChecks & { assertDispatchOwner(): void; ownerMatchesNativeIdentity(identity: TerminalNativeIdentity | undefined): boolean; }; }) | (ApprovalRequestBase & { kind: "managed_session_no_dispatch_owner"; ledger?: TerminalDispatchLedgerDocument; checks: ApprovalAuthorityChecks & { dispatchOwnershipIsNone(): boolean; hasOrphanedDispatch(): boolean; }; }); export declare function terminalScopedCodexApprovalPromptSnapshot(approvalState: unknown): TerminalScopedCodexApprovalPromptSnapshot | undefined; /** One fresh decision; lazy checks retain fail-closed I/O/error precedence. */ export declare function decideTerminalScopedCodexApprovalAuthority(request: TerminalScopedCodexApprovalAuthorityRequest): TerminalScopedCodexApprovalBoundary; export {};