import { PopupArrowMode, PopupArrowPlacement } from '../../../shared/types/popup';
export type PopupPositionProp = 'top' | 'top-left' | 'top-right' | 'bottom' | 'bottom-center' | 'bottom-left' | 'bottom-right' | 'left' | 'right';
/**
 * Acota el puntero al rectángulo del trigger en coordenadas de viewport.
 * Devuelve la esquina superior izquierda de un ancla 1×1 lógica dentro del trigger
 * (recorrido píxel a píxel cuando el trigger tiene tamaño entero en CSS px).
 */
export declare function clampClientPointForPopupAnchor(triggerRect: DOMRectReadOnly, clientX: number, clientY: number): {
    x: number;
    y: number;
};
/** Base del z-index del panel del popup en portal (`computePopupLayout`). */
export declare const POPUP_PANEL_Z_INDEX_BASE = 1000;
/**
 * z-index recomendado para `Modal` u otros overlays que deben quedar por encima del panel de `Popup`.
 * El panel usa `POPUP_PANEL_Z_INDEX_BASE + (offset % 100)` (típicamente 1000–1099).
 */
export declare const Z_INDEX_MODAL_ABOVE_POPUP = 1200;
/**
 * z-index del overlay de `Tooltip` / `InlineTooltip`: siempre por debajo del panel de `Popup`
 * (`POPUP_PANEL_Z_INDEX_BASE` + offset % 100, típicamente 1000–1099).
 */
export declare const Z_INDEX_TOOLTIP: number;
/**
 * Con `popoverArrow` manual, `align` debe desplazar el panel respecto al trigger.
 */
export declare function applyManualPopoverEdgeAlign(popoverArrow: PopupArrowMode, position: PopupPositionProp, left: number, top: number, triggerLeft: number, triggerTop: number, triggerWidth: number, triggerHeight: number, panelWidth: number, panelHeight: number): {
    left: number;
    top: number;
};
export type ComputePopupLayoutInput = {
    position: PopupPositionProp;
    offset: number;
    absolute: boolean;
    popoverArrow: PopupArrowMode;
    popupUniqueId: string;
    triggerRect: DOMRectReadOnly;
    popupRect: DOMRectReadOnly;
    /** Solo modo `absolute`: caja del trigger respecto al offset parent. */
    triggerOffsetBox: {
        top: number;
        left: number;
        width: number;
        height: number;
    };
};
export type ComputePopupLayoutResult = {
    popupStyle: {
        position: 'fixed' | 'absolute';
        top: string;
        left: string;
        zIndex: number;
    };
    arrowPlacement: PopupArrowPlacement | null;
};
/**
 * Calcula top/left del panel, z-index y colocación de flecha (misma semántica que el `usePopup` anterior).
 */
export declare function computePopupLayout(input: ComputePopupLayoutInput): ComputePopupLayoutResult;
/** Ventana, visualViewport y ancestros con overflow desplazable (scroll no sube al window). */
export declare function collectScrollRepositionTargets(trigger: HTMLElement | null): EventTarget[];
//# sourceMappingURL=popupPosition.d.ts.map