import type { AriaAttributes, HTMLAttributes } from 'react';
import React from 'react';
import type { PopupMenuProps } from '../../internal/PopupMenu';
import type { PopupPositionsType } from '../../internal/Popup';
import type { CommonProps } from '../../internal/CommonWrapper';
import type { TGetRootNode } from '../../lib/rootNode';
export interface DropdownMenuProps extends Pick<AriaAttributes, 'aria-label'>, Pick<HTMLAttributes<HTMLElement>, 'id'>, Pick<PopupMenuProps, 'onOpen' | 'onClose' | 'popupMenuId' | 'preventIconsOffset'>, CommonProps {
    /** Максимальная высота меню */
    menuMaxHeight?: React.CSSProperties['maxWidth'];
    /** Ширина меню */
    menuWidth?: React.CSSProperties['width'];
    /** Ширина caption */
    width?: React.CSSProperties['width'];
    /**
     * Элемент или функция возвращающая элемент,
     * если передана, используется вместо `caption`,
     * в таком случае управлять открытием и закрытием меню
     * придется в этой функции
     */
    caption: PopupMenuProps['caption'];
    /**
     * Произвольный элемент, который будет отрендерен в шапке меню.
     *
     * _Примечание_: контрол MenuHeader передаётся только в `children` меню-контролов. Не стоит передавать `MenuHeader` в `header`.
     */
    header?: React.ReactNode;
    /**
     * Произвольный элемент, который будет отрендерен в подвале меню.
     *
     * Перед элементом переданным в `footer` будет отрендерен MenuSeparator.
     */
    footer?: React.ReactNode;
    /**
     *  Список позиций доступных для расположения выпадашки относительно `caption`.
     *
     * Если во всех позициях выпадашка вылезает за пределы `viewport`, будет использована первая из этого списка.
     *
     * **Возможные значения**: `top left`, `top center`, `top right`, `right top`, `right middle`, `right bottom`, `bottom left`, `bottom center`, `bottom right`, `left top`, `left middle`, `left bottom`
     * @default ['bottom left', 'bottom right', 'top left', 'top right']
     */
    positions?: PopupPositionsType[];
    /**
     * Не показывать анимацию
     */
    disableAnimations?: boolean;
    /** @ignore */
    corners?: React.CSSProperties;
}
type DefaultProps = Required<Pick<DropdownMenuProps, 'disableAnimations' | 'positions'>>;
/**
 * Выпадающее меню `DropdownMenu` раскрывается по клику на переданный в `caption` элемент.
 */
export declare class DropdownMenu extends React.Component<DropdownMenuProps> {
    static __KONTUR_REACT_UI__: string;
    static displayName: string;
    static defaultProps: DefaultProps;
    private getProps;
    private popupMenu;
    getRootNode: TGetRootNode;
    private setRootNode;
    constructor(props: DropdownMenuProps);
    render(): React.JSX.Element;
    renderMain(): React.JSX.Element | null;
    open: () => void;
    close: () => void;
    private refPopupMenu;
}
export {};
