import { ComponentPropsWithoutRef } from 'react';
import { AiMarkWithTooltipOrPopoverConfig } from '../../types/ai-marks';
import { LayoutUtilProps, Size } from '../../types';
/**
 * Props for headline text variants
 * @extends ComponentPropsWithoutRef<T>
 * @extends LayoutUtilProps
 */
export type HeadlineProps<T extends "h1" | "h2" | "h3" | "h4" | "h5" | "h6"> = ComponentPropsWithoutRef<T> & LayoutUtilProps & {
    /**
     * Headline text variant
     */
    variant: "headline";
    /**
     * Size of the headline text
     * @default medium
     */
    size?: Extract<Size, "small" | "medium" | "large" | "xlarge">;
    /**
     * Set the wrapping element's tagname
     */
    el: T;
    /**
     * When set, renders the AI mark inline after the headline text.
     * Use `true` for the sparkle only, or pass tooltip/popover configuration.
     */
    aiMark?: boolean | AiMarkWithTooltipOrPopoverConfig;
    inline?: never;
    subdued?: never;
};
/**
 * Props for eyebrow text variant
 * @extends ComponentPropsWithoutRef<"span">
 * @extends LayoutUtilProps
 */
export type EyebrowProps = ComponentPropsWithoutRef<"span"> & LayoutUtilProps & {
    /**
     * Eyebrow text variant
     */
    variant: "eyebrow";
    /**
     * Size of the eyebrow text
     * @default medium
     */
    size?: Extract<Size, "small" | "medium" | "large">;
    el?: never;
    inline?: never;
    subdued?: never;
    aiMark?: never;
};
/**
 * Props for body text variant
 * @extends ComponentPropsWithoutRef<"p">
 * @extends LayoutUtilProps
 */
export type BodyTextProps = ComponentPropsWithoutRef<"p"> & LayoutUtilProps & {
    /**
     * Body text variant
     * @default body
     */
    variant?: "body";
    /**
     * Size of the body text
     * @default medium
     */
    size?: Extract<Size, "small" | "medium" | "large" | "xlarge">;
    /**
     * Deemphasized text styling
     * @default false
     */
    subdued?: boolean;
    inline?: never;
    el?: never;
    aiMark?: never;
};
/**
 * Props for inline body text variant
 * @extends ComponentPropsWithoutRef<"span">
 * @extends LayoutUtilProps
 */
export type BodyTextInlineProps = ComponentPropsWithoutRef<"span"> & LayoutUtilProps & {
    /**
     * Body text variant
     */
    variant?: "body";
    /**
     * Size of the body text
     * @default medium
     */
    size?: Extract<Size, "small" | "medium" | "large" | "xlarge">;
    /**
     * Inline flag used for nesting BodyText inside BodyText
     */
    inline: true;
    /**
     * Deemphasized text styling
     * @default false
     */
    subdued?: boolean;
    el?: never;
    aiMark?: never;
};
