import { EventEmitter } from '../../stencil-public-runtime';
import { HTMLStencilElement } from '../../stencil-public-runtime';
import { OverlayEventDetail, OverlayInterface } from './bal-modal.type';
export declare class Modal implements OverlayInterface {
    private usersElement?;
    private modalContentElement?;
    private modalContainerElement?;
    private modalBackgroundElement?;
    private isClickedOutsideOnMouseDown;
    private isClickedOutsideOnMouseUp;
    private bodyScrollHandler;
    presented: boolean;
    el: HTMLStencilElement;
    /** @internal */
    overlayIndex: number;
    /** @internal */
    delegate?: BalProps.FrameworkDelegate;
    /** @internal */
    dataTestId?: string;
    /**
     * Defines the width of the modal body
     */
    modalWidth: number;
    /**
     * Defines the space/padding of the modal
     */
    space: BalProps.BalModalSpace;
    /**
     * If `true`, a backdrop will be displayed behind the modal.
     */
    hasBackdrop: boolean;
    /**
     * If `true`, the modal can be closed with the escape key or the little close button.
     */
    isClosable: boolean;
    /**
     * The component to display inside of the modal.
     */
    component: BalProps.ComponentRef;
    /**
     * The data to pass to the modal component.
     */
    componentProps?: BalProps.ComponentProps;
    /**
     * Additional classes to apply for custom CSS. If multiple classes are
     * provided they should be separated by spaces.
     */
    cssClass?: string | string[];
    /**
     * If `true`, the modal can be closed with the click outside of the modal
     */
    backdropDismiss: boolean;
    /**
     * If `true`, focus will not be allowed to move outside of this overlay.
     * If `false`, focus will be allowed to move outside of the overlay.
     *
     * In most scenarios this property should remain set to `true`. Setting
     * this property to `false` can cause severe accessibility issues as users
     * relying on assistive technologies may be able to move focus into
     * a confusing state. We recommend only setting this to `false` when
     * absolutely necessary.
     *
     * Developers may want to consider disabling focus trapping if this
     * overlay presents a non-Ionic overlay from a 3rd party library.
     * Developers would disable focus trapping on the Ionic overlay
     * when presenting the 3rd party overlay and then re-enable
     * focus trapping when dismissing the 3rd party overlay and moving
     * focus back to the Ionic overlay.
     */
    focusTrap: boolean;
    /**
     * @internal
     */
    demo: boolean;
    /**
     * Emitted after the modal has presented.
     */
    didPresent: EventEmitter<BalEvents.BalModalDidPresentDetail>;
    /**
     * Emitted before the modal has presented.
     */
    willPresent: EventEmitter<BalEvents.BalModalWillPresentDetail>;
    /**
     * Emitted before the modal has dismissed.
     */
    willDismiss: EventEmitter<BalEvents.BalModalWillDismissDetail>;
    /**
     * Emitted after the modal has dismissed.
     */
    didDismiss: EventEmitter<BalEvents.BalModalDidDismissDetail>;
    connectedCallback(): void;
    disconnectedCallback(): void;
    /**
     * @internal Opens the modal.
     */
    open(): Promise<void>;
    /**
     * @internal Closes the modal.
     */
    close(): Promise<void>;
    /**
     * Presents the modal through the modal controller
     */
    present(): Promise<void>;
    /**
     * Closes the presented modal with the modal controller
     */
    dismiss(data?: any, role?: string): Promise<boolean>;
    /**
     * Returns a promise that resolves when the modal did dismiss.
     */
    onDidDismiss<T = any>(): Promise<OverlayEventDetail<T>>;
    /**
     * Returns a promise that resolves when the modal will dismiss.
     */
    onWillDismiss<T = any>(): Promise<OverlayEventDetail<T>>;
    onClickCloseButton(ev: MouseEvent): Promise<void>;
    onMouseDown(ev: MouseEvent): Promise<void>;
    onMouseUp(ev: MouseEvent): Promise<void>;
    handleKeyUp(ev: KeyboardEvent): Promise<void>;
    private setModalActiveOnBody;
    private unsetModalActiveOnBody;
    private isClickedOutside;
    render(): any;
}
