import React, { RefObject } from 'react'; declare type ButtonType = 'primary' | 'secondary' | 'success' | 'warning' | 'alert' | 'neutral' | 'highlight' | 'light' | 'dark' | 'primary-borderless' | 'secondary-borderless' | 'success-borderless' | 'warning-borderless' | 'alert-borderless' | 'neutral-borderless' | 'highlight-borderless' | 'light-borderless' | 'dark-borderless' | 'primary-hollow' | 'secondary-hollow' | 'success-hollow' | 'warning-hollow' | 'alert-hollow' | 'neutral-hollow' | 'highlight-hollow' | 'light-hollow' | 'dark-hollow' | 'add' | 'add-subtle' | 'delete-subtle' | 'delete' | 'resolve' | 'cancel' | 'menu-action' | 'back'; declare type ButtonSize = 'small' | 'medium' | 'large'; interface IBaseButtonProps { /** Unique id of the button */ id?: string; /** Ref to the base element of the button */ innerRef?: RefObject; /** Size of the button */ size?: ButtonSize; /** If the button should be 100% width */ fullWidth?: boolean; /** * Adds a 1rem bottom margin and slight side margins to the button. * For backwards compatibility only; please use layouts instead to achieve this effect if needed. * @deprecated */ hasLegacyMargins?: boolean; /** What type of button to display */ type?: ButtonType; /** Alignment of the button icon */ iconAlignment?: 'left' | 'right' | 'center'; /** Icon component passed to Button */ icon?: JSX.Element; /** Any extra classes */ className?: string; /** Disable the button or not */ disabled?: boolean; /** onClick event */ onClick?: (event: React.MouseEvent) => void; /** The data-cy */ componentContext?: string; /** If true, shows a spinner instead of the regular button content */ showSpinner?: boolean; } declare class BaseButton extends React.PureComponent> { static defaultProps: Partial; get buttonClass(): string; get buttonContent(): JSX.Element; } export { IBaseButtonProps, BaseButton };