import { RenderResult } from '@dojo/framework/core/interfaces';
export declare type PopupPosition = 'above' | 'below' | 'left' | 'right';
export interface BasePopupProperties {
    /** Preferred position where the popup should render relative to the provided position (defaults to "below"). If the popup does not have room to fully render in the preferred position it will switch to the opposite side. */
    position?: PopupPosition;
    /** If the underlay should be visible (defaults to false) */
    underlayVisible?: boolean;
    /** Callback triggered when the popup is closed */
    onClose?(): void;
}
export interface PopupProperties extends BasePopupProperties {
    /** The Y position on the page where the bottom of the popup should be if rendering "above" */
    yBottom: number;
    /** The Y position on the page where the popup should start if rendering "below" */
    yTop: number;
    /** The right boundary of the popup position */
    xRight: number;
    /** The left boundary for the popup position */
    xLeft: number;
    /** Whether the popup is currently open */
    open?: boolean;
}
export interface PopupChildren {
    (position: PopupPosition): RenderResult;
}
export declare const Popup: import("@dojo/framework/core/interfaces").OptionalWNodeFactory<{
    properties: PopupProperties & import("@dojo/framework/core/interfaces").WidgetProperties & {
        variant?: "default" | "inherit" | undefined;
    } & import("@dojo/framework/core/middleware/theme").ThemeProperties;
    children: string | number | boolean | import("@dojo/framework/core/interfaces").VNode | import("@dojo/framework/core/interfaces").WNode<any> | import("@dojo/framework/core/interfaces").DNode<any>[] | PopupChildren;
}>;
export default Popup;
