import { CaretDir, CaretOffset, ClientRect, Coordinates, Dimensions, EdgeShift, MainDirections, Offset, PopoverDir, Window } from './positioningTypes';
export declare const CARET_HEIGHT = 4;
export declare const BORDER_RADIUS = 8;
export declare const CARET_WIDTH = 12;
export declare const getContainerNode: ({ scrollBoundaryContainerRef, initialPositionRef, }: {
    scrollBoundaryContainerRef: HTMLElement | null | undefined;
    initialPositionRef: HTMLElement | null | undefined;
}) => HTMLElement | null | undefined;
/**
 * Controller
 */
export declare const getTriggerRect: ({ anchor, positionRelativeToAnchor, scrollBoundaryContainerRef, }: {
    anchor: HTMLElement;
    positionRelativeToAnchor: boolean;
    scrollBoundaryContainerRef: HTMLElement | null | undefined;
}) => {
    relativeOffset: Coordinates | null | undefined;
    triggerBoundingRect: ClientRect | null | undefined;
};
/**
 * Determines the main direction the popover opens
 */
export declare function getPopoverDir({ popoverSize, idealDirection, triggerRect, windowSize, isScrollBoundaryContainer, }: {
    popoverSize: Dimensions;
    idealDirection: PopoverDir;
    triggerRect: ClientRect | null | undefined;
    windowSize: Window;
    isScrollBoundaryContainer?: boolean;
}): MainDirections;
/**
 * Determines the sub direction of how the popover is positioned within the main dir
 */
export declare function getCaretDir({ popoverSize, popoverDir, triggerRect, windowSize, }: {
    popoverSize: Dimensions;
    popoverDir: PopoverDir;
    triggerRect: ClientRect | null | undefined;
    windowSize: Window;
}): CaretDir;
/**
 * Calculates the amount the popover & caret need to shift over to align with designs
 */
export declare function calcEdgeShifts({ triggerRect, windowSize, isScrollBoundaryContainer, }: {
    triggerRect: ClientRect | null | undefined;
    windowSize: Window;
    isScrollBoundaryContainer: boolean;
}): {
    caret: Coordinates;
    popover: Coordinates;
};
/**
 * Calculates popover and caret offsets for styling
 */
export declare function adjustOffsets({ base, edgeShift, popoverSize, popoverDir, caretDir, triggerRect, isScrollBoundaryContainer, }: {
    base: {
        top: number;
        left: number;
    };
    edgeShift: EdgeShift;
    popoverSize: Dimensions;
    popoverDir: PopoverDir;
    caretDir: CaretDir;
    triggerRect: ClientRect | null | undefined;
    isScrollBoundaryContainer: boolean;
}): {
    caretOffset: CaretOffset;
    popoverOffset: Offset;
};
export declare function baseOffsets({ hasCaret, relativeOffset, popoverSize, popoverDir, triggerRect, windowSize, }: {
    hasCaret: boolean;
    relativeOffset: Coordinates | null | undefined;
    popoverSize: Dimensions;
    popoverDir: PopoverDir;
    triggerRect: ClientRect | null | undefined;
    windowSize: Window;
}): Offset;
