import React from 'react';
import { DefaultProps, MantineSize, MantineNumberSize } from '../../theme';
import { ComponentPassThrough } from '../../types';
import useStyles from './Button.styles';
export { UnstyledButton } from './UnstyledButton/UnstyledButton';
export declare const BUTTON_SIZES: Record<MantineSize, number>;
export declare const BUTTON_VARIANTS: string[];
export declare type ButtonVariant = 'link' | 'filled' | 'outline' | 'light';
export declare type ButtonStylesNames = Exclude<keyof ReturnType<typeof useStyles>, ButtonVariant>;
interface ButtonBaseProps extends DefaultProps<ButtonStylesNames> {
    /** Predefined button size */
    size?: MantineSize;
    /** Button type attribute */
    type?: 'submit' | 'button' | 'reset';
    /** Button color from theme */
    color?: string;
    /** Adds icon before button label  */
    leftIcon?: React.ReactNode;
    /** Adds icon after button label  */
    rightIcon?: React.ReactNode;
    /** Sets button width to 100% of parent element */
    fullWidth?: boolean;
    /** Button border-radius from theme or number to set border-radius in px */
    radius?: MantineNumberSize;
    /** Controls button appearance */
    variant?: 'link' | 'filled' | 'outline' | 'light';
    /** Set text-transform to uppercase */
    uppercase?: boolean;
}
export declare function Button<T extends React.ElementType = 'button', U extends HTMLElement = HTMLButtonElement>({ className, style, size, color, type, disabled, children, leftIcon, rightIcon, fullWidth, variant, radius, component: Element, elementRef, themeOverride, uppercase, classNames, styles, ...others }: ComponentPassThrough<T, ButtonBaseProps> & {
    /** Get root element ref */
    elementRef?: React.ForwardedRef<U>;
}): JSX.Element;
export declare namespace Button {
    var displayName: string;
}
export declare type ButtonProps = React.ComponentProps<typeof Button>;
//# sourceMappingURL=Button.d.ts.map