import '../../../assert/js/assert.js';
import '../../../globals.js';
/**
 * Displays a DOM element directly in a node, so that it can be positioned/transformed properly, and bounds are handled properly in Scenery.
 *
 * @author Jonathan Olson <jonathan.olson@colorado.edu>
 */
import Bounds2 from '../../../dot/js/Bounds2.js';
import { DOMSelfDrawable, Instance, Node, NodeOptions } from '../imports.js';
type SelfOptions = {
    element?: Element;
    preventTransform?: boolean;
    allowInput?: boolean;
};
export type DOMOptions = SelfOptions & NodeOptions;
export default class DOM extends Node {
    private _element;
    readonly _container: HTMLDivElement;
    private readonly _$container;
    private invalidateDOMLock;
    private _preventTransform;
    private _allowInput;
    /**
     * @param element - The HTML element, or a jQuery selector result.
     * @param [options] - DOM-specific options are documented in DOM_OPTION_KEYS above, and can be provided
     *                             along-side options for Node
     */
    constructor(element: Element | JQuery, options?: DOMOptions);
    /**
     * Computes the bounds of our current DOM element (using jQuery, as replacing this with other things seems a bit
     * bug-prone and has caused issues in the past).
     *
     * The dom element needs to be attached to the DOM tree in order for this to work.
     *
     * Alternative getBoundingClientRect explored, but did not seem sufficient (possibly due to CSS transforms)?
     */
    protected calculateDOMBounds(): Bounds2;
    /**
     * Triggers recomputation of our DOM element's bounds.
     *
     * This should be called after the DOM element's bounds may have changed, to properly update the bounding box
     * in Scenery.
     */
    invalidateDOM(): void;
    /**
     * Creates a DOM drawable for this DOM node. (scenery-internal)
     *
     * @param renderer - In the bitmask format specified by Renderer, which may contain additional bit flags.
     * @param instance - Instance object that will be associated with the drawable
     */
    createDOMDrawable(renderer: number, instance: Instance): DOMSelfDrawable;
    /**
     * Whether this Node itself is painted (displays something itself).
     */
    isPainted(): boolean;
    /**
     * Changes the DOM element of this DOM node to another element.
     */
    setElement(element: HTMLElement): this;
    set element(value: HTMLElement);
    get element(): HTMLElement;
    /**
     * Returns the DOM element being displayed by this DOM node.
     */
    getElement(): HTMLElement;
    /**
     * Sets the value of the preventTransform flag.
     *
     * When the preventTransform flag is set to true, Scenery will not reposition (CSS transform) the DOM element, but
     * instead it will be at the upper-left (0,0) of the Scenery Display. The client will be responsible for sizing or
     * positioning this element instead.
     */
    setPreventTransform(preventTransform: boolean): void;
    set preventTransform(value: boolean);
    get preventTransform(): boolean;
    /**
     * Returns the value of the preventTransform flag.
     *
     * See the setPreventTransform documentation for more information on the flag.
     */
    isTransformPrevented(): boolean;
    /**
     * Sets whether input is allowed for the DOM element. If false, we will disable input events with pointerEvents and
     * the usual preventDefault(). If true, we'll set a flag internally so that we don't preventDefault() on input events.
     */
    setAllowInput(allowInput: boolean): void;
    isInputAllowed(): boolean;
    private invalidateAllowInput;
    set allowInput(value: boolean);
    get allowInput(): boolean;
    mutate(options?: DOMOptions): this;
}
export {};
//# sourceMappingURL=DOM.d.ts.map