import React from 'react'; export type ContinueDecision = 'proceed' | 'edit' | 'cancel'; /** * Return the visible auto-proceed countdown in seconds, or null when the user * must make an explicit choice. Keeping this as a tiny pure helper gives tests * a stable contract without driving Ink timers. */ export declare function continueAutoProceedSeconds(grounded: boolean, delayMs: number): number | null; export interface ContinueConfirmPanelProps { /** One-line summary of what "continue" resolved to. */ label: string; /** The full instruction that will be sent in place of the bare "continue". */ instruction: string; /** Resolution origin — drives the copy and the drift warning. */ source: 'todo' | 'suggestion' | 'open'; /** * True for todo/suggestion resolutions (an explicit anchor, low drift): the * panel auto-proceeds after `delayMs`. False for the `open` guess: no * countdown, an explicit keypress is required. */ grounded: boolean; /** Auto-proceed countdown (ms) for grounded resolutions. Ignored when !grounded. */ delayMs: number; /** Called once with the chosen action (keypress or, when grounded, countdown expiry). */ onDecision: (decision: ContinueDecision) => void; } /** * Bare-"continue" confirmation ("you said continue — here's what that means"). * * The whole point is to make the resolution *and its drift risk* visible * instead of silently guessing: * * - **grounded** (todo / suggestion) — a concrete anchor exists, so we show * it and auto-proceed after a short countdown. Enter sends now, Esc cancels, * e loads it into the input to tweak. * - **open** (no queued task) — "continue" is genuinely ambiguous here, so we * do NOT auto-send. We show a ⚠ drift notice ("no pending task — I'll pick * the next step from context") and wait for the user: Enter to trust the * guess, e to type what to continue, Esc to cancel. * * Self-contained like EnhancePanel/ConfirmPrompt: owns its keys via `useInput` * and (when grounded) its timer via a ref so the countdown never triggers a * per-second re-render that would bleed blank rows into inline scrollback. * `onDecision` is guarded by the caller so only the first decision wins. */ export declare function ContinueConfirmPanel({ label, instruction, source, grounded, delayMs, onDecision, }: ContinueConfirmPanelProps): React.ReactElement; //# sourceMappingURL=continue-confirm-panel.d.ts.map