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<InlineSuggestResult>;
