import { EventEmitter } from 'eventemitter3';
/**
 * 气泡位置枚举
 */
export type PopperPlacement = 'top-start' | 'top' | 'top-end' | 'left-start' | 'left' | 'left-end' | 'bottom-start' | 'bottom' | 'bottom-end' | 'right-start' | 'right' | 'right-end';
/**
 * 气泡触发类型，当前支持 click 和 hover 两种类型
 */
export type PopperTrigger = 'click' | 'hover';
/**
 * 气泡内容类型
 */
export type PopperContent = string | HTMLElement | null;
export interface IPopperOption {
    placement: PopperPlacement;
    trigger: PopperTrigger;
    content?: PopperContent;
    offset?: [number, number];
    className?: string;
    container: HTMLElement;
    unique?: boolean;
}
export declare class Popper extends EventEmitter<'show' | 'hide'> {
    protected get buttonRect(): DOMRect;
    protected static conflictPopperList: Popper[];
    popperDOM: HTMLElement;
    contentDOM: HTMLElement;
    /**
     * 按钮实体
     * @protected
     */
    protected button: HTMLElement;
    /**
     * Popper 配置
     * @protected
     */
    protected option: IPopperOption;
    /**
     * 当前是否展示
     * @protected
     */
    protected isShow: boolean;
    /**
     * 当前气泡展示的内容
     * @protected
     */
    protected content: PopperContent;
    /**
     * 关闭气泡的定时器
     * @protected
     */
    protected timeout: number | null;
    constructor(button: HTMLElement, option: IPopperOption);
    getPopperDOM(): HTMLElement;
    getIsShow(): boolean;
    getContent(): PopperContent;
    setContent(content: PopperContent): void;
    show: () => this;
    hide: () => this;
    /**
     * 设置隐藏气泡的定时器
     */
    setHideTimeout: () => void;
    /**
     * 销毁隐藏气泡的定时器
     */
    clearHideTimeout: () => void;
    init(): void;
    destroy(): void;
    resetPopperPosition(): void;
    protected createPopper(): HTMLElement;
    protected onBtnClick: () => void;
    protected onBtnMouseLeave: () => void;
    protected onBtnMouseMove: () => void;
}
