import type { AriaAttributes, HTMLAttributes } from 'react';
import React from 'react';
import type { CommonProps } from '../../internal/CommonWrapper';
import type { TGetRootNode } from '../../lib/rootNode';
import type { SizeProp } from '../../lib/types/props';
import type { MenuContextType } from '../../internal/Menu/MenuContext';
export type MenuItemState = null | 'hover' | 'selected' | void;
export interface MenuItemProps extends Pick<AriaAttributes, 'aria-describedby' | 'aria-label'>, Pick<HTMLAttributes<HTMLElement>, 'id'>, Omit<CommonProps, 'children'> {
    /** Добавляет отступ иконке.
     * @ignore */
    _enableIconPadding?: boolean;
    /** Добавляет описание для элемента меню. */
    comment?: React.ReactNode;
    /** Делает компонент недоступным. */
    disabled?: boolean;
    /** Добавляет иконку элементу меню. */
    icon?: React.ReactElement<any>;
    /**
     * Меняет цвет текста на синий.
     * @deprecated
     */
    link?: boolean;
    /** Задает размер контрола. */
    size?: SizeProp;
    /** @ignore */
    loose?: boolean;
    /** @ignore */
    state?: MenuItemState;
    /** Задает функцию, которая вызывается при клике. */
    onClick?: (event: React.SyntheticEvent<HTMLElement>) => void;
    /** Задает функцию, которая вызывается при наведении мышкой (событие `onmouseenter`). */
    onMouseEnter?: React.MouseEventHandler;
    /** Задает функцию, которая вызывается при уходе мышки с объекта (событие `onmouseleave`). */
    onMouseLeave?: React.MouseEventHandler;
    /** @ignore */
    children?: React.ReactNode | ((state: MenuItemState) => React.ReactNode);
    /** Задает HTML-атрибут `target`. */
    target?: React.AnchorHTMLAttributes<HTMLAnchorElement>['target'];
    /** Задает HTML-атрибут `title`. */
    title?: React.AnchorHTMLAttributes<HTMLAnchorElement>['title'];
    /** Задает HTML-атрибут `href` - адрес, на который следует перейти. */
    href?: React.AnchorHTMLAttributes<HTMLAnchorElement>['href'];
    /** Задает HTML-атрибут `rel`. Для внешних ссылок аттрибут rel по умолчанию равен "noopener noreferrer". */
    rel?: React.AnchorHTMLAttributes<HTMLAnchorElement>['rel'];
    /** Заменяет корневой элемент, на компонент переданный в проп.
     * По умолчанию корневой элемент рендерится как `button`. <br />Если передан `href`, то вместо `button` рендерится `a`. */
    component?: React.ComponentType<any>;
    /** Запрещает выделение и выбор данного пункта меню. */
    isNotSelectable?: boolean;
    /** Устанавливает стиль для отображения в мобильной версии. */
    isMobile?: boolean;
    /** @ignore */
    scrollIntoView?: boolean;
}
export declare const MenuItemDataTids: {
    readonly root: "MenuItem__root";
    readonly content: "MenuItem__content";
    readonly comment: "MenuItem__comment";
};
/**
 * `MenuItem` - это вложенный компонент, задающий базовые стили для элемента меню и позволяющий навигироваться по элементам меню с помощью клавиатуры.
 *
 * Сущности в которых может быть использован `MenuItem`: DropdownMenu, Kebab, TooltipMenu и Select.
 */
export declare class MenuItem extends React.Component<MenuItemProps> {
    static __KONTUR_REACT_UI__: string;
    static displayName: string;
    static __MENU_ITEM__: boolean;
    state: {
        iconOffsetTop: number;
        highlighted: boolean;
    };
    private theme;
    private mouseEntered;
    getRootNode: TGetRootNode;
    private setRootNode;
    private rootRef;
    private contentRef;
    static contextType: React.Context<MenuContextType>;
    context: MenuContextType;
    render(): React.JSX.Element;
    componentDidMount(): void;
    componentWillUnmount(): void;
    componentDidUpdate(prevProps: Readonly<MenuItemProps>): void;
    highlight: () => void;
    unhighlight: () => void;
    select: (event: React.SyntheticEvent<HTMLElement>) => void;
    isEnabled: () => boolean;
    navigate: () => void;
    private getRootSizeClassName;
    private getIconSizeClassName;
    private getWithIconSizeClassName;
    private renderMain;
    private get activeState();
    private get isHover();
    private get isSelected();
    private handleMouseEnterFix;
    private handleMouseLeave;
    private handleClick;
    private setRootRef;
    private getComponent;
    private hasIconAmongItems;
}
export declare const isMenuItem: (child: React.ReactNode) => child is React.ReactElement<any, string | React.JSXElementConstructor<any>>;
