import React from 'react';
import { Alert } from './popups/Alert';
import { Confirm } from './popups/Confirm';
export declare const popupContainerId: string;
declare type NotificationRequiredParams = {
    messageText: React.ReactNode;
};
declare type GetComponentProps<T> = T extends React.ComponentType<infer P> | React.Component<infer P> ? P : never;
export declare function showPopup<C = React.ReactNode>(componentOrElement: C, props?: GetComponentProps<C> | any, popupContext?: object): void;
export declare function closePopup(): void;
export declare function showAlert(params: string | GetComponentProps<Alert>): void;
export declare function showConfirmation(params: GetComponentProps<Confirm>): void;
/**
 * Show "toast" notification at the top of the page
 *
 * @example Pre-rendered component
 * showNotification(
 *   <Notification success>
 *     {translate(langCommon.DONE)}
 *   </Notification>
 * );
 *
 * @example Props for Notification component
 * showNotification({
 *   messageText: translate(langCommon.DONE),
 *   success: true
 * });
 *
 * @example Custom component with props
 * showNotification(Panel, {
 *   messageText: translate(langCommon.DONE)
 * });
 *
 * @example Default notification
 * showNotification(translate(langCommon.DONE));
 *
 * @example Error notification
 * showNotification(translate(langCommon.DONE), 'error');
 *
 * @param {Object|string} componentOrElement - Component, Element, Notification properties or text message
 * @param {Object|string} props - Properties for Component or type of notification if componentOrElement is a text message
 */
export declare function showNotification<C = React.ReactNode>(componentOrElement: C | string | NotificationRequiredParams, props?: GetComponentProps<C> | any): void;
export declare function getElementHeight(element: Node | any, withMargin?: boolean): void;
export declare function getElementMargin(node: any): {
    marginTop: number;
    marginBottom: number;
    marginLeft: number;
    marginRight: number;
};
export declare function getElementPadding(node: any): {
    paddingTop: number;
    paddingBottom: number;
    paddingLeft: number;
    paddingRight: number;
};
export declare function getElementBorder(node: any): {
    borderTop: number;
    borderBottom: number;
    borderLeft: number;
    borderRight: number;
};
export declare function scrollToTop(): void;
/**
 * Scrolls window to the elements node position
 * @param {React.Element} element || DOM node
 */
export declare function scrollToNode(element: any): void;
export declare function getScrollbarWidth(): number;
export declare const restorePopupVisibility: ($container?: any) => void;
export {};
