import { FocusEvent, KeyboardEventHandler, RefCallback } from 'react';
import { ListItem } from './types';
export interface ListItemNavigationParams {
    id: string | number;
    onToggleExpanded?: (isExpanded: boolean) => void;
    onToggleSelected?: (isSelected: boolean) => void;
    onToggleFocused?: (isFocused: boolean) => void;
    isSelected?: boolean;
    /**
     * Pass event listeners that present in consumer, if any exist.
     * They'll be wrapped invoked on the related event.
     */
    componentProps?: ListItemNavigationContainerAttributes;
}
export type ListItemNavigation = {
    ref: RefCallback<any>;
    item: ListItem;
    /**
     * Pass these attributes on the parent element of the item (option)
     */
    listItemAttrs: ListItemNavigationAttributes;
    toggleSelected: (selected: boolean) => void;
};
export type ListItemNavigationContainerAttributes = {
    onFocus?: (event: FocusEvent) => void;
    onBlur?: (event: FocusEvent) => void;
    onKeyDown?: KeyboardEventHandler;
};
export type ListItemNavigationAttributes = {
    tabIndex: number;
    role: string;
    'aria-disabled': boolean;
    'aria-selected': boolean;
} & ListItemNavigationContainerAttributes;
export declare function useListItemNavigation({ id, onToggleSelected, onToggleFocused, componentProps, isSelected, }: ListItemNavigationParams): ListItemNavigation;
