import { type Component, type Focusable, type SelectItem, type SelectListTheme } from '@earendil-works/pi-tui'; export interface SearchableSelectListTheme extends SelectListTheme { searchPrompt: (text: string) => string; searchInput: (text: string) => string; matchHighlight: (text: string) => string; } export interface SearchableSelectListOptions { initialQuery?: string; wrapNavigation?: boolean; searchPromptText?: string; filterItems?: (items: SelectItem[], query: string) => SelectItem[]; } export declare class SearchableSelectList implements Component, Focusable { private items; private filteredItems; private selectedIndex; private maxVisible; private theme; private searchInput; private regexCache; private _focused; private readonly wrapNavigation; private readonly searchPromptText; private readonly filterItems?; onSelect?: (item: SelectItem) => void; onCancel?: () => void; onSelectionChange?: (item: SelectItem) => void; private static readonly DESCRIPTION_LAYOUT_MIN_WIDTH; private static readonly DESCRIPTION_MIN_WIDTH; private static readonly DESCRIPTION_SPACING_WIDTH; private static readonly RIGHT_MARGIN_WIDTH; constructor(items: SelectItem[], maxVisible: number, theme: SearchableSelectListTheme, options?: SearchableSelectListOptions); get focused(): boolean; set focused(value: boolean); private getCachedRegex; private updateFilter; private smartFilter; private escapeRegex; private compareByScore; private getItemLabel; private splitAnsiParts; private highlightMatch; setSelectedIndex(index: number): void; setSelectedValue(value: string): boolean; setItems(items: SelectItem[]): void; setSearchQuery(query: string, options?: { selectedValue?: string; }): void; clearSearch(options?: { selectedValue?: string; }): void; getSearchQuery(): string; getSelectionStats(): { selected: number; total: number; }; invalidate(): void; render(width: number): string[]; private renderItemLine; private getDescriptionLayout; private moveSelection; private matchesSelectAction; handleInput(keyData: string): void; private notifySelectionChange; getSelectedItem(): SelectItem | null; }