import { default as React, ReactNode } from 'react';
import { ListMenuNavItem, ListMenuItem } from './ListMenuGroup';
export type { ListMenuNavItem, ListMenuItem } from './ListMenuGroup';
type ListMenuFilterFn<T extends ListMenuNavItem> = (items: ListMenuItem<T>[], value: string, filterKey: keyof T) => ListMenuItem<T>[];
export type ListMenuProps<T extends ListMenuNavItem> = {
    /**
     * List of menu item groups to be shown.
     */
    menuItems: ListMenuItem<T>[];
    /**
     * Enables the filter.
     *
     * @default false
     */
    enableFilter?: boolean;
    /**
     * Focus the filter input.
     *
     * @default false
     */
    focusFilter?: boolean;
    /**
     * Define the attribute key for filtering.
     *
     * @default 'key'
     */
    filterKey?: keyof T;
    /**
     * The placeholder text for the filter input.
     */
    filterPlaceholder?: string;
    /**
     * Gets called when the filter input changes.
     *
     * @param value
     * @returns
     */
    onFilterChange?: (value: string) => void;
    /**
     * A localized message to be shown when the filter result is empty.
     */
    notFoundMessage?: string | ReactNode;
    /**
     * The menu uses collapses on smaller screens using an expander panel.
     *
     * @default true
     */
    responsive?: boolean;
    /**
     * Enables automatic closing of the expander panel.
     *
     * Only relevant when using the `responsive` flag. Note: Make sure to not stop the events from bubbling up when
     * clicking on a list item!
     *
     * Using `event.stopPropagation()` will prevent the panel from closing.
     *
     * @default true
     */
    autoClose?: boolean;
    /**
     * Additional classes to be set on the menu group element.
     */
    groupClassName?: string;
    /**
     * Additional addon for the input group.
     */
    trailingInputAddon?: React.ReactNode;
    /**
     * Additional classes to be set on the wrapper element.
     */
    className?: string;
    /**
     * Optional custom filter function.
     *
     * Use this when filtering should do more than a simple substring match,
     * for example fuzzy ranking or multi-field weighting.
     */
    filterFn?: ListMenuFilterFn<T>;
};
declare const ListMenu: <T extends ListMenuNavItem>(props: ListMenuProps<T>) => import("react/jsx-runtime").JSX.Element;
export default ListMenu;
