import { IEditPopoverProps } from "@docsvision/webclient/Helpers/PopoverHelpers/EditPopover/IEditPopoverProps";
import { IEditPopoverState } from "@docsvision/webclient/Helpers/PopoverHelpers/EditPopover/IEditPopoverState";
import { IBasicEvent } from "@docsvision/webclient/System/IBasicEvent";
import { ICancelableEvent } from "@docsvision/webclient/System/ICancelableEvent";
import { IEventArgs } from "@docsvision/webclient/System/IEventArgs";
import React from "react";
/**
 * Использует {@link Popover} для отображения вслывающего окна контролов, в режиме edit-in-place.
 *
 * Для создания всплывающего окна следует исполдьзовать статический метод {@link EditPopover.CreatePopover}
 */
export declare class EditPopover extends React.Component<IEditPopoverProps, IEditPopoverState> {
    private contentRoot;
    private wrapper;
    private popover;
    constructor(props: IEditPopoverProps);
    /** Событие, возникающее перед показом окна */
    get showing(): ICancelableEvent<IEventArgs>;
    /** Событие, возникающее после показа окна */
    get shown(): IBasicEvent<IEventArgs>;
    /** Событие, возникающее перед нажатием кнопки OK */
    get accepting(): ICancelableEvent<IEventArgs>;
    /** Событие, возникающее после нажатия кнопки ОК */
    get accepted(): IBasicEvent<IEventArgs>;
    /** Событие, возникающее перед закрытием окна путем нажатия кнопки Отмена, клавиши Esc или щелчка вне вслывающего окна) */
    get canceling(): ICancelableEvent<IEventArgs>;
    /** Событие, возникающее после нажатия кнопки Отмена, клавиши Esc или щелчка вне вслывающего окна. */
    get canceled(): IBasicEvent<IEventArgs>;
    /** Событие, возникающее перед показом окна */
    get hidding(): ICancelableEvent<IEventArgs>;
    /** Событие, возникающее после скрытия окна */
    get hidden(): IBasicEvent<IEventArgs>;
    /** Css-класс */
    get className(): string;
    set className(val: string);
    /** Css-класс рутового элемента */
    get rootClassName(): string;
    set rootClassName(val: string);
    /**
     * Создает экземпляр вслывающего окна.
     *
     * После создания следует использовать {@link contentElement} свойство для задания содержимого, и методы {@link show} и {@link hide}
     * для управления всплывающим окном.
     */
    static CreatePopover(popoverOptions: IEditPopoverProps): Promise<EditPopover>;
    /**
     * HTMLElement, в который следует поместить содержимое всплывающего окна.
     *
     * Внимание! Значение свойства будет принициализировано только после вызова {@link IEditPopoverProps.onMounted}
     */
    get contentElement(): HTMLElement;
    /**
     * Отображает всплыающее окно на экране.
     */
    show(): Promise<void>;
    /**
     * Скрывает всплыающее окно.
     */
    hide(): Promise<unknown>;
    /**
     * Отображается всплыающее окно на экране в данный момент или нет.
     */
    get visible(): boolean;
    set visible(val: boolean);
    /**
     * Настройка, определяющая, будет ли окно скрываться по клику во вне.
     */
    get hideByClickOutside(): boolean;
    set hideByClickOutside(val: boolean);
    /**
     * Настройка, определяющая, будет ли окно скрываться по нажатию Esc
     */
    get hideByEsc(): boolean;
    set hideByEsc(val: boolean);
    /**
     * Настройка, определяющая, будет ли иницироваться применение изменений по нажатию клавиши Enter.
     */
    get acceptByEnter(): boolean;
    set acceptByEnter(val: boolean);
    get ignoreOutsideClicksSelectors(): string[] | undefined;
    set ignoreOutsideClicksSelectors(val: string[] | undefined);
    /**
     * Корректно очищает содержимое {@link contentElement}
     */
    clearContent(): void;
    /**
     * Скрывает окно и очищает все используемые ресурсы.
     */
    dispose(): void;
    /**
     * Перессчитать позицию окна.
     */
    updatePositions(): void;
    private attachPopover;
    private onKeyEnter;
    private onKeyEsc;
    private attachContentRoot;
    private hideInternal;
    accept(): Promise<unknown>;
    cancel(): Promise<unknown>;
    private onOkClick;
    private onCancelClick;
    private onClickOutside;
    private renderSaveCancelButtons;
    /** @internal */
    render(): JSX.Element;
}
