import { ElementType, ReactElement, ReactNode } from 'react';
import { ButtonProps } from '../Button';
import { MenuItemProps } from '../Menu';
export type ListActionRenderFn = (props: {
    wrap: (children: ReactNode) => ReactNode;
}) => ReactElement | null;
type ListActionButtonProps<TComponent extends ElementType> = {
    primary: true;
    icon: ButtonProps['icon'];
    component?: TComponent;
} & Omit<ButtonProps<TComponent>, keyof ListActionBaseProps | 'icon'>;
type ListActionMenuItemProps<TComponent extends ElementType> = {
    primary?: false;
    component?: TComponent;
} & Omit<MenuItemProps<TComponent>, keyof ListActionBaseProps>;
type ListActionBaseProps = {
    /**
     * Should render as a ghost button in List's default mode. Icon is required for the ListAction with this property. See
     * @see Use [Button](#!/Button) props when primary is true.
     * @see Use [MenuItem](#!/MenuItem) props when primary is false.
     * @since 3.3.0
     */
    primary?: boolean;
    /**
     * Renders as a "hole" if it has the primary property and doesn't render in the dropdown.
     * @since 3.5.0
     */
    hidden?: boolean;
    /**
     * Content of the component.
     * @since 3.3.0
     */
    children?: ReactNode | ListActionRenderFn;
};
export type ListActionProps<TComponent extends ElementType> = ListActionBaseProps & (ListActionButtonProps<TComponent> | ListActionMenuItemProps<TComponent>);
/**
 * `ListAction` component is a part of [ListActions](#!/ListActions) component.
 * It accepts the props of [Button](#!/Button) and [MenuItem](#!/MenuItem) components.
 * @since 3.3.0
 */
declare const ListAction: <TComponent extends ElementType = "div">({ primary, children, tooltip, ...props }: ListActionProps<TComponent>) => import("react/jsx-runtime").JSX.Element | null;
export default ListAction;
