import React from 'react';
import type { SizeProp } from '../../lib/types/props';
import type { PopupPositionsType, ShortPopupPositionsType } from '../../internal/Popup';
import type { Nullable } from '../../typings/utility-types';
import type { CommonProps } from '../../internal/CommonWrapper';
import type { TGetRootNode } from '../../lib/rootNode';
import type { InstanceWithAnchorElement } from '../../lib/InstanceWithAnchorElement';
import type { ReactUIFeatureFlags } from '../../lib/featureFlagsContext';
export type TooltipTrigger = 
/** Наведение на children и на тултип */
'hover'
/** Клик на children */
 | 'click'
/** Фокус на children */
 | 'focus'
/** Наведение на children и на тултип и фокус на children */
 | 'hover&focus'
/** Просто открыт */
 | 'opened'
/** Просто закрыт */
 | 'closed'
/** Наведение ТОЛЬКО на children, а не на тултип */
 | 'hoverAnchor'
/** Управление через публичные функции show и hide */
 | 'manual';
export interface TooltipProps extends CommonProps {
    /** Указывает элемент, относительно которого позиционировать тултип. */
    anchorElement?: HTMLElement;
    /** @ignore */
    children?: React.ReactNode;
    /** Задает HTML-атрибут class. */
    className?: string;
    /** Отображает крестик для закрытия тултипа. По-умолчанию крестик виден, если проп *trigger* не равен `hover` или `focus`. */
    closeButton?: boolean;
    /** Задает функцию, которая возвращает содержимое тултипа. Если функция вернула `null`, то тултип не показывается. */
    render?: Nullable<() => React.ReactNode>;
    /** Задает приоритетное расположение подсказки относительно текста. */
    pos?: ShortPopupPositionsType | PopupPositionsType;
    /** Задает размер тултипа.
     * @default 'small' */
    size?: SizeProp;
    /** Задает триггер открытия тултипа. */
    trigger?: TooltipTrigger;
    /** Задает хендлер, который вызывается при клике по крестику. */
    onCloseClick?: React.MouseEventHandler<HTMLElement>;
    /** Задает хендлер, который вызывается при клике по крестику или снаружи тултипа. */
    onCloseRequest?: (event?: Event | React.MouseEvent) => void;
    /** Задает хендлер, который вызывается при закрытии тултипа. */
    onClose?: () => void;
    /** Задает хендлер, который вызывается при открытии тултипа. */
    onOpen?: () => void;
    /** Задает список позиций, которые тултип будет занимать.
     * Если положение тултипа в определенной позиции будет выходить за край экрана, то будет выбрана следующая позиция.
     * Обязательно должен включать позицию указанную в `pos`. */
    allowedPositions?: PopupPositionsType[];
    /** Отключает анимацию.
     * @default false */
    disableAnimations?: boolean;
    /** Явно указывает, что вложенные элементы должны быть обёрнуты в `<span/>`.
     * Используется для корректного позиционирования тултипа при двух и более вложенных элементах.
     * _Примечание_: при **двух и более** вложенных элементах обёртка будет добавлена автоматически. */
    useWrapper?: boolean;
    /** Устанавливает задержку в миллисекундах до появления лоадера. */
    delayBeforeShow?: number;
}
export interface TooltipState {
    opened: boolean;
    focused: boolean;
}
export declare const TooltipDataTids: {
    readonly root: "Tooltip__root";
    readonly content: "Tooltip__content";
    readonly crossIcon: "Tooltip__crossIcon";
};
type DefaultProps = Required<Pick<TooltipProps, 'trigger' | 'disableAnimations' | 'useWrapper' | 'delayBeforeShow'>>;
/**
 * `Tooltip` — это подсказка, которая объясняет состояние контрола или даёт контекстную справку.
 *
 * Открывается по клику, фокусом на элемент или по наведению. В отличие от `Hint`, `Tooltip` может содержать
 * изображения, кнопки, ссылки и прочие интерактивные элементы.
 */
export declare class Tooltip extends React.PureComponent<TooltipProps, TooltipState> implements InstanceWithAnchorElement {
    static __KONTUR_REACT_UI__: string;
    static displayName: string;
    static defaultProps: DefaultProps;
    private getProps;
    private validateProps;
    static delay: number;
    private static triggersWithoutCloseButton;
    state: TooltipState;
    private theme;
    private size;
    private sizeVariables;
    featureFlags: ReactUIFeatureFlags;
    private hoverTimeout;
    private contentElement;
    private clickedOutside;
    getRootNode: TGetRootNode;
    private setRootNode;
    private popupRef;
    getAllowedPositions(): string[];
    componentDidMount(): void;
    componentDidUpdate(): void;
    componentWillUnmount(): void;
    render(): React.JSX.Element;
    renderContent: () => React.JSX.Element | null;
    renderCloseButton(): React.JSX.Element | null;
    getAnchorElement: () => Nullable<Element>;
    /**
     * Программно открывает тултип.
     * <p>Не действует если проп *trigger* `'opened'` или `'closed'`.</p>
     * @public
     */
    show(): void;
    /**
     * Программно закрывает тултип.
     * <p>Не действует если проп *trigger* `'opened'` или `'closed'`.</p>
     * @public
     */
    hide(): void;
    private renderMain;
    private renderPopup;
    private getPositions;
    private refContent;
    private getPopupAndLayerProps;
    private open;
    private close;
    private clearHoverTimeout;
    private handleMouseEnter;
    private handleMouseLeave;
    private handleClick;
    private handleClickOutsideAnchor;
    private isClickOutsideContent;
    private handleFocus;
    private handleBlur;
    private handleCloseButtonClick;
    private getSizeVariables;
}
export {};
