import '../../assert/js/assert.js';
import '../../globals.js';
import TReadOnlyProperty from '../../axon/js/TReadOnlyProperty.js';
import Bounds2 from '../../dot/js/Bounds2.js';
import Sim from '../../joist/js/Sim.js';
import StrictOmit from '../../phet-core/js/types/StrictOmit.js';
import { Node, TColor, TrimParallelDOMOptions } from '../../scenery/js/imports.js';
import TSoundPlayer from '../../tambo/js/TSoundPlayer.js';
import IOType from '../../tandem/js/types/IOType.js';
import Panel, { PanelOptions } from './Panel.js';
import { PopupableOptions } from './Popupable.js';
type DialogTitleAlign = 'left' | 'right' | 'center';
/**
 * see SelfOptions.layoutStrategy
 * @param dialog
 * @param simBounds - see Sim.boundsProperty
 * @param screenBounds - see Sim.screenBoundsProperty
 * @param scale - see Sim.scaleProperty
 */
type DialogLayoutStrategy = (dialog: Dialog, simBounds: Bounds2, screenBounds: Bounds2, scale: number) => void;
type SelfOptions = {
    xSpacing?: number;
    ySpacing?: number;
    topMargin?: number;
    bottomMargin?: number;
    leftMargin?: number | null;
    maxWidthMargin?: number;
    maxHeightMargin?: number;
    closeButtonLength?: number;
    closeButtonTopMargin?: number;
    closeButtonRightMargin?: number;
    title?: Node | null;
    titleAlign?: DialogTitleAlign;
    layoutStrategy?: DialogLayoutStrategy;
    closeButtonListener?: () => void;
    closeButtonColor?: TColor;
    closeButtonTouchAreaXDilation?: number;
    closeButtonTouchAreaYDilation?: number;
    closeButtonMouseAreaXDilation?: number;
    closeButtonMouseAreaYDilation?: number;
    closeButtonVoicingDialogTitle?: string | TReadOnlyProperty<string> | null;
    closeButtonLastInPDOM?: boolean;
    openedSoundPlayer?: TSoundPlayer;
    closedSoundPlayer?: TSoundPlayer;
    sim?: Sim;
    showCallback?: (() => void) | null;
    hideCallback?: (() => void) | null;
};
type ParentOptions = PanelOptions & PopupableOptions;
type TrimmedParentOptions = TrimParallelDOMOptions<ParentOptions>;
export type DialogOptions = SelfOptions & StrictOmit<TrimmedParentOptions, 'xMargin' | 'yMargin'>;
declare const Dialog_base: typeof Panel & import("../../phet-core/js/types/Constructor.js").default<{
    readonly layoutBounds: Bounds2 | null;
    readonly popupParent: Node;
    readonly isShowingProperty: import("../../axon.js").Property<boolean>;
    layout(bounds: Bounds2): void;
    shouldShowPopup(): boolean;
    show(): void;
    hide(): void;
    readonly focusOnHideNode: Node | null;
}>;
export default class Dialog extends Dialog_base {
    private readonly closeButton;
    private readonly sim;
    private readonly disposeDialog;
    /**
     * @param content - The content to display inside the dialog (not including the title)
     * @param providedOptions
     */
    constructor(content: Node, providedOptions?: DialogOptions);
    dispose(): void;
    static DialogIO: IOType<any, any, any>;
}
export {};
//# sourceMappingURL=Dialog.d.ts.map