import React from 'react';
import type { Dispatch, EventHandler, ReactElement, FocusEventHandler, KeyboardEvent, MouseEvent, MouseEventHandler, ReactNode } from 'react';
import type { NestedListActions } from './Actions';
import { NestedListActionTypes } from './Actions';
export type ItemState = {
    itemState: ListItemStateType;
    nestedListId: string | undefined;
    open: boolean;
};
export declare const ItemContext: React.Context<UseItemValues | null>;
export type ListItemEndAdornmentType = 'element' | 'icon' | 'icon-button';
export type ListItemStartAdornmentType = 'avatar' | 'checkbox' | 'icon';
export type ListItemStateType = 'default' | 'disabled' | 'selected' | 'inverse';
export interface ItemProps {
    children?: ReactElement;
    defaultOpen?: boolean;
    disabled?: boolean;
    endAdornment?: ReactNode;
    endAdornmentType?: ListItemEndAdornmentType;
    inset?: ListItemStartAdornmentType;
    inverse?: boolean;
    onBlur?: FocusEventHandler<HTMLElement>;
    onClick?: EventHandler<KeyboardEvent | MouseEvent>;
    onFocus?: FocusEventHandler<HTMLElement>;
    onMouseEnter?: MouseEventHandler<HTMLElement>;
    onMouseLeave?: MouseEventHandler<HTMLElement>;
    primary?: ReactNode;
    secondary?: ReactNode;
    selected?: boolean;
    startAdornment?: ReactNode;
    startAdornmentType?: ListItemStartAdornmentType;
}
export type ItemReducers = {
    [ActionType in NestedListActionTypes]: (state: ItemState, action: NestedListActions) => ItemState;
};
export declare const reducers: ItemReducers;
type UseItemValues = [ItemState, Dispatch<NestedListActions> | null];
export declare const useItem: () => UseItemValues;
declare function Item({ children, defaultOpen, disabled, endAdornment, endAdornmentType, inset, inverse, onBlur, onClick, onFocus, onMouseEnter, onMouseLeave, primary, secondary, selected, startAdornment, startAdornmentType, }: ItemProps): JSX.Element;
export default Item;
