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;
    scrollableElement?: HTMLElement | false;
    stick?: boolean;
    target?: HTMLElement;
}
/**
 * Determines the optimal vertical placement ('top' or 'bottom') for a popup relative to a target element.
 * Decides if given fitHeight fits below or above the target taking boundaries into account.
 *
 * @param target - The target element to position the popup relative to
 * @param boundariesElement - The boundaries element that constrains the popup positioning
 * @param fitHeight - The desired height of the popup content
 * @param alignY - Forced alignment direction ('top' or 'bottom')
 * @param forcePlacement - Whether to force the placement to the alignY value
 * @param preventOverflow - Whether to prevent overflow by forcing bottom placement when space above is insufficient
 * @returns The optimal placement direction ('top' or 'bottom')
 */
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;
/**
 * Calculates the optimal placement for a popup element in both vertical and horizontal directions.
 *
 * @param target - The target element to position the popup relative to
 * @param boundariesElement - The boundaries element that constrains the popup positioning
 * @param fitWidth - The desired width of the popup content
 * @param fitHeight - The desired height of the popup content
 * @param alignX - Forced horizontal alignment direction
 * @param alignY - Forced vertical alignment direction
 * @param forcePlacement - Whether to force the placement to the specified alignment values
 * @param preventOverflow - Whether to prevent overflow by adjusting placement
 * @returns A tuple containing the vertical and horizontal placement directions
 */
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';
