import * as React from 'react';
import { CommandItem } from '@/components/ui/command';
export interface CommandMenuOption {
    /** Unique identifier for the option */
    id: string;
    /** Display label for the option */
    label: string;
    /** Optional subtitle (e.g., @username, email) */
    subtitle?: string;
    /** Optional icon to display (mutually exclusive with avatar) */
    icon?: React.ReactNode;
    /** Optional avatar configuration */
    avatar?: {
        src?: string;
        fallback?: string;
    };
    /** Whether the option is disabled */
    disabled?: boolean;
    /** Keyboard shortcut to display */
    shortcut?: string;
}
export interface CommandMenuGroup {
    /** Unique identifier for the group */
    id: string;
    /** Group label/heading */
    label: string;
    /** Options in this group */
    options: CommandMenuOption[];
}
export interface CommandMenuFooterHint {
    /** Icon or keyboard key indicator */
    keys: React.ReactNode;
    /** Text describing the action */
    label: string;
}
export interface CommandMenuProps {
    /** Whether the command menu is open */
    open?: boolean;
    /** Callback when open state changes */
    onOpenChange?: (open: boolean) => void;
    /** Placeholder text for the search input */
    placeholder?: string;
    /** Text to show when no results found */
    emptyText?: string;
    /** Empty state content (replaces emptyText when provided) */
    emptyState?: React.ReactNode;
    /** Flat list of options */
    options?: CommandMenuOption[];
    /** Grouped options */
    groups?: CommandMenuGroup[];
    /** Callback when an option is selected */
    onSelect?: (id: string, option: CommandMenuOption) => void;
    /** Whether to show keyboard shortcut badge in input */
    showShortcut?: boolean;
    /** Keyboard shortcut text to display (auto-detects platform when omitted) */
    shortcutText?: string;
    /** Whether to show the footer with navigation hints */
    showFooter?: boolean;
    /** Custom footer hints */
    footerHints?: CommandMenuFooterHint[];
    /** Whether to show settings button in footer */
    showSettingsButton?: boolean;
    /** Callback when settings button is clicked */
    onSettingsClick?: () => void;
    /** Additional class name for the dialog */
    className?: string;
    /** Maximum height of the list */
    maxHeight?: number;
    /** Custom filter function */
    filter?: (value: string, search: string) => number;
    /** Children for custom content */
    children?: React.ReactNode;
}
declare function CommandShortcutBadge({ children, className, }: {
    children: React.ReactNode;
    className?: string;
}): import("react/jsx-runtime").JSX.Element;
declare namespace CommandShortcutBadge {
    var displayName: string;
}
declare function FooterNavIcon({ children, className, }: {
    children: React.ReactNode;
    className?: string;
}): import("react/jsx-runtime").JSX.Element;
declare namespace FooterNavIcon {
    var displayName: string;
}
declare function FooterNavText({ children, className, }: {
    children: React.ReactNode;
    className?: string;
}): import("react/jsx-runtime").JSX.Element;
declare namespace FooterNavText {
    var displayName: string;
}
declare const defaultFooterHints: CommandMenuFooterHint[];
export interface CommandMenuFooterProps {
    hints?: CommandMenuFooterHint[];
    showSettingsButton?: boolean;
    onSettingsClick?: () => void;
    className?: string;
}
declare function CommandMenuFooter({ hints, showSettingsButton, onSettingsClick, className, }: CommandMenuFooterProps): import("react/jsx-runtime").JSX.Element;
declare namespace CommandMenuFooter {
    var displayName: string;
}
export interface CommandMenuItemProps extends Omit<React.ComponentProps<typeof CommandItem>, 'onSelect' | 'value'> {
    option: CommandMenuOption;
    onSelect?: (id: string, option: CommandMenuOption) => void;
}
declare function CommandMenuItem({ option, onSelect, className, ...props }: CommandMenuItemProps): import("react/jsx-runtime").JSX.Element;
declare namespace CommandMenuItem {
    var displayName: string;
}
declare function CommandMenuGroupHeader({ children, className, ...props }: React.ComponentProps<'h3'>): import("react/jsx-runtime").JSX.Element;
declare namespace CommandMenuGroupHeader {
    var displayName: string;
}
declare function CommandMenu({ open, onOpenChange, placeholder, emptyText, emptyState, options, groups, onSelect, showShortcut, shortcutText, showFooter, footerHints, showSettingsButton, onSettingsClick, className, maxHeight, filter, children, }: CommandMenuProps): import("react/jsx-runtime").JSX.Element;
declare namespace CommandMenu {
    var displayName: string;
}
export interface CommandMenuPanelProps extends Omit<CommandMenuProps, 'open' | 'onOpenChange'> {
    /** Additional class name */
    className?: string;
}
declare function CommandMenuPanel({ placeholder, emptyText, emptyState, options, groups, onSelect, showShortcut, shortcutText, showFooter, footerHints, showSettingsButton, onSettingsClick, className, maxHeight, filter, children, }: CommandMenuPanelProps): import("react/jsx-runtime").JSX.Element;
declare namespace CommandMenuPanel {
    var displayName: string;
}
export { CommandMenu, CommandMenuFooter, CommandMenuGroupHeader, CommandMenuItem, CommandMenuPanel, CommandShortcutBadge, defaultFooterHints, FooterNavIcon, FooterNavText, };
