import { type KeyboardEvent } from "react";
import { type IRegion } from "../typings/domUtilities.js";
import { type NavigationDirection } from "../typings/navigation.js";
/**
 * Removes the element specified from the DOM
 */
export declare const removeFromDom: (element: HTMLElement | null) => void;
/**
 * Returns bounding rectangle of specified elements
 * in local (relative to offset parent of element)
 * coordinate space
 *
 * @param element - element to get the region for
 * @param ignoreScrollOffsets - whether to ignore scrollOffsets
 * @param windowObject - use for unit test only
 * @returns Bounding rectangle
 */
export declare const region: (element: HTMLElement, ignoreScrollOffsets?: boolean | undefined, windowObject?: Window & typeof globalThis) => IRegion;
/**
 * Returns a value indicating whether the element
 * specified is fixed position
 * or is contained in fixed position element
 */
export declare const isFixedPosition: (element: string | HTMLElement) => boolean;
/**
 * Returns bounding rectangle of specified elements
 * in local (relative to offset parent of element)
 * coordinate space
 */
export declare const elementRegion: (elementOrSelector: string | HTMLElement, getRegionBasedOnPosition?: boolean | undefined) => IRegion;
export declare const isElementTextInput: (element: EventTarget | HTMLElement | null | undefined) => boolean;
export declare const isElementSubmitButton: (event: KeyboardEvent<Element>) => boolean;
/**
 * @internal
 * Returns the focusable elements of the given element
 * @param element - the element to get the focusable elements from
 * @returns an object containing the focusable elements, the first focusable element, and the last focusable element
 */
export declare const getFocusableElements: (element?: HTMLElement | null | undefined, includeHidden?: boolean) => {
    focusableElements: HTMLElement[];
    firstElement: HTMLElement;
    lastElement: HTMLElement;
};
/**
 * @internal
 * @param element - the element to test for focusability
 * @returns whether or not the supplied element is focusable
 */
export declare const isElementFocusable: (element?: HTMLElement | null | undefined, includeHidden?: boolean) => boolean | undefined;
/**
 * @internal
 * Check a single sibling element for focusable descendants.
 *
 * @param sibling - The sibling element to check
 * @param direction - Direction to determine which focusable element to return
 * @returns The first or last focusable element within the sibling, or null
 */
export declare const findFocusableElementInSibling: (sibling: Element, direction?: NavigationDirection) => HTMLElement | null;
/**
 * @internal
 * Find the next or previous focusable element outside of a given container by traversing up the DOM tree.
 * This is more efficient than querying all focusable elements on the page.
 *
 * @param container - The container to find focusable elements outside of
 * @param direction - 'forward' for next element (Tab), 'backward' for previous element (Shift+Tab)
 * @returns The next/previous focusable element, or null if none found
 */
export declare const findFocusableElementOutsideContainer: (container: HTMLElement, direction?: NavigationDirection) => HTMLElement | null;
//# sourceMappingURL=domUtilities.d.ts.map