/**
 * Base Selector Component
 * Reusable selector with keyboard navigation for lists
 * Used by ModelSelector and SessionSelector
 */
import { type ReactNode } from 'react';
import type { Key } from '../../hooks/useInputOrchestrator.js';
export interface BaseSelectorProps<T> {
    items: T[];
    isVisible: boolean;
    isLoading?: boolean;
    selectedIndex: number;
    onSelectIndex: (index: number) => void;
    onSelect: (item: T) => void;
    onClose: () => void;
    formatItem: (item: T, isSelected: boolean) => ReactNode;
    title: string;
    maxVisibleItems?: number;
    loadingMessage?: string;
    emptyMessage?: string;
    borderColor?: string;
    onTab?: (item: T) => void;
    supportsTab?: boolean;
    instructionsOverride?: string;
}
export interface BaseSelectorHandle {
    handleInput: (input: string, key: Key) => boolean;
}
/**
 * Generic selector component with keyboard navigation and scrolling
 */
declare function BaseSelectorInner<T>({ items, isVisible, isLoading, selectedIndex, onSelectIndex, onSelect, onClose, formatItem, title, maxVisibleItems, loadingMessage, emptyMessage, borderColor, onTab, supportsTab, instructionsOverride, }: BaseSelectorProps<T>, ref: React.Ref<BaseSelectorHandle>): import("react/jsx-runtime").JSX.Element | null;
export declare const BaseSelector: <T>(props: BaseSelectorProps<T> & {
    ref?: React.Ref<BaseSelectorHandle>;
}) => ReturnType<typeof BaseSelectorInner>;
export {};
//# sourceMappingURL=BaseSelector.d.ts.map