/** @packageDocumentation
 * @module Dialog
 */
import * as React from "react";
import { UiEvent } from "@itwin/appui-abstract";
/** Dialog Stack Changed Event Args class.
 * @public
 */
export interface DialogChangedEventArgs {
    dialogCount: number;
    activeDialog: React.ReactNode | undefined;
}
/** Dialog Changed Event class.
 * @public
 */
export declare class DialogChangedEvent extends UiEvent<DialogChangedEventArgs> {
}
/** Information maintained by a Dialog Manager about a dialog
 * @public
 */
export interface DialogInfo {
    reactNode: React.ReactNode;
    id: string;
    parentDocument: Document;
}
/** Dialog Manager class.
 * @internal
 */
export declare class DialogManagerBase {
    private static _sId;
    private _dialogs;
    private _onDialogChangedEvent;
    private static _topZIndex;
    constructor(onDialogChangedEvent: DialogChangedEvent);
    /** Initialize the modeless dialog manager */
    static initialize(): void;
    static get topZIndex(): number;
    static set topZIndex(zIndex: number);
    get dialogs(): DialogInfo[];
    get onDialogChangedEvent(): DialogChangedEvent;
    static getDialogZIndexDefault(): number;
    /**
     * Triggers opening a dialog.
     * @param dialog Dialog React component.
     * @param id The unique Id the identifies the dialog.
     * @param parentDocument Optional document required when displaying a dialog in a child popup window.
     */
    openDialog(dialog: React.ReactNode, id?: string, parentDocument?: Document): void;
    /** @internal */
    pushDialog(dialogInfo: DialogInfo): void;
    closeDialog(dialog?: React.ReactNode): void;
    /** @internal */
    closeAll(): void;
    /** @internal */
    removeDialog(dialog: React.ReactNode): void;
    emitDialogChangedEvent(): void;
    update(): void;
    get activeDialog(): React.ReactNode | undefined;
    get dialogCount(): number;
}
/** Properties for the [[DialogRendererBase]] component
 * @internal
 */
export interface DialogRendererProps {
    dialogManager: DialogManagerBase;
    style?: React.CSSProperties;
}
/** @internal */
interface DialogRendererState {
    parentDocument: Document | null;
}
/** DialogRenderer React component.
 * @internal
 */
export declare class DialogRendererBase extends React.PureComponent<DialogRendererProps, DialogRendererState> {
    /** @internal */
    readonly state: DialogRendererState;
    private _handleRefSet;
    render(): React.ReactNode;
    componentDidMount(): void;
    componentWillUnmount(): void;
    private _handleDialogChangedEvent;
}
export {};
//# sourceMappingURL=DialogManagerBase.d.ts.map