import React, { ReactNode } from 'react';
export declare type PopoverAlign = 'left' | 'right';
export declare const PopoverMenu: React.FunctionComponent<{
    children: ReactNode;
    onClose: () => void;
    /** Set the width in pixels */
    width?: number | undefined;
    position?: TriggerPosition;
    align?: "left" | "right" | undefined;
}> & {
    Options: React.FunctionComponent<{
        children: ReactNode;
        padding?: boolean | undefined;
    }>;
    Option: React.FunctionComponent<{
        children: ReactNode;
        testId?: string | undefined;
        onChange?: (() => void) | undefined;
    }>;
    Container: React.FunctionComponent<{
        children: ReactNode;
        onClose: () => void;
        /** Set the width in pixels */
        width?: number | undefined;
        position?: TriggerPosition;
        align?: "left" | "right" | undefined;
    }>;
    DisplayWrapper: React.FunctionComponent<{
        children?: ReactNode;
        width?: number | undefined;
    }>;
};
export declare function getPopoverPosition(width: number, position?: TriggerPosition, align?: PopoverAlign): React.CSSProperties;
export declare type TriggerPosition = {
    left: number;
    top: number;
    width: number;
    height: number;
    topOverride?: number;
} | undefined;
export declare function usePopover<T extends HTMLElement>(): {
    ref: React.RefObject<T>;
    show: boolean;
    position: TriggerPosition;
    close: () => void;
    open: () => void;
};
