/// <reference types="react" />
import type { AnchorAttributes, ButtonAttributes } from '../_utils/types';
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 ButtonAttributes {
    /**
     * 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
     */
    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
     * @since 10.27.2
     */
    variant?: ButtonVariant;
}
export interface LinkButtonProps extends AnchorAttributes, Pick<ButtonProps, 'block' | 'disabled' | 'icon' | 'iconRight' | 'size' | 'variant'> {
    /**
     * Use role link when the link has destination. Use role button when it is used for POST.
     * @default 'button'
     */
    role?: 'link' | 'button';
}
