import { VueNode as VueNode$1 } from "../_util/type.js";
import { SemanticClassNamesType, SemanticStylesType } from "../_util/hooks/useMergeSemantic.js";
import "../_util/hooks/index.js";
import { PresetColorType, PresetStatusColorType } from "../_util/colors.js";
import { ClosableType } from "../_util/hooks/useClosable.js";
import CheckableTag, { CheckableTagProps } from "./CheckableTag.js";
import CheckableTagGroup from "./CheckableTagGroup.js";
import { ComponentBaseProps } from "../config-provider/context.js";
import * as vue362 from "vue";
import { CSSProperties, SlotsType } from "vue";
import { LiteralUnion } from "@v-c/util/dist/type";

//#region src/tag/index.d.ts
type TagSemanticName = keyof TagSemanticClassNames & keyof TagSemanticStyles;
interface TagSemanticClassNames {
  root?: string;
  icon?: string;
  content?: string;
  close?: string;
}
interface TagSemanticStyles {
  root?: CSSProperties;
  icon?: CSSProperties;
  content?: CSSProperties;
  close?: CSSProperties;
}
type TagClassNamesType = SemanticClassNamesType<TagProps, TagSemanticClassNames>;
type TagStylesType = SemanticStylesType<TagProps, TagSemanticStyles>;
interface TagProps extends ComponentBaseProps, TagEmitsProps {
  color?: LiteralUnion<PresetColorType | PresetStatusColorType>;
  /** Advised to use closeIcon instead. */
  closable?: ClosableType;
  closeIcon?: VueNode$1;
  icon?: VueNode$1;
  onClick?: (e: MouseEvent) => void;
  href?: string;
  target?: string;
  disabled?: boolean;
  bordered?: boolean;
  styles?: TagStylesType;
  classes?: TagClassNamesType;
  variant?: 'filled' | 'solid' | 'outlined';
}
interface TagSlots {
  default?: () => any;
  icon?: () => any;
  closeIcon?: () => any;
}
interface TagEmits {
  close: (ev: MouseEvent) => void;
}
interface TagEmitsProps {
  onClose?: TagEmits['close'];
}
declare const InternalTag: vue362.DefineSetupFnComponent<TagProps, TagEmits, SlotsType<TagSlots>, TagProps, vue362.PublicProps>;
declare const Tag: typeof InternalTag & {
  CheckableTag: typeof CheckableTag;
};
//#endregion
export { CheckableTag, CheckableTagGroup, type CheckableTagProps, TagClassNamesType, TagEmits, TagEmitsProps, TagProps, TagSemanticClassNames, TagSemanticName, TagSemanticStyles, TagSlots, TagStylesType, Tag as default };