import { type ReactNode } from "react"; export type CopyButtonProps = { /** Plain text to copy, or a lazy getter (tables / late DOM). */ text: string | (() => string); /** Accessible name + tooltip while idle. */ label?: string | undefined; className?: string | undefined; /** * `always` — visible control. * `group-hover` — parent must use `group/copy`; fades in on hover/focus-visible. */ reveal?: "always" | "group-hover" | undefined; }; /** * Ghost icon copy control — no chrome box, no "Copy code" label. * Copy → check flash. Hover-reveal via `group/copy` on a parent. * Keep unchanged controls out of parent message rerenders: mounting history * already has to commit each new tooltip, without redoing the retained suffix. */ export declare const CopyButton: import("react").MemoExoticComponent<({ text, label: labelProp, className, reveal, }: CopyButtonProps) => import("react").JSX.Element>; /** Hover-reveal chrome around a message / turn so {@link CopyButton} can fade in. */ export declare function CopyHoverFrame({ children, className, copyText, label, align, trailing, }: { children: ReactNode; className?: string | undefined; copyText: string; label: string; align?: "start" | "end" | undefined; /** Optional footer meta (e.g. sent/finished clock) — immediately after the copy control. */ trailing?: ReactNode | undefined; }): import("react").JSX.Element;