import { ReactNode } from 'react';
import { GenericComponent } from '../../@types/types';
import { COLORS, SIZES } from '../../constants';
import { BoxProps } from '../box/Box';
export declare enum BUTTON_LEVELS {
    outline = "outline",
    primary = "primary",
    secondary = "secondary",
    destructive = "destructive",
    link = "link",
    timer = "timer"
}
export interface ButtonProps extends Omit<BoxProps, 'size'> {
    /** The content to display inside the button. */
    children?: ReactNode;
    /** A class name for the button to give custom styles. */
    className?: string;
    /** The color which the button should have when 'level' is set to 'outline' */
    color?: typeof COLORS[number] | 'white';
    /** A custom element to be rendered */
    element?: any;
    /** If true, component will be disabled. */
    disabled?: boolean;
    /** If true, component will be shown in an active state */
    active?: boolean;
    /** If true, component will take the full width available. */
    fullWidth?: boolean;
    /** The icon displayed inside the button. */
    icon?: ReactNode;
    /** The position of the icon inside the button. */
    iconPlacement?: 'left' | 'right';
    /** The textual label displayed inside the button. */
    label?: string;
    /** Determines which kind of button to be rendered. */
    level?: `${BUTTON_LEVELS}`;
    /** If true, component will show a loading spinner instead of label or children. */
    processing?: boolean;
    /** Size of the button. */
    size?: Exclude<typeof SIZES[number], 'fullscreen' | 'smallest' | 'hero'>;
    /** Type of the button element. */
    type?: string;
}
declare const Button: GenericComponent<ButtonProps>;
export default Button;
