import { ReactNode } from 'react';
/**
 * Shared prop set for the "Add new item" affordance available on
 * SelectField, SelectMenu, MultiSelectField, and MultiSelectMenu.
 *
 * @property addItemLabel - Label rendered inside the "Add new item" button. May be a static node or a callback that receives the current search text and returns a dynamic label (e.g. `Add "${searchText}"`). When the callback returns `null` or `undefined`, the button is not rendered. When omitted but `onAddNewItem` is provided, falls back to `"Add new item"`.
 * @property onAddNewItem - Click handler for the "Add new item" button. Presence of this prop is what gates rendering the button (unless `addItemLabel` is a callback that returns `null`/`undefined` for the current search text). Receives the current search text. The menu auto-closes synchronously on click; the handler runs immediately after — typically opening a Dialog or Drawer to collect the new item's details. Consumers manage their own overlay presentation, focus return, option list updates, and selection state.
 */
export type AddNewItemProps = {
    addItemLabel?: ReactNode | ((searchText: string) => ReactNode);
    onAddNewItem?: (searchText: string) => void;
};
/**
 * Resolves the add-new button label for the current search text.
 *
 * - Callback labels: returns the callback result, or `null` when the callback
 *   returns `null`/`undefined` (button should be hidden).
 * - Static / omitted labels: returns the static node, or `"Add new item"` when
 *   omitted.
 */
export declare function resolveAddItemLabel(addItemLabel: AddNewItemProps["addItemLabel"], searchText: string): ReactNode | null;
/**
 * Whether the add-new button should be mounted for the current search text.
 * Host menus use this so an empty footer (and its divider) is not rendered when
 * a label callback hides the button.
 */
export declare function shouldShowAddNewItem(onAddNewItem: AddNewItemProps["onAddNewItem"], addItemLabel: AddNewItemProps["addItemLabel"], searchText: string): boolean;
