import { type AnchorHTMLAttributes, type ButtonHTMLAttributes, type ElementType, type ForwardedRef, type PropsWithChildren, type ReactNode } from 'react';
import type { Variant } from './types';
type AbstractProps = PropsWithChildren<{
size: 'M' | 'S';
wide: boolean;
variant: Variant;
$loading?: boolean;
className: string;
elementAs?: ElementType;
prefix?: ReactNode;
suffix?: ReactNode;
}>;
type AbstractButtonProps = AbstractProps & {
isAnchor?: never;
buttonRef?: ForwardedRef;
};
type ButtonProps = AbstractButtonProps & Omit, keyof AbstractButtonProps>;
type AbstractAnchorProps = AbstractProps & {
isAnchor: true;
anchorRef?: ForwardedRef;
};
type AnchorProps = AbstractAnchorProps & Omit, keyof AbstractAnchorProps>;
export type Props = ButtonProps | AnchorProps;
type FilteredProps = 'size' | 'wide' | 'variant' | 'className' | 'prefix' | 'suffix' | 'children' | 'isAnchor';
export type FilteredButtonProps = Omit;
export type FilteredAnchorProps = Omit;
export declare const useButtonWrapper: ({ size, wide, variant, $loading, className, prefix, suffix, children, isAnchor, ...rest }: Props) => {
filteredProps: FilteredAnchorProps | FilteredButtonProps;
classNames: {
wrapper: string;
loader: string;
};
children: import("react/jsx-runtime").JSX.Element;
};
export {};