import { AfterViewInit, ChangeDetectorRef, ElementRef, EventEmitter, OnDestroy, OnChanges, SimpleChanges } from "@angular/core";
export declare type PlacementType = "TopLeft" | "TopCenter" | "TopRight" | "BottomLeft" | "BottomCenter" | "BottomRight" | "LeftTop" | "LeftCenter" | "LeftBottom" | "RightTop" | "RightCenter" | "RightBottom";
export declare class SmartPopupComponent implements AfterViewInit, OnDestroy, OnChanges {
    private ref;
    _placement: PlacementType;
    _offset: number;
    _autoAdjust: "yes" | "no";
    triggerElementRef: HTMLElement | null;
    loading: boolean;
    _open: boolean;
    _width: number | null;
    _height: number | null;
    readonly placementInfo: {
        placement: "top" | "left" | "right" | "bottom";
        position: "start" | "center" | "end";
    };
    readonly offset: number;
    readonly autoAdjust: boolean;
    openChange: EventEmitter<boolean>;
    contentLoad: EventEmitter<void>;
    internalTriggerElement: ElementRef<HTMLElement>;
    popupElement: ElementRef<HTMLDivElement>;
    currentTriggerElement: HTMLElement | null;
    constructor(ref: ChangeDetectorRef);
    ngAfterViewInit(): void;
    ngOnChanges(changes: SimpleChanges): void;
    ngOnDestroy(): void;
    updateTriggerElement(): void;
    FIXED_CONTAINER_ID: string;
    fixedContainerEl: HTMLElement;
    getFixedContainer(): HTMLElement;
    opened: "yes" | "no";
    positioning: "yes" | "no";
    actualPlacement: "top" | "left" | "right" | "bottom";
    actualPosition: "start" | "center" | "end";
    open(triggerElement?: HTMLElement): void;
    private openPopup;
    close(): void;
    toggle(): void;
    onClickTrigger(event: MouseEvent): void;
    onClickOutside: (event: MouseEvent) => void;
    onWindowScroll: (event: Event) => void;
    onPopupWheel(event: WheelEvent): void;
    onPopupScroll(event: Event): void;
    private calculateAndSetPosition;
    updatePopupPosition(): void;
    calculateOptimalPlacement(triggerRect: DOMRect | ClientRect, popupRect: DOMRect | ClientRect, viewportWidth: number, viewportHeight: number): {
        placement: "top" | "left" | "right" | "bottom";
        position: "start" | "center" | "end";
    };
    private calculatePositionCoordinates;
    setPopupPosition(triggerRect: DOMRect | ClientRect, popupRect: DOMRect | ClientRect, placement: "top" | "left" | "right" | "bottom", position: "start" | "center" | "end", popupSize?: {
        width: number;
        height: number;
    }): void;
    onWindowResize(): void;
}
