import type { DependencyList } from 'react';
export interface UseActiveDescendantConfig {
    /** DOM element which controls and has active descendants */
    focusEl: HTMLElement | null;
    /** Root scope for descendant options */
    scope: HTMLElement | null;
    /** Custom selector for specific descendant scope in root descendant scope */
    scopeSelector?: string;
    /** Custom selector for descendant options */
    selector?: string;
    /** Orientation of descendant navigation
     * @default 'vertical'
     */
    orientation?: 'horizontal' | 'vertical';
    /** One-time override for the focused descendant, triggers re-evaluation.
     * Include `clearFocusDescendantEl` for cleanup.
     */
    focusDescendantEl?: HTMLElement | null;
    /** Callback to clear focusDescendantEl after use. */
    clearFocusDescendant?: () => void;
    /** One-time override for focused element on NEXT re-evaluation of active descendants.
     * Include `clearFocusReturn` for cleanup.
     */
    focusReturnEl?: HTMLElement | null;
    /** Callback to clear focusReturnEl after use. */
    clearFocusReturn?: () => void;
    /**
     * Descendant ID used for continuous override of current active descendant,
     * used for external focus control / keyDown bindings (see RTE).
     * NOTE: setting currentDescendantId once effectively disables the keybindings of this hook.
     * If you only need to set the current element once, use focusReturnEl & clearFocusReturn.
     * @deprecated
     */
    currentDescendantId?: string;
    /** Explicit onClick handler called on keydown 'enter' event */
    onClick?: (currentDescendantEl: HTMLElement) => void;
    /** Prevent scrolling to the active descendant on the initial render.
     * Include `clearPreventScroll` to scroll on subsequent interactions if applicable.
     */
    preventInitialScroll?: boolean;
    /** Callback to clear preventInitialScroll after use. */
    clearPreventScroll?: () => void;
    /** Boolean to prevent descendant evaluation.
     * @default false
     */
    pauseDescendantEvaluation?: boolean;
}
type CurrentDescendant = HTMLElement | undefined;
type Descendants = HTMLElement[] | null;
declare const useActiveDescendant: ({ focusEl, scope, scopeSelector, selector, orientation, focusDescendantEl, clearFocusDescendant, focusReturnEl, clearFocusReturn, currentDescendantId, onClick, preventInitialScroll, pauseDescendantEvaluation, clearPreventScroll }: UseActiveDescendantConfig, dependencyArray?: DependencyList) => {
    activeDescendant: CurrentDescendant;
    descendants: Descendants;
};
export declare const useLazyDescendant: ({ loading, descendants, previousActiveDescendant, activeDescendant, focusReturnEl, setFocusReturnEl, scrollEl }: {
    loading: boolean;
    descendants: Descendants;
    previousActiveDescendant: CurrentDescendant;
    activeDescendant: CurrentDescendant;
    focusReturnEl: UseActiveDescendantConfig["focusReturnEl"];
    setFocusReturnEl: (el: HTMLElement | null | undefined) => void;
    scrollEl?: HTMLElement | null;
}) => void;
export default useActiveDescendant;
//# sourceMappingURL=useActiveDescendant.d.ts.map