import { ElementType, MutableRefObject, Ref } from 'react'; import { Props } from '../../types.js'; import { HasDisplayName, RefProp } from '../../utils/render.js'; type Containers = (() => Iterable) | MutableRefObject>>; declare let DEFAULT_FOCUS_TRAP_TAG: "div"; declare enum Features { /** No features enabled for the focus trap. */ None = 1, /** Ensure that we move focus initially into the container. */ InitialFocus = 2, /** Ensure that pressing `Tab` and `Shift+Tab` is trapped within the container. */ TabLock = 4, /** Ensure that programmatically moving focus outside of the container is disallowed. */ FocusLock = 8, /** Ensure that we restore the focus when unmounting the focus trap. */ RestoreFocus = 16, /** Enable all features. */ All = 30 } export type FocusTrapProps = Props & { initialFocus?: MutableRefObject; features?: Features; containers?: Containers; }; declare function FocusTrapFn(props: FocusTrapProps, ref: Ref): JSX.Element; interface ComponentFocusTrap extends HasDisplayName { (props: FocusTrapProps & RefProp): JSX.Element; } export declare let FocusTrap: ComponentFocusTrap & { features: typeof Features; }; export {};