import { Theme } from '@mui/material';
import { ToggleableProps } from '../../../../hocs/withToggle/types';
import { ButtonProps } from '../Button';
import { TOGGLE_BUTTON_KEY_COMPONENT } from './constants';
import { OverridesStyleRules } from '@mui/material/styles/overrides';
import { ToggleButtonSlots } from './slots';
/**
 * ToggleButtonSlotsType
 * Represents the available slot types for the ToggleButton component.
 */
export type ToggleButtonSlotsType = keyof typeof ToggleButtonSlots;
/**
 * ToggleButtonProps
 * The properties accepted by the ToggleButton component.
 * Extends the original ButtonProps and adds toggle-specific functionality.
 * [dataTestId] - A unique identifier for testing purposes.
 */
export interface ToggleButtonProps extends Omit<ButtonProps, 'onClick' | 'onToggle'>, ToggleableProps {
    /**
     * A unique identifier for testing purposes.
     */
    dataTestId?: string;
    /**
     * The variant of the ToggleButton, either 'outlined' or 'text'.
     */
    variant?: 'outlined' | 'text' | 'contained';
}
/**
 * ToggleButtonOwnerState
 * Represents the internal state of the ToggleButton component.
 * [isToggled] - Indicates whether the button is toggled on or off.
 */
export interface ToggleButtonOwnerState extends Record<string, unknown> {
    isToggled?: boolean;
}
/**
 * ToggleButtonStyles
 * Represents the style rules for the ToggleButton component, allowing for customization.
 */
export type ToggleButtonStyles = Partial<OverridesStyleRules<ToggleButtonSlotsType, typeof TOGGLE_BUTTON_KEY_COMPONENT, Theme> | undefined> | undefined;
//# sourceMappingURL=types.d.ts.map