import { IPopup, ITabulator } from '../../../../../../types/src/table';
import { default as CoreFeature } from '../CoreFeature';

export default class Popup extends CoreFeature implements IPopup {
    element: HTMLElement;
    container: HTMLElement;
    parent: IPopup | null;
    reversedX: boolean;
    childPopup: IPopup | null;
    blurable: boolean;
    blurCallback: (() => void) | null;
    blurEventsBound: boolean;
    renderedCallback: (() => void) | null;
    visible: boolean;
    hideable: boolean;
    blurEvent: () => void;
    escEvent: (e: KeyboardEvent) => void;
    destroyBinding: () => void;
    destroyed: boolean;
    constructor(table: ITabulator, element: HTMLElement, parent?: IPopup | null);
    tableDestroyed(): void;
    _lookupContainer(): HTMLElement;
    _checkContainerIsParent(container: HTMLElement, element?: HTMLElement | ParentNode): boolean;
    renderCallback(callback: () => void): void;
    containerEventCoords(e: MouseEvent | TouchEvent): {
        x: number;
        y: number;
    };
    elementPositionCoords(element: HTMLElement, position?: 'right' | 'bottom' | 'left' | 'top' | 'center'): {
        offset: {
            left: number;
            top: number;
        };
        x: number;
        y: number;
    };
    show(origin: HTMLElement | MouseEvent | TouchEvent | number, position?: 'right' | 'bottom' | 'left' | 'top' | 'center' | number): this;
    _fitToScreen(x: number, y: number, parentEl: HTMLElement | undefined, parentOffset: {
        left: number;
        top: number;
    } | undefined, position: 'right' | 'bottom' | 'left' | 'top' | 'center' | undefined): void;
    isVisible(): boolean;
    hideOnBlur(callback: () => void): this;
    _escapeCheck(e: KeyboardEvent): void;
    blockHide(): void;
    restoreHide(): void;
    hide(silent?: boolean): this;
    child(element: HTMLElement): IPopup;
}
