import { RefObject } from "react"; export interface ChildScopesOptions { includeChildScopes?: boolean; } export declare type ScopeChangeEventHandler = (newElements: HTMLElement[], previousElements: HTMLElement[]) => void; export declare class FocusScope { private scopeRef; private handlersRef; private childScopes; constructor(scopeRef: RefObject, handlersRef: RefObject); registerChangeHandler(handler: ScopeChangeEventHandler): void; removeChangeHandler(handler: ScopeChangeEventHandler): void; registerChildScope(scope: FocusScope): void; removeChildScope(scope: FocusScope): boolean; getElements({ includeChildScopes }?: ChildScopesOptions): HTMLElement[]; isInScope(element: HTMLElement, { includeChildScopes }?: ChildScopesOptions): boolean; } export interface FocusScopeContextType { scope?: FocusScope; } export declare const FocusScopeContext: import("react").Context; export declare function useFocusScopeContext(): [FocusScopeContextType, boolean]; export declare function useFocusScope(): [FocusScope, (rootElement: HTMLElement) => void]; export interface FocusScopeIteratorOptions extends ChildScopesOptions { from?: number; tabbableOnly?: boolean; } export interface FocusScopeIterationOptions { acceptElement?: (element: HTMLElement) => boolean; } export declare class FocusScopeIterator { private currentIndex; private includeChildScopes; private scope; private tabbableOnly; constructor(scope: FocusScope, { from, includeChildScopes, tabbableOnly }?: FocusScopeIteratorOptions); private isValid; firstElement({ acceptElement }?: FocusScopeIterationOptions): HTMLElement; lastElement({ acceptElement }?: FocusScopeIterationOptions): HTMLElement; nextElement({ acceptElement }?: FocusScopeIterationOptions): HTMLElement; previousElement({ acceptElement }?: FocusScopeIterationOptions): HTMLElement; }