import type { ComponentProps, ElementType } from 'react';
import { type ButtonOrLinkRenderState, type InternalButtonOrLinkProps, type OmitInternalButtonOrLinkProps } from './ButtonOrLink.tsx';
import type { RenderFn } from './Render.tsx';
type OtherElementRenderState = {
    category: 'other';
    role: ButtonOrLinkRenderState['role'];
    disabled: false;
    type?: undefined;
    checked?: undefined;
    href?: undefined;
    target?: undefined;
    Element: ButtonOrLinkRenderState['Element'];
    elementProps: ButtonOrLinkRenderState['elementProps'];
};
type MaybeButtonOrLinkRenderState = ButtonOrLinkRenderState | OtherElementRenderState;
export declare namespace MaybeButtonOrLinkProps {
    type DisableableProps = InternalButtonOrLinkProps.DisableableProps;
    type ButtonProps = OmitInternalButtonOrLinkProps<InternalButtonOrLinkProps.ButtonProps> & {
        onClick: NonNullable<InternalButtonOrLinkProps.ButtonProps['onClick']>;
        as?: undefined;
        render?: RenderFn<MaybeButtonOrLinkRenderState> | undefined;
    };
    type ToggleButtonProps = OmitInternalButtonOrLinkProps<InternalButtonOrLinkProps.ToggleButtonProps> & {
        onClick: NonNullable<InternalButtonOrLinkProps.ToggleButtonProps['onClick']>;
        as?: undefined;
        render?: RenderFn<MaybeButtonOrLinkRenderState> | undefined;
    };
    type LinkProps = OmitInternalButtonOrLinkProps<InternalButtonOrLinkProps.LinkProps> & {
        as?: undefined;
        render?: RenderFn<MaybeButtonOrLinkRenderState> | undefined;
    };
    type OtherElementProps = OmitInternalButtonOrLinkProps<InternalButtonOrLinkProps.CommonProps> & ComponentProps<'span'> & {
        onClick?: InternalButtonOrLinkProps.ButtonProps['onClick'];
        as?: ElementType | undefined;
        render?: RenderFn<MaybeButtonOrLinkRenderState> | undefined;
        disabled?: undefined;
        type?: undefined;
        checked?: undefined;
        href?: undefined;
        target?: undefined;
    };
}
export type MaybeButtonOrLinkProps = MaybeButtonOrLinkProps.ButtonProps | MaybeButtonOrLinkProps.ToggleButtonProps | MaybeButtonOrLinkProps.LinkProps | MaybeButtonOrLinkProps.OtherElementProps;
type InternalMaybeButtonOrLinkProps = MaybeButtonOrLinkProps & InternalButtonOrLinkProps.DisableableProps & Omit<InternalButtonOrLinkProps.CommonProps, 'render'>;
/**
 * Renders a `ButtonOrLink` if one of `href` or `onClick` is passed along with no `as`. Otherwise,
 * renders the element type passed in `as` (defaulting to `span`).
 */
export declare function MaybeButtonOrLink(props: InternalMaybeButtonOrLinkProps): import("react/jsx-runtime").JSX.Element;
export {};
//# sourceMappingURL=MaybeButtonOrLink.d.ts.map