import type { BitsPrimitiveAnchorAttributes, BitsPrimitiveDivAttributes, BitsPrimitiveInputAttributes, WithChild, Without } from "../../shared/index.js";
export type CommandState = {
    /** The value of the search query */
    search: string;
    /** The value of the selected command menu item */
    value: string;
    /** The filtered items */
    filtered: {
        /** The count of all visible items. */
        count: number;
        /** Map from visible item value to its search store. */
        items: Map<string, number>;
        /** Set of groups with at least one visible item. */
        groups: Set<string>;
    };
};
export type CommandRootPropsWithoutHTML = WithChild<{
    /**
     * An accessible label for the command menu.
     * Not visible & only used for screen readers.
     */
    label?: string;
    /**
     * Optionally set to `false` to turn off the automatic filtering
     * and sorting. If `false`, you must conditionally render valid
     * items yourself.
     */
    shouldFilter?: boolean;
    /**
     * A custom filter function for whether each command item should
     * match the query. It should return a number between `0` and `1`,
     * with `1` being a perfect match, and `0` being no match, resulting
     * in the item being hidden entirely.
     *
     * By default, it will use the `computeCommandScore` function exported
     * by this package to compute the score.
     */
    filter?: (value: string, search: string, keywords?: string[]) => number;
    /**
     * A function that is called when the command state changes.
     */
    onStateChange?: (state: Readonly<CommandState>) => void;
    /**
     * Optionally provide or bind to the selected command menu item.
     */
    value?: string;
    /**
     * A function that is called when the selected command menu item
     * changes. It receives the new value as an argument.
     */
    onValueChange?: (value: string) => void;
    /**
     * Optionally set to `true` to enable looping through the items
     * when the user reaches the end of the list using the keyboard.
     */
    loop?: boolean;
    /**
     * Optionally set to `true` to disable selection via pointer events.
     */
    disablePointerSelection?: boolean;
    /**
     * Set this prop to `false` to disable the option to use ctrl+n/j/p/k (vim style) navigation.
     *
     * @default true
     */
    vimBindings?: boolean;
    /**
     * The number of columns in a grid layout.
     *
     * @default null
     */
    columns?: number | null;
    /**
     * Whether to disable scrolling the selected item into view on initial mount.
     * When `true`, prevents automatic scrolling when the command menu first renders
     * and selects its first item, but still allows scrolling on subsequent selections.
     *
     * @default false
     */
    disableInitialScroll?: boolean;
}>;
export type CommandRootProps = CommandRootPropsWithoutHTML & Without<BitsPrimitiveDivAttributes, CommandRootPropsWithoutHTML>;
export type CommandEmptyPropsWithoutHTML = WithChild<{
    /**
     * Whether to force mount the group container regardless of
     * filtering logic.
     */
    forceMount?: boolean;
}>;
export type CommandEmptyProps = CommandEmptyPropsWithoutHTML & Without<BitsPrimitiveDivAttributes, CommandEmptyPropsWithoutHTML>;
export type CommandGroupPropsWithoutHTML = WithChild<{
    /**
     * A unique value for the group.
     */
    value?: string;
    /**
     * Whether to force mount the group container regardless of
     * filtering logic.
     */
    forceMount?: boolean;
}>;
export type CommandGroupProps = CommandGroupPropsWithoutHTML & Without<BitsPrimitiveDivAttributes, CommandGroupPropsWithoutHTML>;
export type CommandGroupHeadingPropsWithoutHTML = WithChild;
export type CommandGroupHeadingProps = CommandGroupHeadingPropsWithoutHTML & Without<BitsPrimitiveDivAttributes, CommandGroupHeadingPropsWithoutHTML>;
export type CommandGroupItemsPropsWithoutHTML = WithChild;
export type CommandGroupItemsProps = CommandGroupItemsPropsWithoutHTML & Without<BitsPrimitiveDivAttributes, CommandGroupItemsPropsWithoutHTML>;
export type CommandItemPropsWithoutHTML = WithChild<{
    /**
     * Whether the item is disabled.
     *
     * @default false
     */
    disabled?: boolean;
    /**
     * A callback that is fired when the item is selected, either via
     * click or keyboard selection.
     */
    onSelect?: () => void;
    /**
     * A unique value for this item that will be used when filtering
     * and ranking the items. If not provided, an attempt will be made
     * to use the `textContent` of the item. If the `textContent` is dynamic,
     * you will need to provide a stable unique value for the item.
     */
    value?: string;
    /**
     * A list of keywords that will be used to filter the item.
     */
    keywords?: string[];
    /**
     * Whether to always mount the item regardless of filtering logic.
     */
    forceMount?: boolean;
}>;
export type CommandItemProps = CommandItemPropsWithoutHTML & Without<BitsPrimitiveDivAttributes, CommandItemPropsWithoutHTML>;
export type CommandLinkItemPropsWithoutHTML = CommandItemPropsWithoutHTML;
export type CommandLinkItemProps = CommandLinkItemPropsWithoutHTML & Without<BitsPrimitiveAnchorAttributes, CommandLinkItemPropsWithoutHTML>;
export type CommandInputPropsWithoutHTML = WithChild<{
    /**
     * The value of the input element, used to search/filter items.
     */
    value?: string;
}>;
export type CommandInputProps = CommandInputPropsWithoutHTML & Without<BitsPrimitiveInputAttributes, CommandInputPropsWithoutHTML>;
export type CommandListPropsWithoutHTML = WithChild;
export type CommandListProps = CommandListPropsWithoutHTML & Without<BitsPrimitiveDivAttributes, CommandListPropsWithoutHTML>;
export type CommandSeparatorPropsWithoutHTML = WithChild<{
    /**
     * Whether to force mount the separator container regardless of
     * filtering logic.
     */
    forceMount?: boolean;
}>;
export type CommandSeparatorProps = CommandSeparatorPropsWithoutHTML & Without<BitsPrimitiveDivAttributes, CommandSeparatorPropsWithoutHTML>;
export type CommandLoadingPropsWithoutHTML = WithChild<{
    /**
     * The current progress of the loading state.
     * This is a number between `0` and `100`.
     */
    progress?: number;
}>;
export type CommandLoadingProps = CommandLoadingPropsWithoutHTML & Without<BitsPrimitiveDivAttributes, CommandLoadingPropsWithoutHTML>;
export type CommandViewportPropsWithoutHTML = WithChild;
export type CommandViewportProps = CommandViewportPropsWithoutHTML & Without<BitsPrimitiveDivAttributes, CommandViewportPropsWithoutHTML>;
