/**
 * @license
 * Copyright 2025 Vybestack LLC
 * SPDX-License-Identifier: Apache-2.0
 */
import React from 'react';
import { TextBuffer } from './shared/text-buffer.js';
import { Key } from '../hooks/useKeypress.js';
import type { CommandContext, SlashCommand } from '../commands/types.js';
import type { Config, ApprovalMode } from '@vybestack/llxprt-code-core';
import { StreamingState } from '../types.js';
export interface InputPromptProps {
    buffer: TextBuffer;
    onSubmit: (value: string) => void;
    userMessages: readonly string[];
    onClearScreen: () => void;
    config: Config;
    slashCommands: readonly SlashCommand[];
    commandContext: CommandContext;
    placeholder?: string;
    focus?: boolean;
    inputWidth: number;
    suggestionsWidth: number;
    shellModeActive: boolean;
    setShellModeActive: (value: boolean) => void;
    onEscapePromptChange?: (showPrompt: boolean) => void;
    onSuggestionsVisibilityChange?: (visible: boolean) => void;
    suggestionsPosition?: 'above' | 'below';
    vimHandleInput?: (key: Key) => boolean;
    approvalMode?: ApprovalMode;
    popAllMessages?: (callback: (messages: string) => void) => void;
    vimModeEnabled?: boolean;
    isEmbeddedShellFocused?: boolean;
    setQueueErrorMessage?: (message: string) => void;
    streamingState?: StreamingState;
}
export declare const calculatePromptWidths: (terminalWidth: number) => {
    readonly inputWidth: number;
    readonly containerWidth: number;
    readonly suggestionsWidth: number;
    readonly frameOverhead: number;
};
export declare const InputPrompt: React.FC<InputPromptProps>;
