/** * Decide whether ↑/↓ in the composer should recall prompts or scroll chat. * * Classic CLAI: bare ↑/↓ at the line boundary walks prompt history (including * empty input). Wheel/trackpad still scrolls the transcript via mouse handlers. * Only rapid arrow *bursts* (trackpad emulating keys without mouse reporting) * are treated as chat scroll so history remains the default for deliberate keys. */ export interface ArrowIntentInput { readonly chord: string; readonly plainText: string; readonly line: number; readonly lineCount: number; readonly menuOpen: boolean; readonly isBrowsingHistory: boolean; /** Count of ↑/↓ presses in a short window (trackpad→arrow emulation). */ readonly burstCount: number; } export type ArrowIntent = "scroll-chat" | "history" | "ignore"; /** Trackpad-as-arrows often fires several key repeats within ~100ms. */ export declare const ARROW_BURST_THRESHOLD = 3; export declare const ARROW_BURST_WINDOW_MS = 80; export declare function resolveArrowIntent(input: ArrowIntentInput): ArrowIntent;