import { ChipColorOptions, Sizes } from '@m4l/styles';
import { Theme } from '@mui/material/styles';
import { EventHandler, ReactNode } from 'react';
import { CHIP_KEY_COMPONENT } from './constants';
import { ChipSlots } from './slots';
import { IconButtonProps as MUIIconButtonProps } from '@mui/material';
import { M4LOverridesStyleRules } from '../../@types/augmentations';
import { Maybe } from '@m4l/core';
export type ChipVariants = 'contained' | 'outlined';
/**
 * Props for the `Chip` component.
 */
export interface ChipProps {
    /**
     * Optional prop for the icon on the left in the `Chip`. Can accept a URL as a string to render an image icon, or a React component to render it directly.
     */
    startIcon?: ReactNode;
    /**
     * Optional prop for the icon on the right in the `Chip`. Can accept a URL as a string to render an image icon, or a React component to render it directly.
     */
    endIcon?: ReactNode;
    /**
     * Size of the `Chip` (default 'medium').
     */
    size?: Extract<Sizes, 'small' | 'medium'>;
    /**
     * Text describing the `Chip`. Accepts a plain string or a React node
     * (for example a `Typography` element) when callers need to style parts
     * of the label independently while keeping the chip's layout intact.
     */
    label?: Maybe<string> | ReactNode;
    /**
     * Secondary text shown below the chip label.
     */
    description?: Maybe<string>;
    /**
     * Defines the variant of the `Chip` (default 'contained').
     */
    variant?: ChipVariants;
    /**
     * Defines the color of the `Chip`.
     */
    color?: ChipColorOptions;
    /**
     * Alternative color for the `Chip`.
     */
    externalColor?: {
        color: string;
        backgroundColor: string;
    };
    /**
     * Defines the skeleton width in skeleton mode.
     */
    skeletonWidth?: string | number;
    /**
     * Opacity of the `Chip`.
     */
    opacity?: boolean;
    /**
     * Function to be executed when the `Chip` is clicked.
     */
    onClick?: (() => void) | ((event: any) => void);
    /**
     * Props for the close icon button.
     */
    iconButtonProps?: Omit<MUIIconButtonProps, 'size' | 'color' | 'disabled' | 'src'>;
    /**
     * Function to be executed when the `Chip` is deleted.
     */
    onDeleted?: EventHandler<any>;
    /**
     * Class name for the `Chip`.
     */
    className?: string;
    /**
     * If the `Chip` is focusable.
     */
    focusable?: boolean;
    /**
     * Test id for the `Chip`.
     */
    dataTestId?: string;
    /**
     * If the `Chip` delete button is disabled.
     */
    disabledDeleteButton?: boolean;
    /**
     * If the `Chip` is ellipsis.
     */
    ellipsis?: boolean;
}
/**
 * Owner state of the `Chip` used to define internal style and behavior properties.
 */
export interface ChipOwnerState extends Pick<ChipProps, 'variant' | 'externalColor' | 'opacity' | 'size' | 'color'> {
    interactive: boolean;
    ellipsis: boolean;
    hasDescription: boolean;
    [key: string]: unknown;
}
/**
 * Defines the types of Slots available for the `Chip`.
 */
export type ChipSlotsType = keyof typeof ChipSlots;
/**
 * Styles applicable to the `Chip` using themes and custom slots.
 */
export type ChipStyles = M4LOverridesStyleRules<ChipSlotsType, typeof CHIP_KEY_COMPONENT, Theme>;
//# sourceMappingURL=types.d.ts.map