import React from 'react';
import { Theme } from '../cn';
import { PopupProps } from '../popup/popup';
export declare type DropdownProps = {
    /**
     * Тип компонента
     */
    switcherType?: 'link' | 'button';
    /**
     * Текст кнопки компонента
     */
    switcherText?: React.ReactNode;
    /**
     * Компонент [Popup](#!/Popup)
     */
    popupContent?: React.ReactNode;
    /**
     * Свойства для компонента [Popup](#!/Popup)
     */
    popupProps?: PopupProps;
    /**
     * Управление возможностью отображать попап при наведении курсора
     */
    mode?: 'hover' | 'normal';
    /**
     * Управление возможностью открытия попапа
     */
    disabled?: boolean;
    /**
     * Управление состоянием открыт/закрыт попапа
     */
    opened?: boolean;
    /**
     * Только для switcherType='button'. Тип переключателя для кнопки, 'check'
     */
    togglable?: 'button' | 'check';
    /**
     * Размер компонента
     */
    size?: 's' | 'm' | 'l' | 'xl';
    /**
     * Дочерние элементы `Dropdown`
     */
    children?: React.ReactNode;
    /**
     * Тема компонента
     */
    theme?: Theme;
    /**
     * Дополнительный класс
     */
    className?: string;
    /**
     * Идентификатор компонента в DOM
     */
    id?: string;
    /**
     * Обработчик клика по кнопке компонента
     */
    onSwitcherClick?: (isOpened?: boolean) => void;
    /**
     * Обработчик события наведения курсора на кнопку компонента
     */
    onSwitcherMouseEnter?: (event?: React.MouseEvent<any>) => void;
    /**
     * Обработчик события снятия курсора с кнопки компонента
     */
    onSwitcherMouseLeave?: (event?: React.MouseEvent<any>) => void;
    /**
     * Обработчик события наведения курсора на попап
     */
    onPopupMouseEnter?: (event?: React.MouseEvent<any>) => void;
    /**
     * Обработчик события снятия курсора с попапа
     */
    onPopupMouseLeave?: (event?: React.MouseEvent<any>) => void;
    /**
     * Обработчик события клика попапа за пределами попапа
     */
    onPopupClickOutside?: (event?: React.MouseEvent<any>) => void;
    /**
     * Идентификатор для систем автоматизированного тестирования
     */
    'data-test-id'?: string;
};
/**
 * Компонент «выпадашка»: ссылка или кнопка. По клику показывается Popup.
 */
export declare class Dropdown extends React.PureComponent<DropdownProps> {
    protected cn: (this: void | {
        props?: Record<string, unknown>;
    }, elementNameOrMods?: string | {
        [key: string]: string | number | boolean;
    }, mods?: {
        [key: string]: string | number | boolean;
    }) => string;
    static defaultProps: Partial<DropdownProps>;
    state: {
        opened: boolean;
        switcherHovered: boolean;
        popupHovered: boolean;
    };
    private popup;
    private switcher;
    componentDidMount(): void;
    render(): JSX.Element;
    renderSwitcher(): JSX.Element;
    renderSwitcherButton(content: any, opened: any): JSX.Element;
    renderSwitcherLink(content: any): JSX.Element;
    renderPopup(): JSX.Element;
    private handleSwitcherClick;
    private handleSwitcherMouseEnter;
    private handleSwitcherMouseLeave;
    private handlePopupMouseEnter;
    private handlePopupMouseLeave;
    private handlePopupClickOutside;
}
declare const _default: React.ForwardRefExoticComponent<DropdownProps & React.RefAttributes<Dropdown>> & Dropdown;
export default _default;
