import * as React from 'react';
import type { FocusableProps, PressEvents } from '@react-types/shared';
import { CSS } from '@project44-manifest/react-styles';
import type { ForwardRefComponent } from '@project44-manifest/react-types';
declare type ButtonSize = 'medium' | 'small';
declare type ButtonVariant = 'brand' | 'danger' | 'primary' | 'secondary' | 'tertiary';
interface ButtonProps extends PressEvents, FocusableProps {
    /** Whether the element should receive focus on render. */
    autoFocus?: boolean;
    /** Theme aware style object */
    css?: CSS;
    /** Icon added after the button text. */
    endIcon?: React.ReactElement;
    /** A URL to link to if as="a". */
    href?: string;
    /**
     * Whether to exclude the element from the sequential tab order. If true,
     * the element will not be focusable via the keyboard by tabbing. This should
     * be avoided except in rare scenarios where an alternative means of accessing
     * the element or its functionality via the keyboard is available.
     */
    excludeFromTabOrder?: boolean;
    /** Whether the button is disabled. */
    isDisabled?: boolean;
    /** The relationship between the linked resource and the current page. See [MDN](https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/rel). */
    rel?: string;
    /**
     * The size of the button.
     *
     * @default 'medium'
     */
    size?: ButtonSize;
    /** Icon added before the button text. */
    startIcon?: React.ReactElement;
    /** The target window for the link. */
    target?: string;
    /**
     * The behavior of the button when used in an HTML form.
     * @default 'button'
     */
    type?: 'button' | 'reset' | 'submit';
    /**
     * The display variant of the button.
     *
     * @default 'primary'
     */
    variant?: ButtonVariant;
}
declare const Button: ForwardRefComponent<"button", ButtonProps>;
interface ButtonGroupProps {
    /** Theme aware style object */
    css?: CSS;
    /**
     * Whether the buttons in the button group are all disabled.
     *
     * @default false
     */
    isDisabled?: boolean;
    /**
     * Whether the buttons in the button are attached.
     */
    isAttached?: boolean;
    /**
     * The size of the buttons in the group.
     *
     * @default 'medium'
     */
    size?: ButtonSize;
    /**
     * The group variant
     *
     * @default 'primary'
     */
    variant?: ButtonVariant;
}
declare const ButtonGroup: ForwardRefComponent<"div", ButtonGroupProps>;
declare type IconButtonProps = Omit<ButtonProps, 'endIcon' | 'startIcon'>;
declare const IconButton: ForwardRefComponent<"button", IconButtonProps>;
export type { ButtonGroupProps, ButtonProps, IconButtonProps };
export { Button, ButtonGroup, IconButton };
//# sourceMappingURL=button.d.ts.map