import { MatchSorterOptions } from 'match-sorter';
import { TreeSelectMenuNode, TreeSelectMenuProps } from './types';
import { TreeSyncFilterFn } from '../TreeSelectField/internal/treeSync';
export type { TreeSyncFilterFn };
/**
 * Props for the TreeSelectMenuSync component.
 * @property options - The static tree options to display.
 * @property filter - Custom filter function or MatchSorterOptions to control how nodes are filtered during search.
 *   By default, filters by label and searchText using match-sorter, preserving parent nodes of any match.
 * @extends TreeSelectMenuProps
 */
export type TreeSelectMenuSyncProps = Omit<TreeSelectMenuProps, "loadOptions" | "debounceMs" | "cache" | "initialLoad"> & {
    /**
     * The static tree options to display in the menu.
     */
    options: TreeSelectMenuNode[];
    /**
     * Controls how options are filtered when the user types a search value.
     * Can be a function that returns nodes in the desired display order,
     * or a MatchSorterOptions object to customize the default match-sorter behavior.
     *
     * By default, nodes are filtered by `label` and `searchText` using match-sorter,
     * and parents of matching nodes are preserved in the tree structure.
     *
     * @example
     * <TreeSelectMenuSync
     *   options={options}
     *   filter={(nodes, searchValue) => {
     *     return nodes.filter((node) =>
     *       node.label.toLowerCase().includes(searchValue.toLowerCase())
     *     );
     *   }}
     * />
     *
     * @example
     * <TreeSelectMenuSync
     *   options={options}
     *   filter={{ keys: ["label"] }}
     * />
     */
    filter?: TreeSyncFilterFn | MatchSorterOptions<TreeSelectMenuNode>;
};
/**
 * TreeSelectMenuSync is a simplified wrapper around TreeSelectMenu for static (non-async) tree data.
 *
 * Features:
 * - Accepts static `options` instead of `loadOptions`.
 * - Performs client-side filtering with tree-structure awareness (parents of matches are preserved).
 * - Accepts a custom filter function or MatchSorterOptions to customize filtering behavior.
 * - Invalidates the menu when the options reference changes.
 * - Supports all other props of TreeSelectMenu.
 *
 * @example
 * <TreeSelectMenuSync
 *   trigger={(props) => <Button {...props}>Select location</Button>}
 *   label="Select location"
 *   options={locationTree}
 *   value={selected}
 *   onSelectedOptionsChange={setSelected}
 * />
 */
export declare const TreeSelectMenuSync: {
    (props: TreeSelectMenuSyncProps): import("react/jsx-runtime").JSX.Element;
    displayName: string;
};
