import { ReactNode, RefObject } from 'react';
import { Instance, Modifier, VirtualElement } from '@popperjs/core';
import { Direction } from './directions';
import { Boundary } from './types';
export declare type PopupHookProps = {
    /**
     * Ссылка на DOM-элемент относительно которого нужно показать попап
     */
    anchorRef: RefObject<HTMLElement | VirtualElement>;
    /**
     * Содержимое попапа
     */
    children?: ReactNode;
    /**
     * Значение относительно краев попапа за которое хвостик не должен вылезать
     */
    arrowMarginThreshold?: number;
    /**
     * Направление для раскрытия попапа
     */
    placement?: Direction | Direction[];
    /**
     * Включает логику расчетов
     */
    enabled?: boolean;
    /**
     * Значение относительно краев контейнера при котором нужно сменить направление
     */
    marginThreshold?: number;
    /**
     * Пользовательский набор модификаторов
     */
    modifiers?: Partial<Modifier<any, any>>[];
    /**
     * Отступы попапа относительно двух направлений
     */
    offset?: [number | undefined, number | undefined];
    /**
     * Отступ хвостика относительно основного направления
     */
    unsafe_tailOffset?: number;
    /**
     * Закрепляет положение попапа после открытия
     */
    motionless?: boolean;
    /**
     * Ссылка на элемент или ссылки на элементы, в которые должен вписываться попап
     */
    boundary?: Boundary;
};
export declare type PopupHookResult = {
    /**
     * Инстанс popper
     */
    popper: Instance | null;
    /**
     * Функция устанавливающая ссылку на хвостик
     */
    setArrowRef: (node: HTMLElement | null) => void;
    /**
     * Функция устанавливающая ссылку на попап
     */
    setPopupRef: (node: HTMLElement | null) => void;
};
/**
 * Реакт-хук, реализующий позиционирование попапа при помощи popper.
 */
export declare function usePopper(props: PopupHookProps): PopupHookResult;
