import { HTMLAttributes, ReactNode } from 'react';
import { FlexProps } from '../../atoms';
import { ButtonOrLinkProps } from '../../utils';
export declare type Variant = 'primary' | 'secondary' | 'tertiary';
export declare type Size = 'small' | 'medium';
export declare const DEFAULT_VARIANT: Variant;
export declare const DEFAULT_SIZE: Size;
export declare type NewGDSButtonElement = HTMLButtonElement | HTMLAnchorElement | HTMLDivElement;
export declare type NewGDSButtonProps = {
    /** Variant of the button. One of `primary`, `secondary`, or `tertiary`. Defaults to `primary`, or whatever is set on the parent `NewGDSButton.Group`. */
    variant?: Variant;
    /** Size of the button. One of `small` or `medium`. Defaults to `medium`, or whatever is set on the parent `NewGDSButton.Group`. */
    size?: Size;
    /** Shape of the button. One of `default` or `round`. Defaults to `default`. */
    shape?: 'default' | 'round';
    /** Horizontal alignment of the `children` (text and/or icon(s)). Defaults to `center`. */
    justify?: FlexProps['justify'];
    /** Status of the operation associated with the button. One of `success`, `success-final`, `error`, `loading`, `loading-progress`, or `null`. Defaults to `null`. If set to a value other than `null`, the button is no longer clickable and its label is overridden by an icon representing the status, and optionally a `statusMessage`. */
    status?: 'success' | 'success-final' | 'error' | 'loading' | 'loading-progress' | null;
    /** Message to describe the current status. Only takes effect is `status` is not `null`. */
    statusMessage?: ReactNode;
    /** Loading progress between 0 and 1. Only takes effect if `status` is `loading-progress`. Defaults to `0`. */
    loadingProgress?: number;
} & ButtonOrLinkProps & HTMLAttributes<NewGDSButtonElement>;
export declare const NewGDSButtonGroupContext: import("react").Context<{
    variant: Variant;
    size: Size;
    disabled: boolean;
}>;
