import { TemplateRef, ViewContainerRef, OnInit, OnDestroy, Renderer2, EventEmitter } from '@angular/core';
import Popper from 'popper.js';
export declare type PopupPlacement = 'top' | 'right' | 'bottom' | 'left' | 'top-start' | 'top-end' | 'bottom-start' | 'bottom-end';
export declare type PopupStatus = 'visible' | 'hidden';
/**
 * Primitive directive that popups a container using PopperJS
 *
 * @export
 */
export declare class PopupContainerDirective implements OnInit, OnDestroy, OnInit {
    private templateRef;
    private viewContainer;
    private document;
    private renderer;
    /**
     *  Global reference to the currently displayed popup; only
     *  one popup directive can be in `show` state at a given time.
     *
     * @memberof PopupContainerDirective
     */
    static GlobalPopupRef?: PopupContainerDirective;
    /**
     * TemplateRef of container to popup
     *
     */
    popup: TemplateRef<any>;
    /**
     * Popper options
     *
     * @memberof PopupContainerDirective
     */
    popperOptions?: Popper.PopperOptions;
    /**
     * Template View Reference
     *
     * @memberof PopupContainerDirective
     */
    private templateViewRef;
    /**
     * Popup View Reference (container)
     *
     * @memberof PopupContainerDirective
     */
    private popupViewRef?;
    /**
     * Popper Reference
     *
     * @memberof PopupContainerDirective
     */
    private popperRef?;
    /**
     * Close-to-click Subscription. This allows us to close the menu when you click on the body.
     * We attach it when the menu is open and detach it on close, to limit the lifetime of the click handler
     * which helps with performance on a page with many popup containers
     *
     * @memberof PopupContainerDirective
     */
    private globalCloseSubscription?;
    /**
     * Creates an instance of PopupContainerDirective.
     * @param templateRef Reference to the popup template
     * @param viewContainer Reference to the view container
     * @param document Reference to Document
     * @memberof PopupContainerDirective
     */
    constructor(templateRef: TemplateRef<any>, viewContainer: ViewContainerRef, document: any, renderer: Renderer2);
    /**
     * Angular onInit lifecycle hook
     * @see https://angular.io/guide/lifecycle-hooks
     */
    ngOnInit(): void;
    /**
     * Angular onDestroy lifecycle hook. Close and delete references. Unsubscribe observables
     * @see https://angular.io/guide/lifecycle-hooks
     */
    ngOnDestroy(): void;
    /**
     * Emit the {@link PopupStatus} when it changes
     */
    popperStatusChange: EventEmitter<PopupStatus>;
    /**
     * Displays the templateRef as a popup
     *
     * @memberof PopupContainerDirective
     */
    show(): void;
    /**
     * Hides the templateRef
     *
     * @memberof PopupContainerDirective
     */
    hide(): void;
    /**
     * Updates the popup container position
     */
    update(): void;
    fixPosition(minWidthNone?: boolean, appendToBody?: boolean): void;
}
