import type { GlobalObject } from '../../lib/globalObject.js';
import type { PopupPositionsType } from './Popup.js';
export interface Rect {
    top: number;
    left: number;
    width: number;
    height: number;
}
export interface Offset {
    top: number;
    left: number;
}
export interface PositionObject {
    direction: string;
    align: string;
}
declare function getPositionObject(position: string): PositionObject;
declare function getElementAbsoluteRect(element: Element): Rect;
declare function isAbsoluteRectFullyVisible(coordinates: Offset, popupRect: Rect, globalObject: GlobalObject): boolean;
/** Может стать полностью видимым после прокрутки в область видимости */
declare function canBecomeFullyVisible(positionName: PopupPositionsType, coordinates: Offset, globalObject: GlobalObject): boolean;
/** Прямоугольник вьюпорта в координатах документа (абсолютных) */
declare function getViewportAbsoluteRect(globalObject: GlobalObject): Rect;
export interface OverflowEdges {
    top: boolean;
    bottom: boolean;
    left: boolean;
    right: boolean;
}
/** Какие стороны попапа (с заданными координатами) выходят за пределы вьюпорта */
declare function getOverflowEdges(coordinates: Offset, popupRect: Rect, globalObject: GlobalObject): OverflowEdges;
/** Количество сторон, по которым попап выходит за вьюпорт (0–4) */
declare function getOverflowCount(overflow: OverflowEdges): number;
/** Предпочтительное направление по вертикали при переполнении */
declare function getPreferredDirection(overflow: OverflowEdges, defaultPosition: PopupPositionsType): string;
/**
 * Упорядоченный список кандидатов для fallback-позиции: при горизонтальном переполнении
 * сначала позиции с нужным align (в т.ч. из pinnablePositions), затем по direction и positions.
 */
declare function getOrderedFallbackCandidates(positions: Readonly<PopupPositionsType[]>, overflow: OverflowEdges, preferredDirection: string, preferredAlignOrder: string[], pinnablePositions: Readonly<PopupPositionsType[]>): PopupPositionsType[];
export declare const PopupHelper: {
    getPositionObject: typeof getPositionObject;
    getElementAbsoluteRect: typeof getElementAbsoluteRect;
    isFullyVisible: typeof isAbsoluteRectFullyVisible;
    canBecomeFullyVisible: typeof canBecomeFullyVisible;
    getViewportAbsoluteRect: typeof getViewportAbsoluteRect;
    getOverflowEdges: typeof getOverflowEdges;
    getOverflowCount: typeof getOverflowCount;
    getPreferredDirection: typeof getPreferredDirection;
    getOrderedFallbackCandidates: typeof getOrderedFallbackCandidates;
};
export {};
