import type React from 'react';
export declare type ButtonSizes = 'sm' | 'md' | 'lg';
export declare type ButtonVariant = 'primary' | 'secondary' | 'tertiary' | 'tertiaryContrast' | 'UNSAFE_helixNav';
export declare type SizingObject = {
    [key in ButtonSizes]: number;
};
export interface ButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {
    /**
     * Sets the button to be 100% of the width of its parent
     * @since 10.19.0
     */
    block?: boolean;
    /**
     * string icons have been deprecated, please pass a component from `@procore/core-icons`
     * The icon to display on the left side of the label
     * @since 10.19.0
     */
    icon?: React.ReactNode;
    /**
     * The icon to display on the right side of the label
     * @since 10.19.0
     * @deprecatedSince 12.18.0
     * @deprecated iconRight has been deprecated and will be removed in a future version
     */
    iconRight?: React.ReactNode;
    /**
     * Shows the button spinner
     * @since 10.19.0
     */
    loading?: boolean;
    /**
     * The size of the button
     * @since 10.19.0
     */
    size?: ButtonSizes;
    /**
     * The variant of the button.
     * @ deprecated variant "tertiaryContrast" has been deprecated since 12.18.0
     * and will be removed in a future version
     * @since 10.27.2
     */
    variant?: ButtonVariant;
}
export declare type AsLinkProps = {
    'aria-label'?: string;
    children: React.ReactNode;
};
export interface LinkButtonProps extends React.AnchorHTMLAttributes<HTMLAnchorElement>, Pick<ButtonProps, 'block' | 'disabled' | 'icon' | 'iconRight' | 'size' | 'variant'> {
    /**
     * Render a specific component for the link. This MUST return an anchor tag.
     * The component will receive props like onClick and className that
     * MUST be added to the element.
     *
     * This prop is useful when working with links connected to a router, and
     * a component 'outside of core-react' wants to render the `a` tag.
     *
     * @example
     * const RoutedLink = (p) => <a {...p} href="/test" />
     * <LinkButton as={RoutedLink}>
     * @since 12.20.0
     */
    as?: React.FunctionComponent<AsLinkProps> | React.ForwardRefExoticComponent<AsLinkProps>;
    /**
     * Use role link when the link has destination. Use role button when it is used for POST.
     * @default 'button'
     */
    role?: 'link' | 'button';
}
