import { MenuItemProps as MUIMenuItemProps, Theme } from '@mui/material';
import { Sizes } from '@m4l/styles';
import { MenuItemSlots } from './slots';
import { MENUITEM_KEY_COMPONENT } from './constants';
import { M4LOverridesStyleRules } from '../../../../@types/augmentations';
import { IconButtonProps } from '../IconButton/types';
import { IconProps } from '@m4l/base';
import { default as React } from 'react';
/**
 * Props for the `MenuItem` component.
 */
export interface MenuItemProps extends Omit<MUIMenuItemProps, 'size' | 'color'> {
    /**
     * Optional prop for the left icon in `MenuItem`.
     * @deprecated Use `startAdornment` instead.
     */
    startIcon?: IconProps['src'] | null;
    /**
     * Optional prop for the right icon in `MenuItem`.
     * @deprecated Use `endAdornment` instead.
     */
    endIcon?: IconProps['src'] | null;
    /**
     * Optional prop for the left adornment in `MenuItem`.
     * When defined, this prop takes precedence over `startIcon`.
     */
    startAdornment?: React.ReactNode;
    /**
     * Optional prop for the right adornment in `MenuItem`.
     * When defined, this prop takes precedence over `endIcon`.
     */
    endAdornment?: React.ReactNode;
    /**
     * Main text content for the `MenuItem`.
     */
    label: string;
    /**
     * Secondary text displayed below `label`.
     */
    description?: string;
    /**
     * Indicates whether the item is selected.
     */
    selected?: boolean;
    /**
     * Defines the color of the `MenuItem`.
     */
    color?: IconButtonProps['color'];
    /**
     * Defines the component class name.
     */
    className?: string;
    /**
     * Indicates whether the `MenuItem` is disabled.
     */
    disabled?: boolean;
    /**
     * Defines the size of the `MenuItem`.
     */
    size?: Extract<Sizes, 'small' | 'medium'>;
    /**
     * Defines the skeleton width.
     */
    skeletonWidth?: string | number;
    /**
     * Defines whether the check icon is active.
     */
    checked?: boolean;
    /**
     * Indicates whether the check icon should be shown.
     */
    checkable?: boolean;
    /**
     * Test ID passed as `data-testid`.
     */
    dataTestId?: string;
}
/**
 * Owner state used to define internal style and behavior props for `MenuItem`.
 * Pick<MenuItemProps, 'size' | 'color' | 'disabled' | 'selected'>
 * paletteColor - Defines the palette color applied to `MenuItem`.
 */
export interface MenuItemOwnerState extends Pick<MenuItemProps, 'checked' | 'checkable' | 'size' | 'disabled' | 'selected'> {
    color: IconButtonProps['color'];
    hasDescription: boolean;
}
/**
 * Defines available slot types for `MenuItem`.
 */
export type MenuItemSlotsType = keyof typeof MenuItemSlots;
/**
 * Styles applied to `MenuItem` using theme and custom slots.
 */
export type MenuItemStyles = M4LOverridesStyleRules<MenuItemSlotsType, typeof MENUITEM_KEY_COMPONENT, Theme>;
//# sourceMappingURL=types.d.ts.map