import { Container, type KeyId, type MouseEvent } from "@gajae-code/tui"; export declare const PLAN_REVIEW_ACTIONS: readonly ["Approve and execute", "Approve and compact context", "Approve and keep context", "Refine plan"]; export type PlanReviewAction = (typeof PLAN_REVIEW_ACTIONS)[number]; export type PlanPreviewFocus = "preview" | "sourceSelect" | "commentInput" | "actionBar"; export interface PlanPreviewOptions { externalEditorKey?: string; externalEditorKeys?: readonly KeyId[]; onExternalEditor?: () => Promise; } export interface PlanComment { id: string; startLine: number; endLine: number; text: string; snapshotHash: string; createdAt: number; } export interface PlanPreviewResult { action?: PlanReviewAction; comments: PlanComment[]; notes: string; snapshotHash: string; } export declare function planSnapshotHash(content: string): string; export declare function serializePlanReviewComments(content: string, hash: string, comments: readonly PlanComment[], notes?: string): string; /** Modal pre-decision review. Its result is consumed by InteractiveMode, which owns audit and dispatch semantics. */ export declare class PlanPreviewOverlay extends Container { #private; private readonly done; private readonly requestRender; private readonly options; content: string | null; snapshotHash: string; lines: string[]; constructor(content: string | null, done: (result: PlanPreviewResult) => void, requestRender: () => void, options?: PlanPreviewOptions); get focusState(): PlanPreviewFocus; get comments(): readonly PlanComment[]; get pageOffset(): number; get sourceLine(): number; render(width: number): string[]; handleMouse(event: MouseEvent): void; handleInput(key: string): void; }