import type { Interface as RLInterface } from 'node:readline'; export interface SuggestItem { /** The slash command, e.g. "/help". */ command: string; /** One-line description shown in the second column. */ description: string; } export interface InlineSuggestOptions { /** * The styled prompt prefix to repaint at the start of every render * (includes any chalk codes). Defaults to " ❯ " (no decorative). */ promptPrefix?: string; /** * Visible character width of `promptPrefix` (i.e. its length minus * any ANSI escape sequences). Used to position the cursor at the * end of the filter after a render. Defaults to counting the * stripped prefix when omitted. */ promptVisibleLen?: number; } export interface InlineSuggestResult { /** True if the user picked an item (Enter); false on Esc / Ctrl+C / Backspace-to-empty. */ accepted: boolean; /** The chosen command, only set when accepted=true. Trailing space * means "fill but don't submit" (Tab pathway). */ command?: string; /** The filter string at exit. Caller restores rl.line to this on * cancel so the user can keep typing the partial command. */ filter: string; } /** * Show the inline suggest dropdown and resolve when the user picks * or cancels. * * The caller should have cleared rl.line and refreshed the prompt * before calling — we repaint the prompt line ourselves but the * cursor needs to be on a stable row (not mid-scroll). */ export declare function inlineSuggest(_rl: RLInterface, items: SuggestItem[], initialFilter?: string, opts?: InlineSuggestOptions): Promise;