export interface Position {
    bottom?: number;
    left?: number;
    right?: number;
    top?: number;
}
export interface CalculatePositionParams {
    allowOutOfBounds?: boolean;
    boundariesElement?: HTMLElement;
    minPopupMargin?: number;
    offset: number[];
    placement: [string, string];
    popup?: HTMLElement;
    rect?: DOMRect;
    stick?: boolean;
    target?: HTMLElement;
    scrollableElement?: HTMLElement | false;
}
/**
 * Decides if given fitHeight fits below or above the target taking boundaries into account.
 */
export declare function getVerticalPlacement(target: HTMLElement, boundariesElement: HTMLElement, fitHeight?: number, alignY?: string, forcePlacement?: boolean, preventOverflow?: boolean): string;
/**
 * Decides if given fitWidth fits to the left or to the right of the target taking boundaries into account.
 */
export declare function getHorizontalPlacement(target: HTMLElement, boundariesElement: HTMLElement, fitWidth?: number, alignX?: string, forcePlacement?: boolean, preventOverflow?: boolean): string;
export declare function calculatePlacement(target: HTMLElement, boundariesElement: HTMLElement, fitWidth?: number, fitHeight?: number, alignX?: string, alignY?: string, forcePlacement?: boolean, preventOverflow?: boolean): [string, string];
/**
 * Calculates relative coordinates for placing popup along with the target.
 * Uses placement from calculatePlacement.
 */
export declare function calculatePosition({ placement, target, popup, offset, stick, allowOutOfBounds, rect, boundariesElement, minPopupMargin, scrollableElement, }: CalculatePositionParams): Position;
/**
 * Traverse DOM Tree upwards looking for popup parents with "overflow: scroll".
 */
export declare function findOverflowScrollParent(popup: HTMLElement | null): HTMLElement | false;
export { isBody } from './isBody';
export { isTextNode } from './isTextNode';
export { validatePosition } from './validatePosition';
