import * as React from 'react';
export interface SearchResult {
    label: string;
    value: string;
    icon?: React.ReactNode;
    description?: string;
    group?: string;
}
export interface CommandEntry {
    id: string;
    label: string;
    description?: string;
    icon?: React.ReactNode;
    group?: string;
    keybinding?: string;
    handler: () => void;
}
export interface SearchProps extends Omit<React.ComponentProps<'input'>, 'onSelect'> {
    /** Callback invoked on search submit (Enter key) */
    onSearch?: (query: string) => void;
    /** Async suggest function for typeahead */
    suggest?: (query: string) => Promise<SearchResult[]> | SearchResult[];
    /** Callback when a suggestion is selected */
    onSelect?: (result: SearchResult) => void;
    /** Debounce delay in ms */
    debounceMs?: number;
    /** Show clear button */
    clearable?: boolean;
}
declare function Search({ className, onSearch, suggest, onSelect, debounceMs, clearable, value: controlledValue, onChange, ...props }: SearchProps): import("react/jsx-runtime").JSX.Element;
export interface CommandPaletteProps {
    /** Whether the palette is open */
    open?: boolean;
    /** Callback when open state changes */
    onOpenChange?: (open: boolean) => void;
    /** Available commands */
    commands: CommandEntry[];
    /** Input placeholder */
    placeholder?: string;
    /** Global keyboard shortcut (e.g. 'ctrl+k') */
    keybinding?: string;
}
declare function CommandPalette({ open: controlledOpen, onOpenChange, commands, placeholder, keybinding, }: CommandPaletteProps): import("react/jsx-runtime").JSX.Element | null;
export { Search, CommandPalette };
//# sourceMappingURL=search.d.ts.map