import { ComponentPalletColor, Sizes } from '@m4l/styles';
import { IconButtonProps as MUIIconButtonProps } from '@mui/material';
import { Theme } from '@mui/material/styles';
import { M4LOverridesStyleRules } from '../../../../@types/augmentations';
import { TooltipProps, IconProps } from '@m4l/base';
import { BadgeProps } from '../Badge';
import { ICON_BUTTON_KEY_COMPONENT } from './constants';
import { IconButtonSlots } from './slots';
/** Tipo `IconButtonVariants` para definir sus variantes */
export type IconButtonVariants = 'contained' | 'outline' | 'text';
/** Tipo `IconButtonSize` para definir sus tamaños */
export type IconButtonSize = 'small' | 'medium';
export interface IconButtonProps extends Partial<Omit<IconProps, 'size' | 'color' | 'selected' | 'enabledSelected' | 'onClick' | 'tooltipContent'>>, Omit<MUIIconButtonProps, 'size' | 'color' | 'disabled' | 'src'>, Pick<TooltipProps, 'placement'> {
    /** Variante del componente, modifica la apariencia gráfica */
    variant?: IconButtonVariants;
    /**
     * Define el tamaño del componente
     */
    size?: Extract<Sizes, 'small' | 'medium'>;
    /**
     * Define el mensaje interno del tooltip
     */
    tooltip?: string;
    /** Opciones de color del componente */
    color?: Extract<ComponentPalletColor, 'primary' | 'default' | 'error' | 'success' | 'warning' | 'info'>;
    /** Representa si el componente se encuentra deshabilitado */
    disabled?: boolean;
    /** Propiedad que sirve para complementar el nombre del data-testid, aporta un identificador único del elemento html en toda aplicación. Es útil para realizar pruebas unitarias y de integración. */
    instaceDataTestId?: string;
    /** Propiedad que define el data-testid del botón. Si no se proporciona, se usa 'IconButtonRoot' por defecto. */
    dataTestId?: string;
    /** Propiedad que sirve para cambiar al modo seleccionado */
    selected?: boolean;
    /** Propiedades para el componente badge */
    badgeProps?: BadgeProps;
}
/** Tipo `IconButtonOwnerState` que define los valores que tendrá el ownerState */
export type IconButtonOwnerState = Pick<IconButtonProps, 'size' | 'variant' | 'selected' | 'color'> & {
    disabled?: boolean;
    isSkeleton: boolean;
};
/** Tipo `IconButtonSlotsType` que tiene los slots de `IconButtonSlots` */
export type IconButtonSlotsType = keyof typeof IconButtonSlots;
/** Tipo `IconButtonStyles` que tiene un overrides de los estilos del tema */
export type IconButtonStyles = M4LOverridesStyleRules<IconButtonSlotsType, typeof ICON_BUTTON_KEY_COMPONENT, Theme>;
//# sourceMappingURL=types.d.ts.map