import React, { MutableRefObject } from 'react';
export declare type ButtonComponentType = React.ElementType<any> | React.ComponentType<any>;
export declare type ButtonSize = 'small' | 'big';
export declare type ButtonVariation = 'solid' | 'ghost';
export declare type ButtonRef = MutableRefObject<any> | ((...args: any[]) => any);
declare type CommonButtonProps = {
    /**
     * Analytics events tracking is enabled by default. Set this value to `false` to
     * disable tracking for this component instance.
     */
    analytics?: boolean;
    /**
     * An override for the dynamic content sent to analytics services. By default this content comes from the heading.
     *
     * In cases where this component’s heading may contain **sensitive information**, use this prop to override what is sent to analytics.
     */
    analyticsLabelOverride?: string;
    /**
     * If needed for analytics, pass heading text of parent component of button.
     */
    analyticsParentHeading?: string;
    /**
     * If needed for analytics, pass type of parent component of button.
     */
    analyticsParentType?: string;
    /**
     * Label text or HTML
     */
    children: string | React.ReactNode;
    /**
     * Additional classes to be added to the root button element.
     * Useful for adding utility classes.
     */
    className?: string;
    /**
     * @hide-prop [Deprecated] Support for rendering custom components will be removed
     * in the next major version. If you need to use React components like react-router
     * `Link`, try wrapping this component instead.
     */
    component?: ButtonComponentType;
    disabled?: boolean;
    /**
     * When provided the root component will render as an `<a>` element
     * rather than `button`.
     */
    href?: string;
    /**
     * Access a reference to the `button` or `a` element
     */
    inputRef?: ButtonRef;
    /**
     * Applies the alternate color to a Button. By default, Button
     * uses the `main` color.
     */
    isAlternate?: boolean;
    /**
     * Returns the [`SyntheticEvent`](https://facebook.github.io/react/docs/events.html).
     * Not called when the button is disabled.
     */
    onClick?: (...args: any[]) => any;
    /**
     * Defines a color palette best used when Button is placed on a dark
     * background-color. By default, Button uses a light color palette.
     */
    onDark?: boolean;
    size?: ButtonSize;
    /**
     * Button [`type`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/button#attr-type) attribute
     */
    type?: React.ComponentProps<'button'>['type'];
    /**
     * A string corresponding to Button variation classes.
     */
    variation?: ButtonVariation;
};
declare type OtherProps = Omit<React.ComponentPropsWithRef<'button'> & React.ComponentPropsWithRef<'a'>, keyof CommonButtonProps>;
export declare type ButtonProps = CommonButtonProps & OtherProps;
export declare const Button: ({ analytics, analyticsLabelOverride, analyticsParentHeading, analyticsParentType, children, className, component, disabled, href, inputRef, isAlternate, onClick, onDark, size, variation, type, ...otherProps }: ButtonProps) => JSX.Element;
export default Button;
