import { default as React } from 'react';
import { DropdownToggleEvent, DropdownToggleButtonType } from './DropdownToggleButton';
import { MenuItemProps as MenuItem } from '../menuItems/MenuItem';
import { BUTTON_SIZE, BUTTON_STYLE, BUTTON_VARIANT } from '../button/Button';
export type ButtonDropdownProps<T extends DropdownToggleButtonType = 'button'> = {
    /**
     * Unique button id. If not present a random id is generated.
     */
    id?: string;
    /**
     * Accessible label applied to the dropdown toggle button.
     */
    'aria-label'?: string;
    /**
     * The button title. This may be also a node, like a <span> or a <FormattedMessage>.
     */
    title: string | React.ReactNode;
    /**
     * Defined weather or not the menu is rendered.
     * Use this to control the component from the outside.
     *
     * @default undefined
     */
    open?: boolean;
    /**
     * Defines whether the dropdown opens above or below.
     * Set it to "true" additionally disables the automatic position feature.
     *
     * @default false
     */
    dropup?: boolean;
    /**
     * Defines whether the dropdown opens right aligned to the dropdown or not.
     */
    pullRight?: boolean;
    /**
     * Defines how large the button will be rendered.
     *
     * Possible values are: `xs`, `sm`, `md`, `lg`
     *
     * @default 'md'
     */
    bsSize?: BUTTON_SIZE;
    /**
     * Defines the button color.
     *
     * Possible values are: `default`, `primary`, `secondary`, `info`, `warning`, `danger`, `success`, `muted`
     *
     * @default 'default'
     */
    bsStyle?: BUTTON_STYLE;
    /**
     * Defines the variation of the button design.
     *
     * Possible values are: `link`, `link-inline`, `outline`, `action`
     */
    variant?: BUTTON_VARIANT;
    /**
     * Specify the toggle element type.
     * It supports the following types: "button" | "tag" | "label"
     *
     * @default 'button'
     */
    toggleButtonType?: DropdownToggleButtonType;
    /**
     * Optional prop to defines whether the dropdown title is icon only which
     * applies different padding so the button is a square.
     *
     * @default false
     */
    iconOnly?: boolean;
    /**
     * Optional rioglyph icon name forwarded to the underlying button toggle.
     */
    iconName?: string;
    /**
     * Defines whether the caret is shown or not.
     *
     * @default false
     */
    noCaret?: boolean;
    /**
     * Defines whether the dropdown-toggle (with caret) should be in a separate button.
     *
     * @default false
     */
    splitButton?: boolean;
    /**
     * Renders the dropdown into a dedicated react portal
     *
     * @default false
     */
    usePortal?: boolean;
    /**
     * Items to display in the dropdown menu. If you use a custom dropdown you can skip this prop.
     */
    items?: MenuItem[];
    /**
     * Disables the dropdown button.
     *
     * @default false
     */
    disabled?: boolean;
    /**
     * Callback for splitButton label button click.
     */
    onLabelButtonClick?: () => void;
    /**
     * Callback for when the toggle button was clicked to open it.
     * @param event
     * @returns
     */
    onOpen?: (event: DropdownToggleEvent<T>) => void;
    /**
     * Callback for when the toggle button was clicked to close it.
     * @returns
     */
    onClose?: () => void;
    /**
     * Allows to pass in custom dropdown menu content.
     */
    customDropdown?: React.ReactNode;
    /**
     * Define custom popper.js configuration for dropdown placement and modifiers.
     */
    popperConfig?: object;
    /**
     * Additional classes to be set on the dropdown-toggle button.
     */
    toggleClassName?: string;
    /**
     * Additional classes to be set on the dropdown.
     */
    dropdownClassName?: string;
    /**
     * Additional classes to be set to the wrapper element.
     */
    className?: string;
};
declare const ButtonDropdown: React.ForwardRefExoticComponent<ButtonDropdownProps<"button"> & {
    children?: React.ReactNode | undefined;
} & React.RefAttributes<HTMLButtonElement>>;
export default ButtonDropdown;
