import { type VariantProps } from 'class-variance-authority';
import * as React from 'react';
import { CommandGroup, CommandItem, CommandSeparator } from '@/components/ui/command';
import { PopoverPopup, PopoverTrigger } from '@/components/ui/popover';
export interface ComboboxOption {
    /** Unique value for the option */
    value: string;
    /** Display label for the option */
    label: string;
    /** Optional icon to display */
    icon?: React.ReactNode;
    /** Optional secondary text (e.g., @username, email) */
    subtitle?: string;
    /** Optional description text (appears below label) */
    description?: string;
    /** Keyboard shortcut to display */
    shortcut?: string;
    /** Whether the option is disabled */
    disabled?: boolean;
    /** Optional group this option belongs to */
    group?: string;
}
export interface ComboboxGroup {
    /** Group label */
    label: string;
    /** Options in this group */
    options: ComboboxOption[];
}
export interface ComboboxHeaderProps {
    /** Avatar element to display */
    avatar?: React.ReactNode;
    /** Primary text (e.g., user name) */
    title?: string;
    /** Secondary text (e.g., email) */
    subtitle?: string;
    /** Custom children for full control */
    children?: React.ReactNode;
}
export declare const comboboxTriggerVariants: (props?: ({
    size?: "sm" | "md" | "lg" | null | undefined;
    variant?: "outline" | "ghost" | "primary" | "default" | null | undefined;
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
export declare const comboboxContentVariants: (props?: ({
    width?: "auto" | "sm" | "md" | "lg" | "full" | null | undefined;
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
export declare const comboboxItemVariants: (props?: ({
    variant?: "destructive" | "default" | null | undefined;
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
declare function ComboboxHeader({ avatar, title, subtitle, children, className, ...props }: ComboboxHeaderProps & React.ComponentProps<'div'>): import("react/jsx-runtime").JSX.Element;
declare namespace ComboboxHeader {
    var displayName: string;
}
declare function ComboboxShortcut({ className, children, ...props }: React.ComponentProps<'kbd'>): import("react/jsx-runtime").JSX.Element;
declare namespace ComboboxShortcut {
    var displayName: string;
}
export interface ComboboxMenuProps extends VariantProps<typeof comboboxTriggerVariants>, VariantProps<typeof comboboxContentVariants> {
    /** Options to display in the combobox */
    options?: ComboboxOption[];
    /** Grouped options to display */
    groups?: ComboboxGroup[];
    /** Currently selected value(s) */
    value?: string | string[];
    /** Callback when selection changes */
    onValueChange?: (value: string | string[]) => void;
    /** Placeholder text when nothing is selected */
    placeholder?: string;
    /** Placeholder text for the search input */
    searchPlaceholder?: string;
    /** Text to show when no results found */
    emptyText?: string;
    /** Whether multiple selection is allowed */
    multiple?: boolean;
    /** Whether the combobox is disabled */
    disabled?: boolean;
    /** Whether to show search input */
    searchable?: boolean;
    /** Custom trigger element */
    trigger?: React.ReactNode;
    /** Header configuration for account-style menus */
    header?: ComboboxHeaderProps;
    /** RTL direction support */
    dir?: 'ltr' | 'rtl';
    /** Additional class name for the trigger */
    triggerClassName?: string;
    /** Additional class name for the content */
    contentClassName?: string;
    /** Controlled open state */
    open?: boolean;
    /** Callback when open state changes */
    onOpenChange?: (open: boolean) => void;
    /** Side of the trigger to render the content */
    side?: 'top' | 'right' | 'bottom' | 'left';
    /** Alignment of the content relative to the trigger */
    align?: 'start' | 'center' | 'end';
    /** Maximum height of the list */
    maxHeight?: number;
}
declare function ComboboxMenu({ options, groups, value, onValueChange, placeholder, searchPlaceholder, emptyText, multiple, disabled, searchable, trigger, header, dir, size, variant, width, triggerClassName, contentClassName, open: controlledOpen, onOpenChange, side, align, maxHeight, }: ComboboxMenuProps): import("react/jsx-runtime").JSX.Element;
declare namespace ComboboxMenu {
    var displayName: string;
}
export interface ComboboxRootProps {
    children: React.ReactNode;
    open?: boolean;
    onOpenChange?: (open: boolean) => void;
    defaultOpen?: boolean;
}
declare function ComboboxRoot({ children, open, onOpenChange, defaultOpen, }: ComboboxRootProps): import("react/jsx-runtime").JSX.Element;
declare namespace ComboboxRoot {
    var displayName: string;
}
export interface ComboboxTriggerProps extends Omit<React.ComponentProps<typeof PopoverTrigger>, 'children'> {
    /** Trigger content */
    children: React.ReactNode;
}
declare function ComboboxTrigger({ className, children, ...props }: ComboboxTriggerProps): import("react/jsx-runtime").JSX.Element;
declare namespace ComboboxTrigger {
    var displayName: string;
}
export interface ComboboxContentProps extends Omit<React.ComponentProps<typeof PopoverPopup>, 'children'> {
    /** Content items */
    children: React.ReactNode;
    /** RTL direction support */
    dir?: 'ltr' | 'rtl';
    /** Whether to show search input */
    searchable?: boolean;
    /** Placeholder text for the search input */
    searchPlaceholder?: string;
    /** Text to show when no results found */
    emptyText?: string;
}
declare function ComboboxContent({ className, children, dir, searchable, searchPlaceholder, emptyText, side, align, ...props }: ComboboxContentProps): import("react/jsx-runtime").JSX.Element;
declare namespace ComboboxContent {
    var displayName: string;
}
export interface ComboboxItemProps extends React.ComponentProps<typeof CommandItem> {
    /** Icon to display */
    icon?: React.ReactNode;
    /** Subtitle text (e.g., @username) */
    subtitle?: string;
    /** Keyboard shortcut to display */
    shortcut?: string;
    /** Whether this item is selected */
    selected?: boolean;
    /** Whether this is a destructive action */
    destructive?: boolean;
    /** RTL direction support */
    dir?: 'ltr' | 'rtl';
}
declare function ComboboxItem({ className, children, icon, subtitle, shortcut, selected, destructive, dir, ...props }: ComboboxItemProps): import("react/jsx-runtime").JSX.Element;
declare namespace ComboboxItem {
    var displayName: string;
}
export interface ComboboxGroupProps extends React.ComponentProps<typeof CommandGroup> {
    /** RTL direction support */
    dir?: 'ltr' | 'rtl';
}
declare const ComboboxGroup: React.FC<ComboboxGroupProps>;
declare function ComboboxSeparator(props: React.ComponentProps<typeof CommandSeparator>): import("react/jsx-runtime").JSX.Element;
declare namespace ComboboxSeparator {
    var displayName: string;
}
export { ComboboxContent, ComboboxGroup, ComboboxHeader, ComboboxItem, ComboboxMenu, ComboboxRoot, ComboboxSeparator, ComboboxShortcut, ComboboxTrigger, };
