import '../../chipper/js/browser/initialize-globals.js';
import '../../assert/js/assert.js';
import '../../globals.js';
import Property from '../../axon/js/Property.js';
import Bounds2 from '../../dot/js/Bounds2.js';
import Constructor from '../../phet-core/js/types/Constructor.js';
import PickOptional from '../../phet-core/js/types/PickOptional.js';
import { Node, NodeOptions } from '../../scenery/js/imports.js';
type SelfOptions = {
    showPopup?: (popup: Node, isModal: boolean) => void;
    hidePopup?: (popup: Node, isModal: boolean) => void;
    isModal?: boolean;
    layoutBounds?: Bounds2 | null;
    focusOnShowNode?: Node | null;
    focusOnHideNode?: Node | null;
    disableModals?: boolean;
};
type ParentOptions = PickOptional<NodeOptions, 'tandem'>;
export type PopupableOptions = SelfOptions & ParentOptions;
type TPopupable = {
    readonly layoutBounds: Bounds2 | null;
    readonly popupParent: Node;
    readonly isShowingProperty: Property<boolean>;
    layout(bounds: Bounds2): void;
    shouldShowPopup(): boolean;
    show(): void;
    hide(): void;
    get focusOnHideNode(): Node | null;
};
declare const Popupable: <SuperType extends Constructor<Node>>(Type: SuperType, optionsArgPosition: number) => SuperType & Constructor<TPopupable>;
export type PopupableNode = Node & TPopupable;
export default Popupable;
//# sourceMappingURL=Popupable.d.ts.map