import { StyleInfo } from 'lit/directives/style-map.js';
/**
 * - (none) - the vertical position is the natural box layout position
 * - top - positions the target element so its top box's edge aligns with the top of the anchor element.
 * - bottom - positions the target element so its box's bottom edge aligns with the bottom of the anchor element.
 * - middle - positions the target element so its middle aligns with the middle of the anchor element
 * - auto - positions the element like `top` or `bottom` depending whether the contents can be rendered in the viewport
 */
export type VerticalAlignment = 'top' | 'bottom' | 'middle' | 'auto';
/**
 * - (none) - the horizontal position is the natural box layout position
 * - left - positions the target element so its box's left edge aligns with the left of the anchor element.
 * - right - positions the target element so its box's right edge aligns with the right of the anchor element.
 * - middle - positions the target element so its middle aligns with the middle of the anchor element
 * - auto - positions the element like `left` or `right` depending whether the contents can be rendered in the viewport
 */
export type HorizontalAlignment = 'left' | 'right' | 'middle' | 'auto';
export interface IPositioningOptions {
    /**
     * Vertical positioning of the element.
     * By default it does not compute any styles for vertical positioning.
     */
    vertical?: VerticalAlignment;
    /**
     * The offset in px to apply to the computed vertical position
     */
    verticalOffset?: number;
    /**
     * Horizontal positioning of the element.
     * By default it does not compute any styles for horizontal positioning.
     */
    horizontal?: HorizontalAlignment;
    /**
     * The offset in px to apply to the computed horizontal position
     */
    horizontalOffset?: number;
    /**
     * Affects the `horizontal` and `vertical` positioning so that the target element does not overlap with the anchor.
     * For example, when the `vertical` align is `top`, the top edge of the target will be rendered at the bottom
     * of the anchor down to the edge of the viewport.
     *
     * This is ignored when positioning for middle (either vertically or horizontally).
     */
    noOverlap?: boolean;
    /**
     * The target into which the target must fit into.
     * By default it is the `window`.
     */
    fitInto?: HTMLElement | Window;
    /**
     * When set it also adds `max-width` and `max-height` to the container
     * to match sizing of the fit container.
     */
    constrain?: boolean;
    /**
     * A left and right padding to add to the constrained element
     */
    constrainPaddingX?: boolean;
    /**
     * A top and bottom padding to add to the constrained element
     */
    constrainPaddingY?: number;
    /**
     * When set it adds the `width` set to the anchor's width.
     */
    matchAnchorWidth?: boolean;
}
/**
 * Positions an overlay relative to the anchor element.
 *
 * @param target The target element that has to be positioned relative to the anchor element
 * @param anchor The anchor element. It is used to anchor the position of the overlay.
 * @param options Positioning options.
 * @returns The list of styles to be used to position the target. Can be used with the `styleMap` directive.
 */
export declare function positionOverlay(target: HTMLElement, anchor: HTMLElement, options?: IPositioningOptions): StyleInfo;
//# sourceMappingURL=ElementPositioning.d.ts.map