import * as React from 'react'; import type { Focusable } from '../focusable/focusable'; import type { FocusManager } from './focus_manager'; export { WithFocusManager, useFocusManager, FocusManagerProvider } from './focus_manager'; export { isFocusable, findFocusable } from './internal/focus_utils'; type FocusableElement = { focus(): void; blur(): void; }; export declare function ApplyFocusHistory(): null; export declare function escapeFocusRecovery(element: FocusableElement): void; export declare function useFocusVisible(): boolean; export declare function useFocusScope( { onEnter, onLeave, }?: { onEnter?: (e: React.FocusEvent) => void; onLeave?: (e?: React.FocusEvent) => void; } ): { ref: React.MutableRefObject; onFocusCapture: (e: React.FocusEvent) => void; onBlur: (e: React.FocusEvent) => void; }; export type FocusScopeProps = React.PropsWithChildren<{ ref?: React.Ref; id?: string; onEnter?: (e: React.FocusEvent) => void; onLeave?: (e?: React.FocusEvent) => void; onFocus?: (e: React.FocusEvent) => void; onBlur?: (e: React.FocusEvent) => void; }>; export declare function FocusScope(props: FocusScopeProps): React.ReactNode; export declare function useAutoFocus(): { ref: React.RefObject; }; export declare function AutoFocus(props: React.PropsWithChildren): React.ReactNode; export declare function useReturnFocus( props: { to: string | (() => T | null | undefined); } ): void; export declare function ReturnFocus( props: { to: string | (() => T | null | undefined); } ): null; export declare function useFocusWhen(condition: boolean, getFocusable: () => T | null | void): void; export declare function FocusWhen( props: React.PropsWithChildren<{ condition: boolean; }> ): React.JSX.Element; export declare function useSyncFocus(index: number, onFocusIndex?: (index: number) => void): { ref: React.Ref; onFocus: (e: React.FocusEvent) => void; }; export declare function SyncFocus( props: React.PropsWithChildren<{ index: number; onFocusIndex?: (index: number) => void; }> ): React.JSX.Element;