import { ElementRef, EventEmitter, OnDestroy, Renderer2, TemplateRef, Type } from "@angular/core";
import { IPopupable, PopupOptions, PopupService } from "../../service/popup.service";
import { AbstractJigsawViewBase } from "../../component/common";
export declare enum DropDownTrigger {
    click = 0,
    mouseenter = 1,
    mouseleave = 2,
    none = 3,
}
export declare class JigsawFloat extends AbstractJigsawViewBase implements OnDestroy {
    private _renderer;
    private _elementRef;
    private _popupService;
    private _disposePopup;
    private _removeWindowClickHandler;
    private _removePopupClickHandler;
    private _removeMouseOverHandler;
    private _removeMouseOutHandler;
    private _removeRefreshCallback;
    private _rollOutDenouncesTimer;
    private _rollInDenouncesTimer;
    private _$target;
    private _popupElement;
    readonly popupElement: HTMLElement;
    /**
     * $demo = float/target
     */
    jigsawFloatTarget: Type<IPopupable> | TemplateRef<any>;
    /**
     * $demo = float/option
     */
    jigsawFloatOptions: PopupOptions;
    /**
     * $demo = float/position
     */
    jigsawFloatPosition: 'bottomLeft' | 'bottomRight' | 'topLeft' | 'topRight' | 'leftTop' | 'leftBottom' | 'rightTop' | 'rightBottom';
    /**
     * @internal
     */
    private _$opened;
    jigsawFloatOpen: boolean;
    jigsawFloatOpenChange: EventEmitter<boolean>;
    private _openTrigger;
    /**
     * 打开下拉触发方式，默认值是'mouseenter'
     * $demo = float/trigger
     */
    jigsawFloatOpenTrigger: 'click' | 'mouseenter' | 'none' | DropDownTrigger;
    private _closeTrigger;
    /**
     * 打开下拉触发方式，默认值是'mouseleave'
     * $demo = float/trigger
     */
    jigsawFloatCloseTrigger: 'click' | 'mouseleave' | 'none' | DropDownTrigger;
    constructor(_renderer: Renderer2, _elementRef: ElementRef, _popupService: PopupService);
    ngOnDestroy(): void;
    /**
     * @internal
     */
    _$openByHover(event: any): void;
    /**
     * @internal
     * @param event
     * @param offset 代表偏移，注册在float触发器上的mouseleave在计算element中的位置是要往前回退一个坐标，
     * 注册在弹出层上的mouseleave无需偏移
     */
    _$closeByHover(event: any, offset?: number): void;
    /**
     * @internal
     */
    _$openAndCloseByClick(event: any): void;
    private _isChildOf(child, parent);
    private _openFloat();
    private _getPos();
    private _getHostElementPos();
    private changePosByFloatPosition(pos, popupElement);
    private _getPopupOption();
    /**
     * 计算弹层区域的位置，当指定的方向位置不够，且反向弹位置足够时，那么反向弹层
     */
    private _positionReviser(pos, popupElement);
    private _calPositionX(pos, leftDelta, popupElement, point, offsetWidth);
    private _calPositionY(pos, upDelta, popupElement, point, offsetHeight);
    private _closeFloat();
    private _clearAllListeners();
}
