import { ReactElement, ReactNode } from 'react';
import { DropdownProps } from '../dropdown';
import { DropdownFiles, DropdownMenuOption, DropdownSelectbox, DropdownMenuSelectboxSize, LinkComponentType } from './types';
import { AccentType, ButtonSize } from '../button';
import { DROPDOWN_PLACEMENT_TYPES } from '../dropdown/types';
import { TooltipPlacementsType, TooltipDelayType } from '../tooltip';
import { ValueOf } from '../types';
import './dropdown.less';
export type DropdownMenuSelectbox = boolean | {
    size?: DropdownMenuSelectboxSize;
    fitWidthToSelector?: string;
};
export type DropdownMenuProps = {
    /** dropdown container test id */
    contentTestId?: string;
    /** dropdown wrapper container test id */
    wrapperContentTestId?: string;
    /** Dropdown options to be displayed. */
    options: Array<DropdownMenuOption>;
    /** Called when a selection is made. Not required, since dropdown can consist of a list of anchor tags, in which case onSelect can be redundant */
    onSelect?: (option: DropdownMenuOption, files?: DropdownFiles) => void;
    /** If provided, will be used to find selected item's title to be shown instead of defaultTriggerText and used to highlight it in the list of available options */
    selectedKey?: string | number;
    /** Where to position dropdown, default is bottom-end */
    placement?: ValueOf<typeof DROPDOWN_PLACEMENT_TYPES>;
    /** Disables dropdown from mouse interactions and applies respective styles */
    isDisabled?: boolean;
    /** if true, will add a search field at the top of the popout container. Multilevel dropdowns do not support search */
    isSearchable?: boolean | null;
    /** Called when a change has been made to the search field, for integrating with APIs. If provided, will not filter the list of options. If provided, will always show the searchbox */
    onSearch?: (search?: string) => void;
    /** Defines a limit of searchable items. Once the limit is passed, search input is shown. */
    minSearchableItems?: number;
    /** Handler for external validation */
    hasErrored?: boolean;
    hasSuccess?: boolean;
    hasWarnings?: boolean;
    /** Set of options for selectbox, can be a boolean true in case no other options are needed  */
    selectbox?: DropdownSelectbox | boolean;
    /** Dropdown option positioned separately from the list at the top bottom and separated with a divider line. if list of options does not fit into the allocated dropdown container this option will be always visible and positioned outside of the scrollable container */
    footerOption?: DropdownMenuOption;
    /** Default trigger text to show if there are no options selected. */
    defaultTriggerText?: string;
    triggerClassName?: string;
    triggerDynamicContentWrapperClassName?: string;
    /** A dynamic handler that provides an ability to put custom content into trigger button. If defined, selectedItem and defaultTriggerText would be ommited on render */
    triggerDynamicContent?: ({ isOpen }: {
        isOpen?: boolean;
    }) => ReactNode;
    /** applies wide click area around the icon */
    triggerIsIcon?: boolean;
    /** A dynamic handler called every time dropdown is toggled */
    triggerOnClickHandler?: ({ isOpen }: {
        isOpen?: boolean;
    }, isKeyEvent?: boolean) => void;
    /** Trigger element id. */
    triggerId?: string;
    /** Trigger test id. */
    triggerTestId?: string;
    triggerAccentType?: AccentType;
    triggerTooltipDelayType?: TooltipDelayType;
    triggerTooltip?: string;
    triggerAriaLabelText?: string;
    triggerTourId?: string;
    /** Trigger tooltip placement */
    triggerTooltipPlacement?: TooltipPlacementsType;
    /** A link to docs that will be added to the trigger tooltip */
    triggerTooltipDocLink?: ReactElement;
    /** Hides trigger chevron. Especially useful for cases when menu trigger is an icon, (e.g. burger) */
    triggerHideChevron?: boolean;
    /** tab-index of the trigger button fo cases when we need to override default value set by the browser */
    triggerTabIndex?: number;
    triggerButtonSize?: ButtonSize;
    /** Specifies content css class */
    contentClassName?: string;
    /** Specifies text to be displayed on label */
    labelText?: ReactNode;
    /** adds an asterisk after the labelText */
    required?: boolean;
    /** Specifies text to be displayed as helper text */
    helperText?: string;
    /** Specifies text to be displayed if there options is empty */
    noResultsText?: ReactNode;
    /** Specifies test id for selected item */
    selectedItemTestId?: string;
    /** Boolean to specify if the menu should destroy on scroll of the window */
    destroyOnScroll?: boolean;
    isMultiLevel?: boolean;
    isMultiLevelSectioned?: boolean;
    isOptional?: boolean;
    optionalLabelText?: string;
    /** Specifies text to be displayed as a search placeholder text */
    searchPlaceholderText?: string;
    /** Specifies autocomplete attribute of a search input */
    searchAutoComplete?: string;
    /** Whether the default options list and search query should reset when dropdown is closed */
    setDefaultOptionsListOnClose?: boolean;
    /** Render func that displays content between Search and ListItems */
    renderCustomDropdownHeader?: () => ReactNode;
    /** Specifies value for Search */
    searchQuery?: string;
    onClose?: () => void;
    onOpen?: (openedWithKeyboard: boolean) => void;
    dropdownProps?: Partial<DropdownProps>;
    dropdownMenuContentProps?: Partial<DropdownMenuProps>;
    /** Link implementation for DropdownItemLink. Pass component which integrates with your routing library. Default value is just an `<a>` */
    LinkComponent?: LinkComponentType;
};
/** Powerful dropdown component aimed at supporting standard dropdown usages in the app
 * [CAPITALIZATION] Use title case for labels, no colon at the end
 * [CAPITALIZATION] Use sentence case for selection
 * @midnight-gray-supported
 * @alpine-light-supported
 */
declare const DropdownMenu: ({ options: originalOptions, footerOption: originalFooterOption, triggerId, triggerTestId, triggerTourId, contentTestId, wrapperContentTestId, selectedItemTestId, defaultTriggerText, labelText, helperText, noResultsText, selectedKey, contentClassName, triggerClassName, triggerIsIcon, triggerTooltip, triggerAriaLabelText, triggerTooltipPlacement, triggerDynamicContentWrapperClassName, triggerDynamicContent, triggerAccentType, triggerTooltipDelayType, triggerOnClickHandler, triggerTooltipDocLink, triggerHideChevron, triggerTabIndex, triggerButtonSize, placement, selectbox, isSearchable, searchPlaceholderText, searchAutoComplete, isDisabled, hasErrored, hasSuccess, hasWarnings, isOptional, optionalLabelText, minSearchableItems, onSelect, onSearch, setDefaultOptionsListOnClose, destroyOnScroll, isMultiLevel, isMultiLevelSectioned, required, onOpen, onClose, renderCustomDropdownHeader, searchQuery: searchQueryValue, dropdownProps, dropdownMenuContentProps, LinkComponent, }: DropdownMenuProps) => import("react/jsx-runtime").JSX.Element;
export default DropdownMenu;
