import React, { ReactNode } from 'react';
import { GenericComponent } from '../../@types/types';
import { TINTS, COLORS, SIZES } from '../../constants';
import { BoxProps } from '../box/Box';
export interface IconButtonProps extends Omit<BoxProps, 'ref' | 'children' | 'className' | 'element'> {
    /** The content to display inside the button. */
    children?: ReactNode;
    /** A class name for the button to give custom styles. */
    className?: string;
    /** If true, component will be disabled. */
    disabled?: boolean;
    /** A custom element to be rendered */
    element?: React.ElementType;
    /** The icon displayed inside the button. */
    icon?: ReactNode;
    /** Size of the button. */
    size?: Exclude<typeof SIZES[number], 'tiny' | 'fullscreen' | 'smallest' | 'hero'>;
    /** The color which the icon should have */
    color?: typeof COLORS[number] | 'white';
    /** The tint which the icon should have */
    tint?: typeof TINTS[number];
    /** If true, component will be shown in a selected state */
    selected?: boolean;
    /** Type of the button element. */
    type?: string;
    /** Callback function that is fired when the mouse button is released. */
    onMouseUp?: (e: React.MouseEvent) => void;
    /** Callback function that is fired when mouse leaves the component. */
    onMouseLeave?: (e: React.MouseEvent) => void;
    /** If true, component will show a loading spinner instead of icon or children. */
    processing?: boolean;
}
declare const IconButton: GenericComponent<IconButtonProps>;
export default IconButton;
