import { ButtonHTMLAttributes, PropsWithChildren, Ref } from 'react';
import { TagStylesProps } from './Tag.styles';
interface BaseTagProps extends PropsWithChildren<ButtonHTMLAttributes<HTMLSpanElement>>, TagStylesProps {
    /**
     * Change the component to the HTML tag or custom component of the only child.
     */
    asChild?: boolean;
}
interface FilteredDesignIntent<Design extends TagProps['design'], K extends TagStylesProps['intent'] | never = never> {
    design?: Design;
    intent?: Exclude<TagStylesProps['intent'], K>;
    ref?: Ref<HTMLButtonElement>;
}
export type ValidTagDesignIntent = FilteredDesignIntent<'tinted', 'surface'> | FilteredDesignIntent<'outlined', 'surface'> | FilteredDesignIntent<'filled'>;
export type TagProps = BaseTagProps & ValidTagDesignIntent;
export declare const Tag: ({ design, intent, size, shape, asChild, className, ref, ...others }: TagProps) => import("react/jsx-runtime").JSX.Element;
export {};
