export declare type ButtonOrLinkProps = {
    /** The URL the component should link to. When set, the component renders an `a` element instead of a `button`. */
    href?: string;
    /** The link's target, if `href` is set. */
    target?: string;
    /** The button's type, if `href` is not set. One of `button` or `submit`. Defaults to `button`. Set to `submit` if the button is inside a `form` and clicking it or pressing Enter while an input is focused should fire the form's `submit` event. */
    type?: 'button' | 'submit';
    /** Whether the button/link should be disabled. Defaults to `false`. */
    disabled?: boolean;
    /** Whether the button/link should be selected/pressed (`true`), explicitly marked as not selected/pressed (`false`), or neither (`undefined`). Defaults to `undefined`. */
    selected?: boolean;
};
declare type ButtonOrLinkArgs = {
    href: string | undefined;
    target: string | undefined;
    type: 'button' | 'submit' | undefined;
    disabled: boolean | undefined;
    selected?: boolean | undefined;
    role?: 'button' | 'option' | 'tab' | 'menuitem';
};
declare type ButtonOrLinkReturnValue = {
    ButtonOrLink: 'button';
    buttonOrLinkProps: {
        role?: never;
        href?: never;
        target?: never;
        type: 'button' | 'submit';
        disabled: boolean;
        'aria-pressed': 'true' | 'false' | undefined;
    };
} | {
    ButtonOrLink: 'button';
    buttonOrLinkProps: {
        role: 'option' | 'tab';
        href?: never;
        target?: never;
        type: 'button' | 'submit';
        disabled: boolean;
        'aria-selected': 'true' | 'false';
    };
} | {
    ButtonOrLink: 'button';
    buttonOrLinkProps: {
        role: 'menuitem';
        href?: never;
        target?: never;
        type: 'button' | 'submit';
        disabled: boolean;
    };
} | {
    ButtonOrLink: 'a';
    buttonOrLinkProps: {
        href: string | undefined;
        target: string | undefined;
        type?: never;
        disabled?: never;
        'aria-current': 'true' | 'false' | undefined;
    };
};
/**
 * Accepts common props for a component that can either be a button or a link, and returns an object containing...
 * - `ButtonOrLink`, an element that is either `button` or `a` depending on the presence of an `href`.
 * - `buttonOrLinkProps`, a bag of props that should go on that element.
 */
export declare const buttonOrLink: ({ href, target, type, disabled, selected, role, }: ButtonOrLinkArgs) => ButtonOrLinkReturnValue;
export {};
