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

//#region src/badge/Ribbon.d.ts
type RibbonPlacement = 'start' | 'end';
type RibbonSemanticName = keyof RibbonSemanticClassNames & keyof RibbonSemanticStyles;
interface RibbonSemanticClassNames {
  root?: string;
  content?: string;
  indicator?: string;
}
interface RibbonSemanticStyles {
  root?: CSSProperties;
  content?: CSSProperties;
  indicator?: CSSProperties;
}
type RibbonClassNamesType = SemanticClassNamesType<RibbonProps, RibbonSemanticClassNames>;
type RibbonStylesType = SemanticStylesType<RibbonProps, RibbonSemanticStyles>;
interface RibbonProps extends ComponentBaseProps {
  text?: VueNode$1;
  color?: LiteralUnion<PresetColorType>;
  placement?: RibbonPlacement;
  classes?: RibbonClassNamesType;
  styles?: RibbonStylesType;
}
interface RibbonSlots {
  default?: () => any;
  text?: () => any;
}
declare const _default: vue808.DefineSetupFnComponent<RibbonProps, EmptyEmit, SlotsType<RibbonSlots>, RibbonProps, vue808.PublicProps>;
//#endregion
export { RibbonClassNamesType, RibbonProps, RibbonSemanticClassNames, RibbonSemanticName, RibbonSemanticStyles, RibbonSlots, RibbonStylesType, _default as default };