import type { DeferredForegroundTransfer } from "./deferred-foreground-transfer.js"; import type { ManagedSessionState } from "./managed-session.js"; import { type Conversation } from "./protocol.js"; import type { TerminalControlRef } from "./terminal-control-ref.js"; import { type TerminalListOwnershipService } from "./terminal-list-ownership-service.js"; export interface TerminalListProjectionPorts { approvalTtlMs: number; callbackRetryDisposition(delivery: unknown): { state: string; }; isVerifiedDeadTerminalAgentProcess(conversation: Conversation | Record): boolean; listDeferredForegroundTransfers(storeDir: string): DeferredForegroundTransfer[]; nowMs(): number; ownershipService: TerminalListOwnershipService; summarizeConversation(conversation: Conversation): Record; terminalBridgeEnabled(conversation: Conversation | Record): boolean; terminalBridgeSubmission(conversation: Conversation | Record | undefined): { status?: string; message_id?: unknown; last_proven_stage?: unknown; } | undefined; terminalControlFromTakeover(value: unknown): TerminalControlRef | undefined; } export interface TerminalFirstListProjectionRequest { storeDir: string; terminals: Record[]; managedSessions: ManagedSessionState[]; sessionAuthorityRequired: boolean; allConversations: Conversation[]; displayedConversations: Conversation[]; includeAll: boolean; managedOnly: boolean; statusFilter?: string; mutationsAllowed: boolean; } export interface TerminalFirstListProjection { terminals: Record[]; unavailableManagedTurns: Record[]; } export interface ManagedTurnListEntryOptions { terminalBridge?: boolean; approvalState?: Record; conversation?: Record; } export interface TerminalListProjectionService { managedTurnListEntry(task: Record, options?: ManagedTurnListEntryOptions): Record; projectTerminalFirstList(request: TerminalFirstListProjectionRequest): TerminalFirstListProjection; } export declare function createTerminalListProjectionService(ports: TerminalListProjectionPorts): TerminalListProjectionService;