import { Rect } from '../../esl-utils/dom/rect';
import type { Point } from '../../esl-utils/dom/point';
export type DimensionNameType = 'width' | 'height';
export type PlacementType = 'top' | 'left' | 'bottom' | 'right';
export type AlignmentType = '' | 'start' | 'end';
export type PositionType = '' | PlacementType | AlignmentType | `${PlacementType} ${AlignmentType}`;
export type PositionOriginType = 'inner' | 'outer';
export type PlacedAtType = PlacementType | `${PlacementType}-inner`;
export interface PopupPositionValue {
    placedAt: PlacedAtType;
    popup: Rect;
    arrow: Point;
}
export interface IntersectionRatioRect {
    top?: number;
    left?: number;
    right?: number;
    bottom?: number;
}
export interface PopupPositionConfig {
    placement: PlacementType;
    alignment?: AlignmentType;
    hasInnerOrigin: boolean;
    behavior: string;
    marginTether: number;
    offsetTetherRatio: number;
    offsetPlacement: number;
    intersectionRatio: IntersectionRatioRect;
    arrow: Rect;
    element: Rect;
    inner: Rect;
    outer: Rect;
    trigger: Rect;
    isRTL: boolean;
}
/**
 * Checks that the position along the horizontal axis
 * @param position - name of position
 */
export declare function isOnHorizontalAxis(position: PositionType | PlacementType): boolean;
/**
 * Calculates popup and arrow popup positions.
 * @param cfg - popup position config
 * */
export declare function calcPopupPosition(cfg: PopupPositionConfig): PopupPositionValue;
