import type React from 'react'; export type EnhanceDecision = 'refined' | 'english' | 'original' | 'edit' | 'retry' | 'cancel'; export interface RefiningPanelProps { /** Prompt currently being rewritten. */ original: string; /** Time spent in the refiner request so far. */ elapsedMs: number; /** Small animation frame; visual only and never presented as progress. */ pulseFrame?: number | undefined; /** Provider id of the model running the refinement (e.g. "openai"). */ providerId?: string | undefined; /** Model name running the refinement (e.g. "gpt-4o"). */ model?: string | undefined; } export interface EnhancePanelProps { /** The user's original message. */ original: string; /** Refined in the user's original language. */ refined: string; /** Refined in English. */ english: string; /** Time the refiner call took before this preview opened. */ durationMs?: number | undefined; /** Auto-send countdown in milliseconds. */ delayMs: number; /** * Default language for refinement ('original' or 'english'). * Controls which version is shown as "RECOMMENDED" and auto-selected * on Enter / countdown expiry. Defaults to 'original'. */ enhanceLanguage?: 'original' | 'english' | undefined; /** Called once with the chosen action (by key press or countdown expiry). */ onDecision: (decision: EnhanceDecision) => void; /** * Called every second with the remaining seconds. The statusline owns the * changing countdown so this comparison panel stays visually stable. */ onTick?: ((remaining: number) => void) | undefined; /** Provider id of the model that produced the refinement (e.g. "openai"). */ providerId?: string | undefined; /** Model name that produced the refinement (e.g. "gpt-4o"). */ model?: string | undefined; } export declare function formatRefinementDuration(ms: number): string; /** A scanning activity pulse. It deliberately does not imply completion %. */ export declare function refinementPulse(frame: number, width?: number): string; /** * Word-aware, bounded preview rows for the live-region panels. Whitespace is * collapsed and the final row receives an ellipsis when content remains. */ export declare function wrapRefinementPreview(text: string, width: number, maxLines: number): string[]; /** Live refiner call state: stable height, real elapsed time, cancellable. */ export declare function RefiningPanel({ original, elapsedMs, pulseFrame, providerId, model, }: RefiningPanelProps): React.ReactElement; /** * Completed prompt-refinement comparison. The original and recommended * versions sit side-by-side on wide terminals and stack on narrow ones. The * countdown remains in the statusline, keeping this panel stable in inline * mode while still making auto-send behavior explicit. */ export declare function EnhancePanel({ original, refined, english, durationMs, delayMs, enhanceLanguage, onDecision, onTick, providerId, model, }: EnhancePanelProps): React.ReactElement; //# sourceMappingURL=enhance-panel.d.ts.map