import { ButtonProps as MUIButtonProps, PaletteColor, Theme } from '@mui/material';
import { OverridesStyleRules } from '@mui/material/styles/overrides';
import { BUTTON_KEY_COMPONENT } from './constants';
import { ButtonSlots } from './slots/ButtonEnum';
import { ComponentPalletColor, Sizes } from '@m4l/styles';
import { ReactNode } from 'react';
/**
 * [ButtonVariants] - Defines the possible variants for the `Button` component.
 */
export type ButtonVariants = 'contained' | 'outlined' | 'text';
export interface ButtonProps extends Omit<MUIButtonProps, 'size' | 'variant' | 'color'> {
    startIcon?: ReactNode;
    endIcon?: ReactNode;
    size?: Extract<Sizes, 'small' | 'medium'>;
    disabled?: boolean;
    label: string;
    variant?: ButtonVariants;
    color?: ComponentPalletColor;
    skeletonWidth?: string | number;
}
/**
 * Owner state of the `Button` used to define internal style and behavior properties.
 */
export interface ButtonOwnerState extends Pick<ButtonProps, 'size' | 'variant' | 'color' | 'disabled' | 'fullWidth'> {
    disabled?: boolean;
    paletteColor: PaletteColor;
}
/**
 * Defines the types of Slots available for the `Button`.
 */
export type ButtonSlotsType = keyof typeof ButtonSlots;
/**
 * Styles applicable to the `Button` using themes and custom slots.
 */
export type ButtonStyles = OverridesStyleRules<ButtonSlotsType, typeof BUTTON_KEY_COMPONENT, Theme>;
//# sourceMappingURL=types.d.ts.map